Make mobile My Work refresh resumable and single-flight #119

Closed
opened 2026-08-06 16:22:56 +00:00 by rockachopa · 0 comments
Member

Problem

The dashboard independently polls context from the main renderer every 8 seconds, the layout widget every 2 seconds, and the repo-mix initializer. On mobile this wastes data and battery, can overlap requests when Gitea is slow, and does not reconcile immediately when a user returns from acting on a work item. Filters also lack workload counts.

Vertical slice

Use one visibility-aware, single-flight context snapshot loop for all context-backed UI. Pause while hidden, refresh once on resume, keep the last snapshot on failure, and add count-bearing mobile-safe My Work filters with session persistence.

Acceptance

  • One context request feeds dashboard, layout, repo mix, and My Work.
  • No overlapping request starts; routine polling pauses while hidden.
  • Returning visible triggers exactly one immediate refresh and retains selected filter.
  • Filters show All/Issues/PRs/Reviews counts and wrap without horizontal overflow at 320px.
  • Failed refresh preserves last-known work with a stale warning.
  • Behavioral tests, full suite, and mobile rendered validation pass.

This behavior is absent from all 63 visible historical issue titles and recent commits through b5830cf.

## Problem The dashboard independently polls context from the main renderer every 8 seconds, the layout widget every 2 seconds, and the repo-mix initializer. On mobile this wastes data and battery, can overlap requests when Gitea is slow, and does not reconcile immediately when a user returns from acting on a work item. Filters also lack workload counts. ## Vertical slice Use one visibility-aware, single-flight context snapshot loop for all context-backed UI. Pause while hidden, refresh once on resume, keep the last snapshot on failure, and add count-bearing mobile-safe My Work filters with session persistence. ## Acceptance - One context request feeds dashboard, layout, repo mix, and My Work. - No overlapping request starts; routine polling pauses while hidden. - Returning visible triggers exactly one immediate refresh and retains selected filter. - Filters show All/Issues/PRs/Reviews counts and wrap without horizontal overflow at 320px. - Failed refresh preserves last-known work with a stale warning. - Behavioral tests, full suite, and mobile rendered validation pass. This behavior is absent from all 63 visible historical issue titles and recent commits through b5830cf.
timmy was assigned by rockachopa 2026-08-06 16:22:56 +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#119
No description provided.