Add synced Today recap with estimate-versus-actual history #579

Closed
opened 2026-08-11 16:51:02 +00:00 by rockachopa · 0 comments
Member

Problem

Today estimates sync across devices, but actual time disappears into device-local timer state after a session ends. Operators cannot review whether the day fit the plan or improve future estimates. Historical issues #459 and #577 added estimates and live timing respectively; neither added a completed-session recap or synced history.

Vertical slice

Add an account-scoped Today recap: settle timed entries when ending a session, compare estimated and actual minutes, allow bounded corrections, save idempotently, and show recent recaps in a mobile-friendly view. Store only normalized work identity and numeric timing metadata; do not mutate Gitea time entries.

Acceptance

  • Ending a timed Today session produces estimate-versus-actual recap rows and totals.
  • Corrections reject negative/non-finite/>24h values.
  • Saving the same client session ID twice creates one recap.
  • Recent history is account-isolated, bounded, newest-first, and no-store.
  • Timer data clears only after recap admission succeeds.
  • Recap is usable at 390px without horizontal overflow and with 44px controls.
  • Focused and full suites pass.
## Problem Today estimates sync across devices, but actual time disappears into device-local timer state after a session ends. Operators cannot review whether the day fit the plan or improve future estimates. Historical issues #459 and #577 added estimates and live timing respectively; neither added a completed-session recap or synced history. ## Vertical slice Add an account-scoped Today recap: settle timed entries when ending a session, compare estimated and actual minutes, allow bounded corrections, save idempotently, and show recent recaps in a mobile-friendly view. Store only normalized work identity and numeric timing metadata; do not mutate Gitea time entries. ## Acceptance - Ending a timed Today session produces estimate-versus-actual recap rows and totals. - Corrections reject negative/non-finite/>24h values. - Saving the same client session ID twice creates one recap. - Recent history is account-isolated, bounded, newest-first, and no-store. - Timer data clears only after recap admission succeeds. - Recap is usable at 390px without horizontal overflow and with 44px controls. - Focused and full suites pass.
timmy was assigned by rockachopa 2026-08-11 16:51:02 +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#579
No description provided.