Repository navigation
Releases
Releases · WilhelmZA/protondrive_linux_sync
NeutronSync v0.9.2 (stable)
Fixed
- The update release-notes card expands within the scrollable About page instead of clipping notes in a short nested scroll area (#45).
- The tray and headless server recheck account state every 20 seconds without an open window. Unlocking the keyring clears stale status and resumes an enabled watcher without turning on disabled auto-sync (#46).
Full Changelog: v0.9.1...v0.9.2
NeutronSync v0.9.1
Added
- The web interface lists local trash per synced folder, restores files without overwriting an existing path, and permanently deletes entries after confirmation (#44).
- First-start password setup uses a one-time code from the container log. The Account page changes the web password and signs out other sessions. Environment passwords seed new installations unless an explicit reset is requested (#43).
Fixed
- The container image builds again: the Dockerfile now copies
examples/, whichCargo.tomlneeds for the OpenAPI generator. - Updated Tokio to 1.54.1 to fix the interval timer race in the yanked 1.54.0 release and restore the dependency check.
- Invalid configuration starts a protected diagnostics API instead of leaving the web interface with a connection error. The engine retries after the configuration file is corrected (#42).
- The signed-out API test sets its fake session before the startup account probe, removing a race in CI.
- Remote folder moves and renames populate new subtrees before the watcher acknowledges the change, even when local file watches are unavailable.
Full Changelog: v0.9.0...v0.9.1
NeutronSync v0.9.0 (stable)
Added
- The tray and
neutronsync servehost the same/api/v1on$XDG_RUNTIME_DIR/neutronsync/api.sock(mode 0600). The tray can also listen on TCP with[cli] api_listen. - OpenAPI 3.1 at
docs/openapi.jsonandGET /api/v1/openapi.json, checked in CI so a drift or a v1 break is a failed build. - Python and TypeScript clients at
clients/python(neutronsync-client) andclients/typescript(@neutronsync/client). The web interface uses the Python package. How to build another front end:docs/BUILD_A_CLIENT.md.
Changed
- The desktop window talks to the engine over the unix socket API. Theme, tray, notifications and the other desktop preferences travel with
PUT /settings, so a later save does not wipe them. - For this release, a tray that only publishes
status.jsonstill shows in the window when the socket is down and that file is fresh. - The Unraid template moved to its own repository, WilhelmZA/unraid-templates, for Community Applications. It and the compose example use
:latestnow that a release with the image is stable.
Full Changelog: v0.8.2...v0.9.0
NeutronSync v0.8.2 (stable)
0.8.1 was tagged but never published: its release build failed. This release carries every 0.8.1 change listed below, plus these.
Security
- Updated rustls-webpki to 0.103.16 and webpki-roots to 1.0.10 for RUSTSEC-2026-0382 and RUSTSEC-2026-0381 (distrusted certificate intermediates).
Fixed
- The .deb, .rpm and tarball builds send the release version to Proton, not a
-devlabel; 0.8.1 fixed this only for the Docker image (#37). - The sidecar tests no longer hard-code the version, which broke the 0.8.1 release build.
Known issues
- A config that this version refuses, such as two pairs on overlapping folders that 0.8.0 accepted, stops the engine at start. Nothing syncs, so no file is at risk, but the web interface says only that it cannot reach the engine; the reason is in the container log. Remove one of the overlapping pairs from
neutronsync.tomlto recover (#42).
Full Changelog: v0.8.1...v0.8.2
NeutronSync v0.8.0
Added
- A Docker image (
docker/Dockerfile) that runsneutronsync serveand the browser interface under s6-overlay, with Unraid-stylePUID/PGID, a persistent/config, encrypted file session store, and a health check on the web UI. Release tags publishghcr.io/wilhelmza/neutronsync:<version>and:edge(signed with cosign); promoting a release moves:latest. An Unraid Community Applications template lives underpackaging/unraid/. See the README section "Run on Unraid or Docker". - A browser interface under
web/. It talks only toneutronsync serveand covers the same ground as the desktop window: live sync progress, held deletions and conflicts, folders and settings, and Proton sign-in (including two-factor, mailbox password and human verification). It runs asneutronsync-weband is meant for a phone as well as a desktop browser. Seeweb/README.md. - A headless server,
neutronsync serve. It runs the sync engine without a desktop and offers everything the window can do over an HTTP API under/api/v1: the live state, syncing and cancelling, auto sync, held-back deletions, conflicts, settings, synced folders, signing in and out, browsing Proton Drive and local folders, and the log. Changes arrive as a live event stream. It listens on127.0.0.1:8090by default; any other address needs an API token of at least 32 characters, and a token, once set, is needed on every request except the health check. Requests from web pages are refused, so a site open in your browser cannot drive a server that has no token. It refuses to start while the desktop tray or another server syncs the same state. Settings and folder changes are checked by the same rules as the config file before anything is saved, and removing a folder never deletes a file. Seedocs/HTTP_API.md. The release packages include it. - The Proton session can be kept in an encrypted file instead of the desktop keyring, for a container or a server without one. Set
session_store = "file"in[cli]and give a 32-byte key insession_key_fileorNEUTRONSYNC_SESSION_KEY. The file issession.encin the state directory, readable only by you. With a wrong key the sign-in service does not start and the file is left as it was, so a typo cannot cost you the session.
Security
- A Security workflow scans the source tree and the Docker image with Trivy on every push and weekly, uploads the results to GitHub code scanning, and fails on a HIGH or CRITICAL finding that has a fix. The release workflow scans the image the same way and does not push an image that fails.
- The Docker image installs pending Debian security updates on top of its base image, so fixes such as perl-base and libpcre2 ship without waiting for a new base image.
Fixed
- A serve API test that waited at most five seconds between state events no longer fails on a loaded machine.
- The release workflow runs git inside its container again. 0.7.0's first build stopped at the source tarball with "dubious ownership"; the workspace is now marked safe right after checkout.
Documentation
docs/SYNC_MODEL.mdexplains in-run retries and speed limits and lists the two new limit keys.CONTRIBUTING.mdlists the checks CI blocks on and describes the signed release flow.- Screenshots of the Conflicts page and of held-back deletions.
- Screenshots of every page of the web interface, in
docs/screenshots.mdand the README. - The README and the Unraid notes say to use the
edgeor a version tag until a release with the image is promoted to stable, becauselatestdoes not exist before that.
Full Changelog: v0.7.0...v0.8.0
NeutronSync v0.7.0 (stable)
Added
- Releases are signed. Each one ships
SHA256SUMSandSHA256SUMS.asc, signed with a dedicated release key whose public half is built into the app. From 0.7.0 on the updater checks that signature before it installs anything and discards a download that fails it; the release workflow refuses to publish an unsigned release. neutronsync --versionand the About page show the commit the build was made from.- An Arch Linux package,
neutronsync-bin, on the AUR. It is published when a release is promoted to stable. - A guard against mass deletion. One run may delete at most 200 files from a folder pair, and at most 30% of the files that pair keeps in sync (never fewer than 25); whole folders count the files inside them. Past that, the run holds every deletion back, still does everything else, and says so: a banner on the Activity page, "N deletions held back" on the folder card, an error line and exit status 1 from
neutronsync sync. Two answers: "Restore them" (neutronsync sync --resync NAME) brings the files back, "Delete them" (neutronsync sync --allow-mass-delete NAME) lets them through for that one run. The limits aremax_delete_filesandmax_delete_percentin[options];neutronsync statusshows them. - A Conflicts page in the window. Every conflict the sync settled is listed with the folder, the file, when, and what was done: kept both (and where your copy went), kept the newer version from this computer or from Proton Drive, or left as it is. "Show in folder", "Open copy" and "Dismiss" per row, "Dismiss all" for the page. Conflicts settled from the command line show up there too.
- The sync state file is checked before it is used. A file saved by a newer NeutronSync is refused with a message saying so and is left unchanged. A file that is damaged (random bytes, truncated, a broken page) stops the sync with a message instead of being read as an empty history, which could have turned into a mass change. The window shows "Sync state could not be read" in Activity when that happens.
- Upload and download speed limits. Settings has a new Network group with an "Upload limit" and a "Download limit" (No limit, 256 KB/s to 10 MB/s), or set
upload_limit_kbpsanddownload_limit_kbpsin[options]. A limit applies to all folders together and takes effect on the next sync, so a large first sync no longer saturates a home connection. - The tray icon shows what sync is doing. The plain logo means up to date; a dot in the corner means syncing (purple), waiting on you (amber: signed out or the keyring is locked) or a problem (red). The tray menu opens with a status line: "Up to date · last sync 5 minutes ago", "Syncing 37 of 120", "Signed out — open NeutronSync to sign in", "Waiting for the keyring to unlock", or "Problem in Documents". The tooltip says the same.
- Desktop notifications, without the window open: when files changed in two places (one notice every five minutes at most, summing what arrived), when a folder's sync problem has lasted ten minutes (once, until it clears and comes back), and when you are signed out of Proton (once per sign-out; a locked keyring is not a sign-out). Only the process doing the sync sends them, so nothing arrives twice. Settings has "Show desktop notifications", or set
notificationsin[options]. - An Appearance setting: System, Light or Dark. System follows the desktop's light or dark preference and falls back to dark when the desktop reports none. The change applies at once. The option is
themein[options]. - Synced folders can appear in the file manager sidebar. Settings has "Show synced folders in the file manager sidebar", or set
file_manager_bookmarksin[options]. One bookmark per folder, named as in NeutronSync; adding or removing a folder adds or removes its bookmark. NeutronSync only ever removes bookmarks it added itself, and a bookmark you already had for the same folder is left alone.
Fixed
- Baseline rows for files that were already gone on both sides are now forgotten instead of being carried forever, so a run that was killed after a deletion reached Proton Drive settles cleanly on the next run.
- The packages run on Ubuntu 22.04 and Debian 12 again. Releases are now built on Ubuntu 22.04, so the binaries need glibc 2.35 rather than 2.39, and the release job checks every shipped binary against that floor.
- The RPM declares its dependencies by name instead of relying on a scan that produced requirements no repository could satisfy.
Changed
- CI now fails on clippy warnings, formatting, a known advisory or an unapproved licence, and audits the sidecar's dependencies.
- A transfer that fails for a temporary reason is retried a few times in the same sync. A network drop, a server error, a rate limit or a file still being written gets up to three more attempts with a growing pause between them, instead of waiting for the next sync. A failure that cannot pass (not found, a conflict, signed out, disk full) is not retried. If three files in a row use up their retries, the rest of that sync stops retrying and leaves the failures for the next one, so a dead network cannot stall a long sync for hours. A transfer slowed by a speed limit is no longer cut off by the 15-minute call timeout as long as it keeps moving.
Tests
- Crash tests run the real
neutronsyncbinary against the fake sidecar and kill it by PID part-way through downloads, uploads, deletions, a mixed run, and right after an upload the sidecar finished on its own, then check that two clean runs bring both sides back to the same files with nothing left half done. The held mass deletion, the two sync-state refusals and the guard's command-line answers are covered the same way.
Full Changelog: v0.6.1...v0.7.0
NeutronSync v0.6.1 (stable)
Fixed
- Switching pages works again. 0.6.0 dropped the page-fade step, so a new page never finished fading in and the old one stayed on screen.
Full Changelog: v0.6.0...v0.6.1
NeutronSync v0.6.0
Added
- The About page shows what changed before you install an update: the release notes of every version between the one you run and the one on offer, newest first, under "What's new".
Removed
- The
proton-drivecommand-line backend. NeutronSync syncs only throughneutronsync-drive, the sidecar built on Proton's Drive SDK, which has been the default since 0.4.0. A config that still sets[cli] backend = "cli"is refused with a message saying so; the other keys that backend used (binary,upload_flags,download_flags,fresh_cache,credentials_store,poll_interval) are ignored and dropped on the next save.neutronsync sync --backendis gone. The legacy watch mode that re-walked folders on a timer went with it; the change feed and the daily safety-net walk remain.
Full Changelog: v0.5.3...v0.6.0
NeutronSync v0.5.3
Fixed
- A file edited after the scan but before its upload no longer comes back as a conflict on its next edit. The sync recorded the size and time the scan saw, not the newer content it uploaded, so the next local edit looked like a change on both sides and produced a "(conflict ...)" copy. The record now holds what the upload actually sent: the API backend reports the size, time and SHA-1 of the snapshot it uploaded, and the CLI backend reads the file just before sending it.
Full Changelog: v0.5.2...v0.5.3
NeutronSync v0.5.2 (stable)
Fixed
- Restart now after an in-app update brings the app back when the tray runs as a systemd user service. Before, stopping the tray also stopped the service, which killed the restart step before it could start the new version.
Full Changelog: v0.5.1...v0.5.2