Releases: syncthing/syncthing
v2.0.2
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 theSTTRACE
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. Seesyncthing --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
orghcr.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
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 theSTTRACE
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. Seesyncthing --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
orghcr.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
Full Changelog: v2.0.0...v2.0.1
v2.0.0
⚠️ 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 theSTTRACE
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. Seesyncthing --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
orghcr.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:...
v2.0.0-rc.25
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 theSTTRACE
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. Seesyncthing --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
orghcr.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...
v2.0.0-rc.24
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 theSTTRACE
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. Seesyncthing --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
orghcr.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...
v2.0.0-rc.23
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. Seesyncthing --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
orghcr.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
- @ardevd made their first contribution in #10154
- @yparitcher made their first contribution in #10176
Full Changelog: v1.29.7...v2.0.0-rc.23
v1.30.0
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
orghcr.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
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
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. Seesyncthing --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
orghcr.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
- @ardevd made their first contribution in #10154
- @yparitcher made their first contribution in #10176
Full Changelog: v1.29.7...v2.0.0-rc.22
v1.30.0-rc.2
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
orghcr.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
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
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. Seesyncthing --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
orghcr.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