Skip to content

Android is push-only until sync v2: stop showing the 'zero peers … layout problem' warning; pull other hosts only once v2 reads from staging #291

Description

@ErikBjare

Observed on v0.14.2b2 (POCO F8 Ultra), Sync Settings after a successful sync:

Last Sync succeeded at 13:00 … pulled 0, pushed 1
Found 0 remote db files to pull from /storage/emulated/0/Android/data/net.activitywatch.android/files/sync/poco_f8_ultra
Zero peers in a configured sync dir is usually a layout or setup problem, not a no-op.
[own-staging 2-level] …/files/sync/poco_f8_ultra/41662…/test.db  299.2 MB  not pulled: own device_id, excluded from pull

syncBoth does call pull_all (correct, 3-level list_remote_dbs), but copySyncFilesToSafDir only mirrors internal → SAF. Nothing ever copies other hosts' {hostname}/{device_id}/test.db from the Syncthing folder into the app-private dir, so the only thing under the internal root is our own staging and pull is guaranteed to find zero peers. The #687 warning then tells the user their setup is broken when it is working as designed for push.

Two things:

  1. Decide whether Android pulls at all. If yes, peers have to be read from the SAF tree (either an inbound mirror of {other-host}/… folders before the pull, or pull_all reading peer dbs via SAF-backed copies). If no for now, the Sync Settings text should say "push-only on Android" instead of the layout-problem warning.
  2. The root in that message is …/files/sync/poco_f8_ultra, and the own staging is classified as 2-level under it — but resolveSyncDirectory sets AW_SYNC_DIR to …/files/sync, and the push lands at …/files/sync/poco_f8_ultra/<device_id>/test.db (3-level from that root). Worth checking what dirs::get_sync_dir() resolves to on Android vs the env var; if the pull root really is the hostname folder, pull could never work even with an inbound mirror.

Related desktop-side bug found in the same session: ActivityWatch/aw-server-rust#711 (resume cursor duplicates the boundary event; the phone's staging stopwatch bucket already holds 285 copies of one event).

cc @TimeToBuildBob

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions