Reconcile long mobile interruptions before resuming Today time #591

Closed
opened 2026-08-11 20:49:32 +00:00 by rockachopa · 0 comments
Member

Problem

A running Today timer counts every wall-clock minute while the mobile PWA is backgrounded. A long phone lock, call, or interruption can silently inflate the actual-time recap and optional Gitea time log.

Scope

Add account-scoped interruption reconciliation to the Today timer. Short background switches remain seamless. After at least five minutes away, foreground/reload freezes the timer and asks whether to count or exclude the interval, then resumes exactly once.

Acceptance criteria

  • Under five minutes away continues without a prompt.
  • At least five minutes away creates one durable, account-scoped pending decision and freezes accumulation.
  • Count includes the interval once; exclude removes it while preserving prior elapsed time; both resume the same item.
  • Reload restores an unresolved decision; malformed state, paused timers, ended sessions, clock rollback, and another account do not expose it.
  • Mobile bottom sheet fits 320–600px, respects safe-area padding, and has 44px actions.
  • Recap receives reconciled time.
  • Behavioral tests and the full suite pass.
## Problem A running Today timer counts every wall-clock minute while the mobile PWA is backgrounded. A long phone lock, call, or interruption can silently inflate the actual-time recap and optional Gitea time log. ## Scope Add account-scoped interruption reconciliation to the Today timer. Short background switches remain seamless. After at least five minutes away, foreground/reload freezes the timer and asks whether to count or exclude the interval, then resumes exactly once. ## Acceptance criteria - Under five minutes away continues without a prompt. - At least five minutes away creates one durable, account-scoped pending decision and freezes accumulation. - Count includes the interval once; exclude removes it while preserving prior elapsed time; both resume the same item. - Reload restores an unresolved decision; malformed state, paused timers, ended sessions, clock rollback, and another account do not expose it. - Mobile bottom sheet fits 320–600px, respects safe-area padding, and has 44px actions. - Recap receives reconciled time. - Behavioral tests and the full suite pass.
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#591
No description provided.