amir 3d7a8b5f3d fix: remote deletions not mirrored when file has no state record
When a file was uploaded before state-tracking worked (getFileMetadata was
broken), its SyncFileStateEntity was never saved. On next sync the engine
saw !local + remote + known=null and downloaded it back instead of deleting
it remotely, creating an infinite re-download loop.

Fix: syncDecide() now accepts hasPriorSyncState (derived from whether the
pair has any known states at all). On initial sync (no prior state) unknown
remote files are downloaded as before. Once the pair has been synced, unknown
remote-only files are treated as mirror-eligible deletions — same as if known
state existed — so locally-deleted files propagate to the remote correctly.

Verified live: 3 remote-only orphan files deleted from Nextcloud on sync.
Bump version to 1.0.12 (code 13).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 02:18:27 +00:00

SyncFlow

Native Android file sync app — sync any folder to WebDAV, SFTP, Nextcloud, ownCloud, Google Drive, Dropbox, or OneDrive.

Features

  • Multi-provider — WebDAV, SFTP, SFTPGo, Nextcloud, ownCloud, Google Drive, Dropbox, OneDrive
  • Flexible sync — one-way upload, one-way download, or two-way mirror
  • Auto-sync — schedule by interval or trigger on Wi-Fi connect / device charge
  • Conflict resolution — keep local, keep remote, keep newer, or keep both
  • Secure — credentials encrypted with Android Keystore; biometric app-lock option
  • No cloud dependency — runs fully on-device, no third-party relay

Install

  1. Download SyncFlow.apk from the latest release
  2. On your Android phone: Settings → Apps → Install unknown apps → allow your browser/file manager
  3. Open the downloaded APK and tap Install
  4. Open SyncFlow, go to Accounts tab → Add Account, pick your provider and sign in
  5. Tap + on the Syncs tab to create your first sync pair

Supported Providers

Provider Auth
WebDAV Username + password
SFTP Password or private key
SFTPGo Username + password
Nextcloud Username + password
ownCloud Username + password
Google Drive OAuth 2.0 (PKCE)
Dropbox OAuth 2.0 (PKCE)
OneDrive OAuth 2.0 (PKCE)

Requirements

  • Android 8.0+ (API 26)
  • Storage permission (or SAF picker) for local folder access
S
Description
No description provided
Readme 21 MiB
v1.0.76 Latest
2026-06-07 13:49:59 +00:00
Languages
Kotlin 100%