• v1.0.31 — Sync loop fully fixed + icon

    Ghost released this 2026-05-25 14:06:19 +00:00 | 48 commits to main since this release

    Sync loop — final 3 fixes (found via live device logcat)\n\nFix 1 — Startup race window: FileObserver fires immediately on startWatching() before the catchupScan coroutine runs. With cooldown=0, this starts a 5s debounce that fires after catchupScan already handled the sync. Fixed: watchPath() sets a 15s startup cooldown before registering any watchers.\n\nFix 2 — Stale debounce fires after cooldown set: A debounce started at T=0 (cooldown=0) would fire at T+5s even though catchupScan set a 120s cooldown at T+1s. Fixed: debounce re-checks cooldown after its 5s delay and aborts if already active.\n\nFix 3 — catchupScan did not cancel pending debounce: A running debounce was not cancelled when catchupScan took over, causing a second sync 5s after the catchup sync. Fixed: catchupScan now cancels any pending debounce before enqueuing.\n\n### Icon\n- Four thick arcs (blue/red/green/orange) in an interlocked pinwheel arrangement\n- Over/under draw-order for visual depth\n- White sync-arrow circle at center\n- Pure black background

    Downloads