Summary
The Encrypted Sync status UI reports success information that never happened, and Test Connection gives no success feedback:
- Test Connection: on success the UI shows nothing at all (the status only transitions
syncing → idle), so it is impossible to tell whether the click did anything. Failures do show an error.
- Misleading "Last sync": while the server-side had zero successful sync writes (remote bucket at 0 objects / 0 B; reverse-proxy logs show only a single 35-byte
list-type response per round and no put whatsoever), the UI displayed:
Last sync 22:28:30 · Transferred 38.1 KB
- later also
Last sync 00:02:15 · Transferred 18.6 KB
Steps to reproduce
- Configure Encrypted Sync with an S3 backend such that the sync fails after the initial remote
list (in my case the client-side Automerge failure described in a related issue — the abort happens before any upload).
- Watch the Sync settings panel: it shows a "Last sync" timestamp and a transfer size, although nothing was ever uploaded (the server-side object count stays 0).
- Click Test Connection with valid credentials: there is no visible success indication.
Expected behavior
- "Last sync" and transferred size update only after a fully successful sync.
- Test Connection shows a clear success confirmation.
Actual behavior
Stale/misleading sync metadata is displayed on failed sync paths; a successful connection test is completely silent.
Environment
Browser: Chrome 151 (macOS 15)
Deployment: Docker (ghcr.io/u14app/neo-chat:v2.4.0) behind nginx reverse proxy
Logs or screenshots
Server-side, over a ~100-minute window: 316× POST /api/sync/remote → 200 (35 B), zero writes to the remote bucket — while the UI reported a "last sync" with KB transferred.
Investigation lead: lastSyncAt / lastSyncBytes / status handling in the sync store appears to commit values on aborted/failed sync paths.
Summary
The Encrypted Sync status UI reports success information that never happened, and Test Connection gives no success feedback:
syncing → idle), so it is impossible to tell whether the click did anything. Failures do show an error.list-type response per round and noputwhatsoever), the UI displayed:Last sync 22:28:30 · Transferred 38.1 KBLast sync 00:02:15 · Transferred 18.6 KBSteps to reproduce
list(in my case the client-side Automerge failure described in a related issue — the abort happens before any upload).Expected behavior
Actual behavior
Stale/misleading sync metadata is displayed on failed sync paths; a successful connection test is completely silent.
Environment
Browser: Chrome 151 (macOS 15)
Deployment: Docker (
ghcr.io/u14app/neo-chat:v2.4.0) behind nginx reverse proxyLogs or screenshots
Server-side, over a ~100-minute window: 316×
POST /api/sync/remote → 200 (35 B), zero writes to the remote bucket — while the UI reported a "last sync" with KB transferred.Investigation lead:
lastSyncAt/lastSyncBytes/statushandling in the sync store appears to commit values on aborted/failed sync paths.