Sync Later deferrals across operator devices #363

Closed
opened 2026-08-09 02:28:54 +00:00 by rockachopa · 0 comments
Member

Problem

Later is part of the primary mobile triage flow, but frontend/later-work.js stores wake times only in per-browser localStorage. Deferring work on a phone therefore does not suppress it on a signed-in laptop, and restoring early does not propagate. The adjacent Today plan already has revisioned, account-scoped cross-device convergence.

Vertical slice

Persist account-scoped Later wake times behind authenticated GET/PATCH /api/v1/later routes; queue idempotent defer/restore operations locally; adopt monotonic server revisions across tabs; replay after reconnect; and wire mobile defer, restore, and expiry into synchronization without mutating Gitea state.

Acceptance tests

  • Deferring an item on one signed-in device propagates the identical wake time to another device/tab.
  • Restoring early propagates and leaves assignment, unread state, labels, and due date untouched.
  • Offline defer/restore is immediate, durable, idempotent, and replays after reconnect.
  • Older delayed snapshots cannot overwrite a newer accepted revision, and account partitions never cross.
  • Expired entries wake locally and queue harmless server removal.
  • Existing Today/Later/offline/service-worker behavior remains green.

Non-duplication evidence

Historical #254 and #256 created browser-local Later and detail-sheet deferral; #289 retained Today/Later during outages. Recent #357/#359/#361 synchronize and converge Today only. Current source and README still explicitly keep Later browser-local; no open issue or recent commit covers cross-device Later synchronization.

## Problem Later is part of the primary mobile triage flow, but `frontend/later-work.js` stores wake times only in per-browser localStorage. Deferring work on a phone therefore does not suppress it on a signed-in laptop, and restoring early does not propagate. The adjacent Today plan already has revisioned, account-scoped cross-device convergence. ## Vertical slice Persist account-scoped Later wake times behind authenticated `GET/PATCH /api/v1/later` routes; queue idempotent defer/restore operations locally; adopt monotonic server revisions across tabs; replay after reconnect; and wire mobile defer, restore, and expiry into synchronization without mutating Gitea state. ## Acceptance tests - Deferring an item on one signed-in device propagates the identical wake time to another device/tab. - Restoring early propagates and leaves assignment, unread state, labels, and due date untouched. - Offline defer/restore is immediate, durable, idempotent, and replays after reconnect. - Older delayed snapshots cannot overwrite a newer accepted revision, and account partitions never cross. - Expired entries wake locally and queue harmless server removal. - Existing Today/Later/offline/service-worker behavior remains green. ## Non-duplication evidence Historical #254 and #256 created browser-local Later and detail-sheet deferral; #289 retained Today/Later during outages. Recent #357/#359/#361 synchronize and converge Today only. Current source and README still explicitly keep Later browser-local; no open issue or recent commit covers cross-device Later synchronization.
timmy was assigned by rockachopa 2026-08-09 02:28:54 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#363
No description provided.