Skip to content

Releases: syncthing/syncthing

v2.0.2

16 Aug 05:32
755daaa
Compare
Choose a tag to compare

Major changes in 2.0

  • Database backend switched from LevelDB to SQLite. There is a migration on
    first launch which can be lengthy for larger setups. The new database is
    easier to understand and maintain and, hopefully, less buggy.

  • The logging format has changed to use structured log entries (a message
    plus several key-value pairs). Additionally, we can now control the log
    level per package, and a new log level WARNING has been inserted between
    INFO and ERROR (which was previously known as WARNING...). The INFO level
    has become more verbose, indicating the sync actions taken by Syncthing. A
    new command line flag --log-level sets the default log level for all
    packages, and the STTRACE environment variable and GUI has been updated
    to set log levels per package. The --verbose and --logflags command
    line options have been removed and will be ignored if given.

  • Deleted items are no longer kept forever in the database, instead they are
    forgotten after fifteen months. If your use case require deletes to take
    effect after more than a fifteen month delay, set the
    --db-delete-retention-interval command line option or corresponding
    environment variable to zero, or a longer time interval of your choosing.

  • Modernised command line options parsing. Old single-dash long options are
    no longer supported, e.g. -home must be given as --home. Some options
    have been renamed, others have become subcommands. All serve options are
    now also accepted as environment variables. See syncthing --help and
    syncthing serve --help for details.

  • Rolling hash detection of shifted data is no longer supported as this
    effectively never helped. Instead, scanning and syncing is faster and more
    efficient without it.

  • A "default folder" is no longer created on first startup.

  • Multiple connections are now used by default between v2 devices. The new
    default value is to use three connections: one for index metadata and two
    for data exchange.

  • The following platforms unfortunately no longer get prebuilt binaries for
    download at syncthing.net and on GitHub, due to complexities related to
    cross compilation with SQLite:

    • dragonfly/amd64
    • illumos/amd64 and solaris/amd64
    • linux/ppc64
    • netbsd/*
    • openbsd/386 and openbsd/arm
    • windows/arm
  • The handling of conflict resolution involving deleted files has changed. A
    delete can now be the winning outcome of conflict resolution, resulting in
    the deleted file being moved to a conflict copy.

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:2.0.2 or ghcr.io/syncthing/syncthing:2.0.2
    ({docker,ghcr}.io/syncthing/syncthing:2 to follow just the major version)

What's Changed

Other

  • build: remove netgo and osusergo build tags (fixes #10251) by @calmh in #10256
  • build: bump required language level to 1.24, compiler to 1.25 by @calmh in #10248
  • build: set netgo & osusergo tags for Linux build by @calmh in #10261

Full Changelog: v2.0.1...v2.0.2

v2.0.1

14 Aug 06:45
7a76685
Compare
Choose a tag to compare

Major changes in 2.0

  • Database backend switched from LevelDB to SQLite. There is a migration on
    first launch which can be lengthy for larger setups. The new database is
    easier to understand and maintain and, hopefully, less buggy.

  • The logging format has changed to use structured log entries (a message
    plus several key-value pairs). Additionally, we can now control the log
    level per package, and a new log level WARNING has been inserted between
    INFO and ERROR (which was previously known as WARNING...). The INFO level
    has become more verbose, indicating the sync actions taken by Syncthing. A
    new command line flag --log-level sets the default log level for all
    packages, and the STTRACE environment variable and GUI has been updated
    to set log levels per package. The --verbose and --logflags command
    line options have been removed and will be ignored if given.

  • Deleted items are no longer kept forever in the database, instead they are
    forgotten after fifteen months. If your use case require deletes to take
    effect after more than a fifteen month delay, set the
    --db-delete-retention-interval command line option or corresponding
    environment variable to zero, or a longer time interval of your choosing.

  • Modernised command line options parsing. Old single-dash long options are
    no longer supported, e.g. -home must be given as --home. Some options
    have been renamed, others have become subcommands. All serve options are
    now also accepted as environment variables. See syncthing --help and
    syncthing serve --help for details.

  • Rolling hash detection of shifted data is no longer supported as this
    effectively never helped. Instead, scanning and syncing is faster and more
    efficient without it.

  • A "default folder" is no longer created on first startup.

  • Multiple connections are now used by default between v2 devices. The new
    default value is to use three connections: one for index metadata and two
    for data exchange.

  • The following platforms unfortunately no longer get prebuilt binaries for
    download at syncthing.net and on GitHub, due to complexities related to
    cross compilation with SQLite:

    • dragonfly/amd64
    • illumos/amd64 and solaris/amd64
    • linux/ppc64
    • netbsd/*
    • openbsd/386 and openbsd/arm
    • windows/arm
  • The handling of conflict resolution involving deleted files has changed. A
    delete can now be the winning outcome of conflict resolution, resulting in
    the deleted file being moved to a conflict copy.

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:2.0.1 or ghcr.io/syncthing/syncthing:2.0.1
    ({docker,ghcr}.io/syncthing/syncthing:2 to follow just the major version)

What's Changed

Fixes

  • fix: allow upgrade without config dir (fixes #10240) by @calmh in #10241
  • fix(all): various typos by @rasa in #10242
  • fix(etc): correct incantation to launch browser in Linux desktop file by @calmh in #10246
  • fix(db): handle path names that include URL special chars (fixes #10245) by @calmh in #10247
  • fix: increase default delete retention to 15 months by @calmh in #10252

Other

  • build(deps): update (most) dependencies by @calmh in #10243

Full Changelog: v2.0.0...v2.0.1

v2.0.0

12 Aug 06:13
5d80333
Compare
Choose a tag to compare

⚠️ First 2.0 release ⚠️

This is the first release of the new 2.0 series. Expect some rough edges and keep a sense of adventure! 🙏

Major changes in 2.0

  • Database backend switched from LevelDB to SQLite. There is a migration on
    first launch which can be lengthy for larger setups. The new database is
    easier to understand and maintain and, hopefully, less buggy.

  • The logging format has changed to use structured log entries (a message
    plus several key-value pairs). Additionally, we can now control the log
    level per package, and a new log level WARNING has been inserted between
    INFO and ERROR (which was previously known as WARNING...). The INFO level
    has become more verbose, indicating the sync actions taken by Syncthing. A
    new command line flag --log-level sets the default log level for all
    packages, and the STTRACE environment variable and GUI has been updated
    to set log levels per package. The --verbose and --logflags command
    line options have been removed and will be ignored if given.

  • Deleted items are no longer kept forever in the database, instead they are
    forgotten after six months. If your use case require deletes to take
    effect after more than a six month delay, set the
    --db-delete-retention-interval command line option or corresponding
    environment variable to zero, or a longer time interval of your choosing.

  • Modernised command line options parsing. Old single-dash long options are
    no longer supported, e.g. -home must be given as --home. Some options
    have been renamed, others have become subcommands. All serve options are
    now also accepted as environment variables. See syncthing --help and
    syncthing serve --help for details.

  • Rolling hash detection of shifted data is no longer supported as this
    effectively never helped. Instead, scanning and syncing is faster and more
    efficient without it.

  • A "default folder" is no longer created on first startup.

  • Multiple connections are now used by default between v2 devices. The new
    default value is to use three connections: one for index metadata and two
    for data exchange.

  • The following platforms unfortunately no longer get prebuilt binaries for
    download at syncthing.net and on GitHub, due to complexities related to
    cross compilation with SQLite:

    • dragonfly/amd64
    • illumos/amd64 and solaris/amd64
    • linux/ppc64
    • netbsd/*
    • openbsd/386 and openbsd/arm
    • windows/arm
  • The handling of conflict resolution involving deleted files has changed. A
    delete can now be the winning outcome of conflict resolution, resulting in
    the deleted file being moved to a conflict copy.

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:2.0.0 or ghcr.io/syncthing/syncthing:2.0.0
    ({docker,ghcr}.io/syncthing/syncthing:2 to follow just the major version)

What's Changed

Fixes

  • fix(db): handle large numbers of blocks in update by @calmh in #10025
  • fix(syncthing): make directory flags global for all commands by @calmh in #10028
  • fix(sqlite): apply options by @pixelspark in #10049
  • fix(db): version vector serialisation :( by @calmh in #10050
  • fix(model): loop-break regression while block copying in puller by @imsodin in #10069
  • fix(model): close fd immediately in copier by @imsodin in #10079
  • fix(model): use same folder first in copier by @imsodin in #10093
  • fix(model): correct bufferpool handling; simplify by @calmh in #10113
  • fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in #10140
  • fix(syncthing): avoid writing panic log to nil fd by @ardevd in #10154
  • fix(fs): check for unsupported error on modern Windows (fixes #10164) by @rasa in #10165
  • fix(gui): don't show dial errors for paused devices (fixes #10166) by @marbens-arch in #10167
  • fix: track invalid files in LocalFlags to fix global count by @imsodin in #10170
  • fix(watchaggregator): properly handle sub-second watch durations (fixes #9927) by @imsodin in #10179
  • fix(db): remove invalid member from FileMetadata by @imsodin in #10180
  • fix(model): avoid flashing "Sync Waiting" unnecessarily by @calmh in #10181
  • fix(protocol): slightly loosen/correct ownership comparison criteria (fixes #9879) by @yparitcher in #10176
  • fix(model): don't clobber local flags when receiving index by @calmh in #10190
  • fix(beacon, osutil, upnp): fix local discovery send and intf detection on Android by @Catfriend1 in #10196
  • fix(pmp, netutil): workaround native code denied to discover gateway ipv4 addr on Android 14+ by @Catfriend1 in #10204
  • fix: allow deleted files to win conflict resolution by @calmh in #10207
  • fix(gui): show revert buttons only when folder is idle (fixes #10191) by @tomasz1986 in #10212
  • fix(gui): fix identicon generation by @aionescu in #10228
  • fix(model): properly set folder state "syncing" when copying data by @calmh in #10227
  • fix(slogutil): quote values with parentheses in them by @calmh in #10229
  • fix(test): remove lib/logger from testmocks target by @rasa in #10231
  • fix: correct logging of our ID after startup & generate by @calmh in #10234

Features

  • feat: add syncthing debug database-statistics command by @calmh in #10117
  • feat(config): enable multiple connections by default by @calmh in #10151
  • feat(config): expose folder and device info as metrics (fixes #9519) by @calmh in #10148
  • feat: use Ed25519 keys for sync connections by @calmh in #10162
  • feat(gui): add option to limit bandwidth in LAN to Settings (ref #10046) by @tomasz1986 in #10182
  • feat(connections, nat): add UDP portmapping/pinhole for QUIC (fixes #7403) by @marbens-arch in #10171
  • feat: add debug commands for folder counts and files by @calmh in #10206
  • feat(ignore): add .stignore escaping on Windows by @rasa in #10205
  • feat: switch logging framework by @calmh in #10220

Other

  • chore: remove abandoned next-gen-gui experiment by @calmh in #10004
  • chore: remove weak hashing which does not pull its weight by @calmh in #10005
  • chore: switch database engine to sqlite (fixes #9954) by @calmh in #9965
  • chore: harmonise command line flags by @calmh in #10007
  • chore(db): increase journal limit to 64MiB by @bt90 in #10022
  • chore: forget deleted files older than six months (fixes #6284) by @calmh in #10023
  • chore(db): use shorter read transactions and periodic checkpoint for smaller WAL by @calmh in #10027
  • chore: configurable delete retention interval by @calmh in #10030
  • chore(db): fix debug logging by @bt90 in #10033
  • chore(db): buffer pulled files for smaller WAL by @calmh in #10036
  • chore(db): use one SQLite database per folder by @calmh in #10042
  • chore(model): delay starting a pull while there are incoming index updates by @calmh in #10041
  • chore(syncthing): remove "default" folder concept by @calmh in #10068
  • chore(syncthing): ensure migrated database is closed before exiting by @xjtdy888 in #10076
  • chore(db, model): simplify per hash DB lookup in copier by @imsodin in #10080
  • chore(model): refactor copier for more flatness by @imsodin in #10094
  • build: upgrade setup-zig action by @calmh in #10134
  • build: properly propagate build tags to Debian build by @calmh in #10144
  • chore(protocol): don't start connection routines a second time by @imsodin in #10146
  • chore(protocol): only allow enc. password changes on cluster config by @imsodin in #10145
  • chore: various linter fixes by @calmh in https:...
Read more

v2.0.0-rc.25

11 Aug 17:52
c74d2a9
Compare
Choose a tag to compare
v2.0.0-rc.25 Pre-release
Pre-release

Major changes in 2.0

  • Database backend switched from LevelDB to SQLite. There is a migration on
    first launch which can be lengthy for larger setups. The new database is
    easier to understand and maintain and, hopefully, less buggy.

  • The logging format has changed to use structured log entries (a message
    plus several key-value pairs). Additionally, we can now control the log
    level per package, and a new log level WARNING has been inserted between
    INFO and ERROR (which was previously known as WARNING...). The INFO level
    has become more verbose, indicating the sync actions taken by Syncthing. A
    new command line flag --log-level sets the default log level for all
    packages, and the STTRACE environment variable and GUI has been updated
    to set log levels per package. The --verbose and --logflags command
    line options have been removed and will be ignored if given.

  • Deleted items are no longer kept forever in the database, instead they are
    forgotten after six months. If your use case require deletes to take
    effect after more than a six month delay, set the
    --db-delete-retention-interval command line option or corresponding
    environment variable to zero, or a longer time interval of your choosing.

  • Modernised command line options parsing. Old single-dash long options are
    no longer supported, e.g. -home must be given as --home. Some options
    have been renamed, others have become subcommands. All serve options are
    now also accepted as environment variables. See syncthing --help and
    syncthing serve --help for details.

  • Rolling hash detection of shifted data is no longer supported as this
    effectively never helped. Instead, scanning and syncing is faster and more
    efficient without it.

  • A "default folder" is no longer created on first startup.

  • Multiple connections are now used by default between v2 devices. The new
    default value is to use three connections: one for index metadata and two
    for data exchange.

  • The following platforms unfortunately no longer get prebuilt binaries for
    download at syncthing.net and on GitHub, due to complexities related to
    cross compilation with SQLite:

    • dragonfly/amd64
    • illumos/amd64 and solaris/amd64
    • linux/ppc64
    • netbsd/*
    • openbsd/386 and openbsd/arm
    • windows/arm
  • The handling of conflict resolution involving deleted files has changed. A
    delete can now be the winning outcome of conflict resolution, resulting in
    the deleted file being moved to a conflict copy.

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:2.0.0-rc.25 or ghcr.io/syncthing/syncthing:2.0.0-rc.25
    ({docker,ghcr}.io/syncthing/syncthing:2 to follow just the major version)

What's Changed

Fixes

  • fix(db): handle large numbers of blocks in update by @calmh in #10025
  • fix(syncthing): make directory flags global for all commands by @calmh in #10028
  • fix(sqlite): apply options by @pixelspark in #10049
  • fix(db): version vector serialisation :( by @calmh in #10050
  • fix(model): loop-break regression while block copying in puller by @imsodin in #10069
  • fix(model): close fd immediately in copier by @imsodin in #10079
  • fix(model): use same folder first in copier by @imsodin in #10093
  • fix(model): correct bufferpool handling; simplify by @calmh in #10113
  • fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in #10140
  • fix(syncthing): avoid writing panic log to nil fd by @ardevd in #10154
  • fix(fs): check for unsupported error on modern Windows (fixes #10164) by @rasa in #10165
  • fix(gui): don't show dial errors for paused devices (fixes #10166) by @marbens-arch in #10167
  • fix: track invalid files in LocalFlags to fix global count by @imsodin in #10170
  • fix(watchaggregator): properly handle sub-second watch durations (fixes #9927) by @imsodin in #10179
  • fix(db): remove invalid member from FileMetadata by @imsodin in #10180
  • fix(model): avoid flashing "Sync Waiting" unnecessarily by @calmh in #10181
  • fix(protocol): slightly loosen/correct ownership comparison criteria (fixes #9879) by @yparitcher in #10176
  • fix(model): don't clobber local flags when receiving index by @calmh in #10190
  • fix(beacon, osutil, upnp): fix local discovery send and intf detection on Android by @Catfriend1 in #10196
  • fix(pmp, netutil): workaround native code denied to discover gateway ipv4 addr on Android 14+ by @Catfriend1 in #10204
  • fix: allow deleted files to win conflict resolution by @calmh in #10207
  • fix(gui): show revert buttons only when folder is idle (fixes #10191) by @tomasz1986 in #10212
  • fix(gui): fix identicon generation by @aionescu in #10228
  • fix(model): properly set folder state "syncing" when copying data by @calmh in #10227
  • fix(slogutil): quote values with parentheses in them by @calmh in #10229
  • fix(test): remove lib/logger from testmocks target by @rasa in #10231
  • fix: correct logging of our ID after startup & generate by @calmh in #10234

Features

  • feat: add syncthing debug database-statistics command by @calmh in #10117
  • feat(config): enable multiple connections by default by @calmh in #10151
  • feat(config): expose folder and device info as metrics (fixes #9519) by @calmh in #10148
  • feat: use Ed25519 keys for sync connections by @calmh in #10162
  • feat(gui): add option to limit bandwidth in LAN to Settings (ref #10046) by @tomasz1986 in #10182
  • feat(connections, nat): add UDP portmapping/pinhole for QUIC (fixes #7403) by @marbens-arch in #10171
  • feat: add debug commands for folder counts and files by @calmh in #10206
  • feat(ignore): add .stignore escaping on Windows by @rasa in #10205
  • feat: switch logging framework by @calmh in #10220

Other

  • chore: remove abandoned next-gen-gui experiment by @calmh in #10004
  • chore: remove weak hashing which does not pull its weight by @calmh in #10005
  • chore: switch database engine to sqlite (fixes #9954) by @calmh in #9965
  • chore: harmonise command line flags by @calmh in #10007
  • chore(db): increase journal limit to 64MiB by @bt90 in #10022
  • chore: forget deleted files older than six months (fixes #6284) by @calmh in #10023
  • chore(db): use shorter read transactions and periodic checkpoint for smaller WAL by @calmh in #10027
  • chore: configurable delete retention interval by @calmh in #10030
  • chore(db): fix debug logging by @bt90 in #10033
  • chore(db): buffer pulled files for smaller WAL by @calmh in #10036
  • chore(db): use one SQLite database per folder by @calmh in #10042
  • chore(model): delay starting a pull while there are incoming index updates by @calmh in #10041
  • chore(syncthing): remove "default" folder concept by @calmh in #10068
  • chore(syncthing): ensure migrated database is closed before exiting by @xjtdy888 in #10076
  • chore(db, model): simplify per hash DB lookup in copier by @imsodin in #10080
  • chore(model): refactor copier for more flatness by @imsodin in #10094
  • build: upgrade setup-zig action by @calmh in #10134
  • build: properly propagate build tags to Debian build by @calmh in #10144
  • chore(protocol): don't start connection routines a second time by @imsodin in #10146
  • chore(protocol): only allow enc. password changes on cluster config by @imsodin in #10145
  • chore: various linter fixes by @calmh in #10157
  • build: streamline gathering of facts, checkouts by @calmh in #10158
  • build: build both Debian armel and armhf (though they are the same for us) by @calmh in h...
Read more

v2.0.0-rc.24

07 Aug 10:52
431da83
Compare
Choose a tag to compare
v2.0.0-rc.24 Pre-release
Pre-release

Major changes in 2.0

  • Database backend switched from LevelDB to SQLite. There is a migration on
    first launch which can be lengthy for larger setups. The new database is
    easier to understand and maintain and, hopefully, less buggy.

  • The logging format has changed to use structured log entries (a message
    plus several key-value pairs). Additionally, we can now control the log
    level per package, and a new log level WARNING has been inserted between
    INFO and ERROR (which was previously known as WARNING...). The INFO level
    has become more verbose, indicating the sync actions taken by Syncthing. A
    new command line flag --log-level sets the default log level for all
    packages, and the STTRACE environment variable and GUI has been updated
    to set log levels per package. The --verbose and --logflags command
    line options have been removed and will be ignored if given.

  • Deleted items are no longer kept forever in the database, instead they are
    forgotten after six months. If your use case require deletes to take
    effect after more than a six month delay, set the
    --db-delete-retention-interval command line option or corresponding
    environment variable to zero, or a longer time interval of your choosing.

  • Modernised command line options parsing. Old single-dash long options are
    no longer supported, e.g. -home must be given as --home. Some options
    have been renamed, others have become subcommands. All serve options are
    now also accepted as environment variables. See syncthing --help and
    syncthing serve --help for details.

  • Rolling hash detection of shifted data is no longer supported as this
    effectively never helped. Instead, scanning and syncing is faster and more
    efficient without it.

  • A "default folder" is no longer created on first startup.

  • Multiple connections are now used by default between v2 devices. The new
    default value is to use three connections: one for index metadata and two
    for data exchange.

  • The following platforms unfortunately no longer get prebuilt binaries for
    download at syncthing.net and on GitHub, due to complexities related to
    cross compilation with SQLite:

    • dragonfly/amd64
    • illumos/amd64 and solaris/amd64
    • linux/ppc64
    • netbsd/*
    • openbsd/386 and openbsd/arm
    • windows/arm
  • The handling of conflict resolution involving deleted files has changed. A
    delete can now be the winning outcome of conflict resolution, resulting in
    the deleted file being moved to a conflict copy.

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:2.0.0-rc.24 or ghcr.io/syncthing/syncthing:2.0.0-rc.24
    ({docker,ghcr}.io/syncthing/syncthing:2 to follow just the major version)

What's Changed

Fixes

  • fix(db): handle large numbers of blocks in update by @calmh in #10025
  • fix(syncthing): make directory flags global for all commands by @calmh in #10028
  • fix(sqlite): apply options by @pixelspark in #10049
  • fix(db): version vector serialisation :( by @calmh in #10050
  • fix(model): loop-break regression while block copying in puller by @imsodin in #10069
  • fix(model): close fd immediately in copier by @imsodin in #10079
  • fix(model): use same folder first in copier by @imsodin in #10093
  • fix(model): correct bufferpool handling; simplify by @calmh in #10113
  • fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in #10140
  • fix(syncthing): avoid writing panic log to nil fd by @ardevd in #10154
  • fix(fs): check for unsupported error on modern Windows (fixes #10164) by @rasa in #10165
  • fix(gui): don't show dial errors for paused devices (fixes #10166) by @marbens-arch in #10167
  • fix: track invalid files in LocalFlags to fix global count by @imsodin in #10170
  • fix(watchaggregator): properly handle sub-second watch durations (fixes #9927) by @imsodin in #10179
  • fix(db): remove invalid member from FileMetadata by @imsodin in #10180
  • fix(model): avoid flashing "Sync Waiting" unnecessarily by @calmh in #10181
  • fix(protocol): slightly loosen/correct ownership comparison criteria (fixes #9879) by @yparitcher in #10176
  • fix(model): don't clobber local flags when receiving index by @calmh in #10190
  • fix(beacon, osutil, upnp): fix local discovery send and intf detection on Android by @Catfriend1 in #10196
  • fix(pmp, netutil): workaround native code denied to discover gateway ipv4 addr on Android 14+ by @Catfriend1 in #10204
  • fix: allow deleted files to win conflict resolution by @calmh in #10207
  • fix(gui): show revert buttons only when folder is idle (fixes #10191) by @tomasz1986 in #10212
  • fix(gui): fix identicon generation by @aionescu in #10228
  • fix(model): properly set folder state "syncing" when copying data by @calmh in #10227
  • fix(slogutil): quote values with parentheses in them by @calmh in #10229

Features

  • feat: add syncthing debug database-statistics command by @calmh in #10117
  • feat(config): enable multiple connections by default by @calmh in #10151
  • feat(config): expose folder and device info as metrics (fixes #9519) by @calmh in #10148
  • feat: use Ed25519 keys for sync connections by @calmh in #10162
  • feat(gui): add option to limit bandwidth in LAN to Settings (ref #10046) by @tomasz1986 in #10182
  • feat(connections, nat): add UDP portmapping/pinhole for QUIC (fixes #7403) by @marbens-arch in #10171
  • feat: add debug commands for folder counts and files by @calmh in #10206
  • feat(ignore): add .stignore escaping on Windows by @rasa in #10205
  • feat: switch logging framework by @calmh in #10220

Other

  • chore: remove abandoned next-gen-gui experiment by @calmh in #10004
  • chore: remove weak hashing which does not pull its weight by @calmh in #10005
  • chore: switch database engine to sqlite (fixes #9954) by @calmh in #9965
  • chore: harmonise command line flags by @calmh in #10007
  • chore(db): increase journal limit to 64MiB by @bt90 in #10022
  • chore: forget deleted files older than six months (fixes #6284) by @calmh in #10023
  • chore(db): use shorter read transactions and periodic checkpoint for smaller WAL by @calmh in #10027
  • chore: configurable delete retention interval by @calmh in #10030
  • chore(db): fix debug logging by @bt90 in #10033
  • chore(db): buffer pulled files for smaller WAL by @calmh in #10036
  • chore(db): use one SQLite database per folder by @calmh in #10042
  • chore(model): delay starting a pull while there are incoming index updates by @calmh in #10041
  • chore(syncthing): remove "default" folder concept by @calmh in #10068
  • chore(syncthing): ensure migrated database is closed before exiting by @xjtdy888 in #10076
  • chore(db, model): simplify per hash DB lookup in copier by @imsodin in #10080
  • chore(model): refactor copier for more flatness by @imsodin in #10094
  • build: upgrade setup-zig action by @calmh in #10134
  • build: properly propagate build tags to Debian build by @calmh in #10144
  • chore(protocol): don't start connection routines a second time by @imsodin in #10146
  • chore(protocol): only allow enc. password changes on cluster config by @imsodin in #10145
  • chore: various linter fixes by @calmh in #10157
  • build: streamline gathering of facts, checkouts by @calmh in #10158
  • build: build both Debian armel and armhf (though they are the same for us) by @calmh in #10159
  • build: explicitly trigger build after pushing release tag by @calmh in #10160
  • chore(syncthing): ensure response body is closed in upgrade re...
Read more

v2.0.0-rc.23

06 Jul 19:16
e8cfc8a
Compare
Choose a tag to compare
v2.0.0-rc.23 Pre-release
Pre-release

Major changes in 2.0

  • Database backend switched from LevelDB to SQLite. There is a migration on
    first launch which can be lengthy for larger setups. The new database is
    easier to understand and maintain and, hopefully, less buggy.

  • Deleted items are no longer kept forever in the database, instead they are
    forgotten after six months. If your use case require deletes to take
    effect after more than a six month delay, set the
    --db-delete-retention-interval command line option or corresponding
    environment variable to zero, or a longer time interval of your choosing.

  • Modernised command line options parsing. Old single-dash long options are
    no longer supported, e.g. -home must be given as --home. Some options
    have been renamed, others have become subcommands. All serve options are
    now also accepted as environment variables. See syncthing --help and
    syncthing serve --help for details.

  • Rolling hash detection of shifted data is no longer supported as this
    effectively never helped. Instead, scanning and syncing is faster and more
    efficient without it.

  • A "default folder" is no longer created on first startup.

  • Multiple connections are now used by default between v2 devices. The new
    default value is to use three connections: one for index metadata and two
    for data exchange.

  • The following platforms unfortunately no longer get prebuilt binaries for
    download at syncthing.net and on GitHub, due to complexities related to
    cross compilation with SQLite:

    • dragonfly/amd64
    • illumos/amd64 and solaris/amd64
    • linux/ppc64
    • netbsd/*
    • openbsd/386 and openbsd/arm
    • windows/arm
  • The handling of conflict resolution involving deleted files has changed. A
    delete can now be the winning outcome of conflict resolution, resulting in
    the deleted file being moved to a conflict copy.

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:2.0.0-rc.23 or ghcr.io/syncthing/syncthing:2.0.0-rc.23
    ({docker,ghcr}.io/syncthing/syncthing:2 to follow just the major version)

What's Changed

Fixes

  • fix(db): handle large numbers of blocks in update by @calmh in #10025
  • fix(syncthing): make directory flags global for all commands by @calmh in #10028
  • fix(sqlite): apply options by @pixelspark in #10049
  • fix(db): version vector serialisation :( by @calmh in #10050
  • fix(model): loop-break regression while block copying in puller by @imsodin in #10069
  • fix(model): close fd immediately in copier by @imsodin in #10079
  • fix(model): use same folder first in copier by @imsodin in #10093
  • fix(model): correct bufferpool handling; simplify by @calmh in #10113
  • fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in #10140
  • fix(syncthing): avoid writing panic log to nil fd by @ardevd in #10154
  • fix(fs): check for unsupported error on modern Windows (fixes #10164) by @rasa in #10165
  • fix(gui): don't show dial errors for paused devices (fixes #10166) by @marbens-arch in #10167
  • fix: track invalid files in LocalFlags to fix global count by @imsodin in #10170
  • fix(watchaggregator): properly handle sub-second watch durations (fixes #9927) by @imsodin in #10179
  • fix(db): remove invalid member from FileMetadata by @imsodin in #10180
  • fix(model): avoid flashing "Sync Waiting" unnecessarily by @calmh in #10181
  • fix(protocol): slightly loosen/correct ownership comparison criteria (fixes #9879) by @yparitcher in #10176
  • fix(model): don't clobber local flags when receiving index by @calmh in #10190
  • fix(beacon, osutil, upnp): fix local discovery send and intf detection on Android by @Catfriend1 in #10196
  • fix(pmp, netutil): workaround native code denied to discover gateway ipv4 addr on Android 14+ by @Catfriend1 in #10204
  • fix: allow deleted files to win conflict resolution by @calmh in #10207

Features

  • feat: add syncthing debug database-statistics command by @calmh in #10117
  • feat(config): enable multiple connections by default by @calmh in #10151
  • feat(config): expose folder and device info as metrics (fixes #9519) by @calmh in #10148
  • feat: use Ed25519 keys for sync connections by @calmh in #10162
  • feat(gui): add option to limit bandwidth in LAN to Settings (ref #10046) by @tomasz1986 in #10182
  • feat(connections, nat): add UDP portmapping/pinhole for QUIC (fixes #7403) by @marbens-arch in #10171
  • feat: add debug commands for folder counts and files by @calmh in #10206

Other

  • chore: remove abandoned next-gen-gui experiment by @calmh in #10004
  • chore: remove weak hashing which does not pull its weight by @calmh in #10005
  • chore: switch database engine to sqlite (fixes #9954) by @calmh in #9965
  • chore: harmonise command line flags by @calmh in #10007
  • chore(db): increase journal limit to 64MiB by @bt90 in #10022
  • chore: forget deleted files older than six months (fixes #6284) by @calmh in #10023
  • chore(db): use shorter read transactions and periodic checkpoint for smaller WAL by @calmh in #10027
  • chore: configurable delete retention interval by @calmh in #10030
  • chore(db): fix debug logging by @bt90 in #10033
  • chore(db): buffer pulled files for smaller WAL by @calmh in #10036
  • chore(db): use one SQLite database per folder by @calmh in #10042
  • chore(model): delay starting a pull while there are incoming index updates by @calmh in #10041
  • chore(syncthing): remove "default" folder concept by @calmh in #10068
  • chore(syncthing): ensure migrated database is closed before exiting by @xjtdy888 in #10076
  • chore(db, model): simplify per hash DB lookup in copier by @imsodin in #10080
  • chore(model): refactor copier for more flatness by @imsodin in #10094
  • build: upgrade setup-zig action by @calmh in #10134
  • build: properly propagate build tags to Debian build by @calmh in #10144
  • chore(protocol): don't start connection routines a second time by @imsodin in #10146
  • chore(protocol): only allow enc. password changes on cluster config by @imsodin in #10145
  • chore: various linter fixes by @calmh in #10157
  • build: streamline gathering of facts, checkouts by @calmh in #10158
  • build: build both Debian armel and armhf (though they are the same for us) by @calmh in #10159
  • build: explicitly trigger build after pushing release tag by @calmh in #10160
  • chore(syncthing): ensure response body is closed in upgrade request by @ardevd in #10169
  • refactor(syncthing): use named constant for SIGHUP by @ardevd in #10168
  • chore(model): remove redundant removal of internal fields in indexsender by @imsodin in #10173
  • chore: add migration for remote invalid local flag by @imsodin in #10174
  • chore(config): increase max concurrent writes default by @imsodin in #10200
  • chore(gui): added spacing between folder name and error message by @ardevd in #10201
  • build: unset build ID in generated binaries by @Catfriend1 in #10203
  • chore(protocol): minor cleanup of ClusterConfig messages; remove DisableTempIndexes option by @calmh in #10202

New Contributors

Full Changelog: v1.29.7...v2.0.0-rc.23

v1.30.0

01 Jul 11:29
0945304
Compare
Choose a tag to compare

Syncthing 2 is coming

Syncthing version 1.x will soon be replaced by Syncthing version 2.x.
Version 2 brings a new database format and various cleanups, but remains
protocol compatible with Syncthing 1.

More detailed information about Syncthing 2 can be found in the release
notes at https://github.com/syncthing/syncthing/releases.

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:1.30.0 or ghcr.io/syncthing/syncthing:1.30.0
    ({docker,ghcr}.io/syncthing/syncthing:1 to follow just the major version)

What's Changed

Fixes

  • fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in #10140
  • fix(syncthing): avoid writing panic log to nil fd by @ardevd in #10154

Features

  • feat(config): expose folder and device info as metrics (fixes #9519) by @calmh in #10148

Other

  • build: properly propagate build tags to Debian build by @calmh in #10144
  • chore(protocol): don't start connection routines a second time by @imsodin in #10146
  • chore(protocol): only allow enc. password changes on cluster config by @imsodin in #10145

Full Changelog: v1.29.7...v1.30.0

v2.0.0-rc.22

20 Jun 07:40
c5a29b5
Compare
Choose a tag to compare
v2.0.0-rc.22 Pre-release
Pre-release

Major changes in 2.0

  • Database backend switched from LevelDB to SQLite. There is a migration on
    first launch which can be lengthy for larger setups. The new database is
    easier to understand and maintain and, hopefully, less buggy.

  • Deleted items are no longer kept forever in the database, instead they are
    forgotten after six months. If your use case require deletes to take
    effect after more than a six month delay, set the
    --db-delete-retention-interval command line option or corresponding
    environment variable to zero, or a longer time interval of your choosing.

  • Modernised command line options parsing. Old single-dash long options are
    no longer supported, e.g. -home must be given as --home. Some options
    have been renamed, others have become subcommands. All serve options are
    now also accepted as environment variables. See syncthing --help and
    syncthing serve --help for details.

  • Rolling hash detection of shifted data is no longer supported as this
    effectively never helped. Instead, scanning and syncing is faster and more
    efficient without it.

  • A "default folder" is no longer created on first startup.

  • Multiple connections are now used by default between v2 devices. The new
    default value is to use three connections: one for index metadata and two
    for data exchange.

  • The following platforms unfortunately no longer get prebuilt binaries for
    download at syncthing.net and on GitHub, due to complexities related to
    cross compilation with SQLite:

    • dragonfly/amd64
    • illumos/amd64 and solaris/amd64
    • linux/ppc64
    • netbsd/*
    • openbsd/386 and openbsd/arm
    • windows/arm

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:2.0.0-rc.22 or ghcr.io/syncthing/syncthing:2.0.0-rc.22
    ({docker,ghcr}.io/syncthing/syncthing:2 to follow just the major version)

What's Changed

Fixes

  • fix(db): handle large numbers of blocks in update by @calmh in #10025
  • fix(syncthing): make directory flags global for all commands by @calmh in #10028
  • fix(sqlite): apply options by @pixelspark in #10049
  • fix(db): version vector serialisation :( by @calmh in #10050
  • fix(model): loop-break regression while block copying in puller by @imsodin in #10069
  • fix(model): close fd immediately in copier by @imsodin in #10079
  • fix(model): use same folder first in copier by @imsodin in #10093
  • fix(model): correct bufferpool handling; simplify by @calmh in #10113
  • fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in #10140
  • fix(syncthing): avoid writing panic log to nil fd by @ardevd in #10154
  • fix(fs): check for unsupported error on modern Windows (fixes #10164) by @rasa in #10165
  • fix(gui): don't show dial errors for paused devices (fixes #10166) by @marbens-arch in #10167
  • fix: track invalid files in LocalFlags to fix global count by @imsodin in #10170
  • fix(watchaggregator): properly handle sub-second watch durations (fixes #9927) by @imsodin in #10179
  • fix(db): remove invalid member from FileMetadata by @imsodin in #10180
  • fix(model): avoid flashing "Sync Waiting" unnecessarily by @calmh in #10181
  • fix(protocol): slightly loosen/correct ownership comparison criteria (fixes #9879) by @yparitcher in #10176
  • fix(model): don't clobber local flags when receiving index by @calmh in #10190

Features

  • feat: add syncthing debug database-statistics command by @calmh in #10117
  • feat(config): enable multiple connections by default by @calmh in #10151
  • feat(config): expose folder and device info as metrics (fixes #9519) by @calmh in #10148
  • feat: use Ed25519 keys for sync connections by @calmh in #10162
  • feat(gui): add option to limit bandwidth in LAN to Settings (ref #10046) by @tomasz1986 in #10182
  • feat(connections, nat): add UDP portmapping/pinhole for QUIC (fixes #7403) by @marbens-arch in #10171

Other

  • chore: remove abandoned next-gen-gui experiment by @calmh in #10004
  • chore: remove weak hashing which does not pull its weight by @calmh in #10005
  • chore: switch database engine to sqlite (fixes #9954) by @calmh in #9965
  • chore: harmonise command line flags by @calmh in #10007
  • chore(db): increase journal limit to 64MiB by @bt90 in #10022
  • chore: forget deleted files older than six months (fixes #6284) by @calmh in #10023
  • chore(db): use shorter read transactions and periodic checkpoint for smaller WAL by @calmh in #10027
  • chore: configurable delete retention interval by @calmh in #10030
  • chore(db): fix debug logging by @bt90 in #10033
  • chore(db): buffer pulled files for smaller WAL by @calmh in #10036
  • chore(db): use one SQLite database per folder by @calmh in #10042
  • chore(model): delay starting a pull while there are incoming index updates by @calmh in #10041
  • chore(syncthing): remove "default" folder concept by @calmh in #10068
  • chore(syncthing): ensure migrated database is closed before exiting by @xjtdy888 in #10076
  • chore(db, model): simplify per hash DB lookup in copier by @imsodin in #10080
  • chore(model): refactor copier for more flatness by @imsodin in #10094
  • build: upgrade setup-zig action by @calmh in #10134
  • build: properly propagate build tags to Debian build by @calmh in #10144
  • chore(protocol): don't start connection routines a second time by @imsodin in #10146
  • chore(protocol): only allow enc. password changes on cluster config by @imsodin in #10145
  • chore: various linter fixes by @calmh in #10157
  • build: streamline gathering of facts, checkouts by @calmh in #10158
  • build: build both Debian armel and armhf (though they are the same for us) by @calmh in #10159
  • build: explicitly trigger build after pushing release tag by @calmh in #10160
  • chore(syncthing): ensure response body is closed in upgrade request by @ardevd in #10169
  • refactor(syncthing): use named constant for SIGHUP by @ardevd in #10168
  • chore(model): remove redundant removal of internal fields in indexsender by @imsodin in #10173
  • chore: add migration for remote invalid local flag by @imsodin in #10174

New Contributors

Full Changelog: v1.29.7...v2.0.0-rc.22

v1.30.0-rc.2

20 Jun 09:34
0945304
Compare
Choose a tag to compare
v1.30.0-rc.2 Pre-release
Pre-release

Syncthing 2 is coming

Syncthing version 1.x will soon be replaced by Syncthing version 2.x.
Version 2 brings a new database format and various cleanups, but remains
protocol compatible with Syncthing 1.

More detailed information about Syncthing 2 can be found in the release
notes at https://github.com/syncthing/syncthing/releases.

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:1.30.0-rc.2 or ghcr.io/syncthing/syncthing:1.30.0-rc.2
    ({docker,ghcr}.io/syncthing/syncthing:1 to follow just the major version)

What's Changed

Fixes

  • fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in #10140
  • fix(syncthing): avoid writing panic log to nil fd by @ardevd in #10154

Features

  • feat(config): expose folder and device info as metrics (fixes #9519) by @calmh in #10148

Other

  • build: properly propagate build tags to Debian build by @calmh in #10144
  • chore(protocol): don't start connection routines a second time by @imsodin in #10146
  • chore(protocol): only allow enc. password changes on cluster config by @imsodin in #10145

Full Changelog: v1.29.7...v1.30.0-rc.2

v2.0.0-rc.21

15 Jun 08:29
1c6f542
Compare
Choose a tag to compare
v2.0.0-rc.21 Pre-release
Pre-release

Major changes in 2.0

  • Database backend switched from LevelDB to SQLite. There is a migration on
    first launch which can be lengthy for larger setups. The new database is
    easier to understand and maintain and, hopefully, less buggy.

  • Deleted items are no longer kept forever in the database, instead they are
    forgotten after six months. If your use case require deletes to take
    effect after more than a six month delay, set the
    --db-delete-retention-interval command line option or corresponding
    environment variable to zero, or a longer time interval of your choosing.

  • Modernised command line options parsing. Old single-dash long options are
    no longer supported, e.g. -home must be given as --home. Some options
    have been renamed, others have become subcommands. All serve options are
    now also accepted as environment variables. See syncthing --help and
    syncthing serve --help for details.

  • Rolling hash detection of shifted data is no longer supported as this
    effectively never helped. Instead, scanning and syncing is faster and more
    efficient without it.

  • A "default folder" is no longer created on first startup.

  • Multiple connections are now used by default between v2 devices. The new
    default value is to use three connections: one for index metadata and two
    for data exchange.

  • The following platforms unfortunately no longer get prebuilt binaries for
    download at syncthing.net and on GitHub, due to complexities related to
    cross compilation with SQLite:

    • dragonfly/amd64
    • illumos/amd64 and solaris/amd64
    • linux/ppc64
    • netbsd/*
    • openbsd/386 and openbsd/arm
    • windows/arm

This release is also available as:

  • APT repository: https://apt.syncthing.net/

  • Docker image: docker.io/syncthing/syncthing:2.0.0-rc.21 or ghcr.io/syncthing/syncthing:2.0.0-rc.21
    ({docker,ghcr}.io/syncthing/syncthing:2 to follow just the major version)

What's Changed

Fixes

  • fix(db): handle large numbers of blocks in update by @calmh in #10025
  • fix(syncthing): make directory flags global for all commands by @calmh in #10028
  • fix(sqlite): apply options by @pixelspark in #10049
  • fix(db): version vector serialisation :( by @calmh in #10050
  • fix(model): loop-break regression while block copying in puller by @imsodin in #10069
  • fix(model): close fd immediately in copier by @imsodin in #10079
  • fix(model): use same folder first in copier by @imsodin in #10093
  • fix(model): correct bufferpool handling; simplify by @calmh in #10113
  • fix(protocol): avoid deadlock with concurrent connection start and close by @calmh in #10140
  • fix(syncthing): avoid writing panic log to nil fd by @ardevd in #10154
  • fix(fs): check for unsupported error on modern Windows (fixes #10164) by @rasa in #10165
  • fix(gui): don't show dial errors for paused devices (fixes #10166) by @marbens-arch in #10167
  • fix: track invalid files in LocalFlags to fix global count by @imsodin in #10170
  • fix(watchaggregator): properly handle sub-second watch durations (fixes #9927) by @imsodin in #10179
  • fix(db): remove invalid member from FileMetadata by @imsodin in #10180

Features

  • feat: add syncthing debug database-statistics command by @calmh in #10117
  • feat(config): enable multiple connections by default by @calmh in #10151
  • feat(config): expose folder and device info as metrics (fixes #9519) by @calmh in #10148
  • feat: use Ed25519 keys for sync connections by @calmh in #10162

Other

  • chore: remove abandoned next-gen-gui experiment by @calmh in #10004
  • chore: remove weak hashing which does not pull its weight by @calmh in #10005
  • chore: switch database engine to sqlite (fixes #9954) by @calmh in #9965
  • chore: harmonise command line flags by @calmh in #10007
  • chore(db): increase journal limit to 64MiB by @bt90 in #10022
  • chore: forget deleted files older than six months (fixes #6284) by @calmh in #10023
  • chore(db): use shorter read transactions and periodic checkpoint for smaller WAL by @calmh in #10027
  • chore: configurable delete retention interval by @calmh in #10030
  • chore(db): fix debug logging by @bt90 in #10033
  • chore(db): buffer pulled files for smaller WAL by @calmh in #10036
  • chore(db): use one SQLite database per folder by @calmh in #10042
  • chore(model): delay starting a pull while there are incoming index updates by @calmh in #10041
  • chore(syncthing): remove "default" folder concept by @calmh in #10068
  • chore(syncthing): ensure migrated database is closed before exiting by @xjtdy888 in #10076
  • chore(db, model): simplify per hash DB lookup in copier by @imsodin in #10080
  • chore(model): refactor copier for more flatness by @imsodin in #10094
  • build: upgrade setup-zig action by @calmh in #10134
  • build: properly propagate build tags to Debian build by @calmh in #10144
  • chore(protocol): don't start connection routines a second time by @imsodin in #10146
  • chore(protocol): only allow enc. password changes on cluster config by @imsodin in #10145
  • chore: various linter fixes by @calmh in #10157
  • build: streamline gathering of facts, checkouts by @calmh in #10158
  • build: build both Debian armel and armhf (though they are the same for us) by @calmh in #10159
  • build: explicitly trigger build after pushing release tag by @calmh in #10160
  • chore(syncthing): ensure response body is closed in upgrade request by @ardevd in #10169
  • refactor(syncthing): use named constant for SIGHUP by @ardevd in #10168
  • chore(model): remove redundant removal of internal fields in indexsender by @imsodin in #10173
  • chore: add migration for remote invalid local flag by @imsodin in #10174

New Contributors

Full Changelog: v1.29.7...v2.0.0-rc.21