Keep dashboard startup live when IndexedDB stalls #529

Closed
opened 2026-08-11 01:20:49 +00:00 by timmy · 0 comments
Owner

Problem

Dashboard bootstrap currently awaits offlineWorkStore.ready() before live loading and interaction wiring. If IndexedDB open or migration never settles (for example, a blocked upgrade or browser storage fault), optional offline persistence can leave the online dashboard permanently inert.

Evidence on origin/main (3e16dd0): frontend/dashboard.js awaits readiness at lines 419-420; frontend/offline-work.js has no initialization deadline or blocked-open recovery. A never-resolving IndexedDB probe remains pending. Historical issue titles and recent commits contain no bounded storage startup work; #525 introduced IndexedDB persistence but not failure isolation.

Acceptance

  • Offline-store readiness settles into an explicit degraded state within a bounded deadline when IndexedDB never opens or reports blocked.
  • Live dashboard bootstrap proceeds after that deadline; optional storage cannot hold the online flow indefinitely.
  • Late IndexedDB completion cannot overwrite degraded in-memory state or destructively repeat migration.
  • A retry can recover durable offline persistence without reloading the dashboard.
  • The settings UI truthfully reports unavailable/recovered offline storage, remains keyboard accessible, and has no phone-width overflow.
  • Focused behavioral tests and the full suite pass.
## Problem Dashboard bootstrap currently awaits `offlineWorkStore.ready()` before live loading and interaction wiring. If IndexedDB open or migration never settles (for example, a blocked upgrade or browser storage fault), optional offline persistence can leave the online dashboard permanently inert. Evidence on `origin/main` (`3e16dd0`): `frontend/dashboard.js` awaits readiness at lines 419-420; `frontend/offline-work.js` has no initialization deadline or blocked-open recovery. A never-resolving IndexedDB probe remains pending. Historical issue titles and recent commits contain no bounded storage startup work; #525 introduced IndexedDB persistence but not failure isolation. ## Acceptance - Offline-store readiness settles into an explicit degraded state within a bounded deadline when IndexedDB never opens or reports blocked. - Live dashboard bootstrap proceeds after that deadline; optional storage cannot hold the online flow indefinitely. - Late IndexedDB completion cannot overwrite degraded in-memory state or destructively repeat migration. - A retry can recover durable offline persistence without reloading the dashboard. - The settings UI truthfully reports unavailable/recovered offline storage, remains keyboard accessible, and has no phone-width overflow. - Focused behavioral tests and the full suite pass.
timmy self-assigned this 2026-08-11 01:20:49 +00:00
timmy closed this issue 2026-08-11 01:31:06 +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#529
No description provided.