CI Report:
https://ci-tests.linuxserver.io/linuxserver/syncthing/v2.0.4-ls194/index.html
LinuxServer Changes:
Rebase to Alpine 3.22.
Remote Changes:
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.4
orghcr.io/syncthing/syncthing:2.0.4
({docker,ghcr}.io/syncthing/syncthing:2
to follow just the major version)
What's Changed
Fixes
- fix(cmd): only start temporary API server during migration if it's enabled by @pixelspark in syncthing/syncthing#10284
- fix(model): consider MaxFolderConcurrency when calculating number of hashers by @tomasz1986 in syncthing/syncthing#10285
- fix(model): consider number of CPU cores when calculating hashers on interactive OS (#10284) by @tomasz1986 in syncthing/syncthing#10286
- fix(db): apply all migrations and schema in one transaction by @calmh in syncthing/syncthing#10323
- fix(model): correctly handle block-aligned empty sparse files by @calmh in syncthing/syncthing#10332
- fix(syncthing): apply folder migrations with temporary API/GUI server by @calmh in syncthing/syncthing#10330
Other
- chore(db): adjust db bench name to improve benchstat grouping by @imsodin in syncthing/syncthing#10283
- chore(db): cleanup DB in tests and remove OpenTemp by @imsodin in syncthing/syncthing#10282
- build: use Go 1.24 tools pattern by @calmh in syncthing/syncthing#10281
- chore(db): avoid rowid for blocks and blocklists by @bt90 in syncthing/syncthing#10315
- refactor(db): slightly improve insert performance by @calmh in syncthing/syncthing#10318
- chore(gui): use steps of 1024 KiB for bandwidth rate limits by @tomasz1986 in syncthing/syncthing#10316
- chore(gui): use step of 3600 for versions cleanup interval by @tomasz1986 in syncthing/syncthing#10317
- chore(db): benchmark output, migration blocks/s output by @calmh in syncthing/syncthing#10320
- chore(db): update schema version in the same transaction as migration by @imsodin in syncthing/syncthing#10321
- chore(db): migration for previous commits by @calmh in syncthing/syncthing#10319
Full Changelog: syncthing/syncthing@v2.0.3...v2.0.4