sync right now is too fragile. conflict handling still leans on response text in parts of the flow, and conflict context only shows up while doing pull/push. that’s why it feels random when things diverge.
I want a proper sync state in client (synced / dirty / syncing / conflict / error) and a small always-visible status area showing local hash, remote hash, and last sync result.
Also need direct recovery buttons in one place:
- pull remote
- force push local
- open remote
- cancel
Keep current modal behavior working while we move to this, no breakage during migration.
Acceptance when,
no silent conflicts
conflict is visible without retrying actions
recovery options are in one place
sync behavior is deterministic and test-covered
sync right now is too fragile. conflict handling still leans on response text in parts of the flow, and conflict context only shows up while doing pull/push. that’s why it feels random when things diverge.
I want a proper sync state in client (synced / dirty / syncing / conflict / error) and a small always-visible status area showing local hash, remote hash, and last sync result.
Also need direct recovery buttons in one place:
Keep current modal behavior working while we move to this, no breakage during migration.
Acceptance when,
no silent conflicts
conflict is visible without retrying actions
recovery options are in one place
sync behavior is deterministic and test-covered