Skip to content

feat(dashboard): background-activity center (11.3.1)#91

Merged
th3-br41n merged 1 commit into
mainfrom
feat/11.3.1-activity-center
Jul 3, 2026
Merged

feat(dashboard): background-activity center (11.3.1)#91
th3-br41n merged 1 commit into
mainfrom
feat/11.3.1-activity-center

Conversation

@th3-br41n

Copy link
Copy Markdown
Contributor

Stacks on #89 (base = feat/11.3-download-progress). It imports embedder-status.ts / SemanticModelStatus introduced there. Retarget to main once #89 merges.

What

Long-running shell work — the 11.3 model download, a full search reindex, later sync/import/backup — ran with no ambient indicator. The model download in particular was silent, and the per-panel Settings → Search card (from #89) is a drill-down you have to navigate to, not an ambient signal. This adds a first-class background-activity surface in the dashboard chrome, mirroring the existing sync-status chip.

Pieces

  • activity-types.ts — shared, import-free (ActivityKind / ActivityPhase / BackgroundOperation / ActivitySnapshot), used across main/preload/renderer like sync-status-types.ts.
  • BackgroundActivityStore (pure) — set / clear / snapshot / onChange; recency-ordered, byte-identical re-set is a no-op push.
  • activity:* IPC — one accessor + one push channel to the dashboard (mirrors sync-status-handlers.ts); window.brainstorm.activity.{snapshot,on} preload bridge.
  • RendereruseBackgroundActivity hook; <ActivityChip> appears only while work is in flight (next to the sync chip): spinner + freshest-op title + percent, "N tasks" when several, warning glyph on error; <ActivityPopover> lists a row + a determinate/indeterminate bar per op, via the shared <Popover>.

Producers wired

Sync / import / export register the same way (their ActivityKinds are already defined) — the store is a general surface, not a model-download one-off.

a11y

Bars are decorative (aria-hidden); the percent / "Working…" status text is the assistive-tech source (matches the sync chip + the #89 coverage bar). Chip label is aria-live="polite".

Tests

+22: store 9 · status→op mapper 3 · handlers 4 (channel/push/destroyed-skip/dispose) · chip + popover 6. Full bun run test14229 passed, 0 test-case failures (10 failed suites = known worktree Electron-collection artifact). tsc (packages + apps) · lint · shell build · size (renderer 329.88/350 KB gz, main 206.62/305 KB) all clean.

🤖 Generated with Claude Code

Long-running shell work (the 11.3 model download, a full reindex, later
sync/import) ran with no ambient indicator — the model download in
particular was silent, and a per-panel Settings card you must navigate to
isn't the right home. Add a first-class activity surface in the dashboard
chrome, mirroring the sync-status chip.

- shared activity-types.ts (ActivityKind/ActivityPhase/BackgroundOperation)
- pure BackgroundActivityStore (set/clear/snapshot/onChange, recency order,
  dedup no-op push)
- activity:* IPC (accessor + push to the dashboard) + preload bridge
- useBackgroundActivity hook; <ActivityChip> (shown only while work is in
  flight — spinner + freshest-op title + percent, "N tasks" when several,
  warning on error) + <ActivityPopover> (a row + determinate/indeterminate
  bar per op, via the shared <Popover>)
- producers: the 11.3 model download (operationFromSemanticStatus) and the
  full reindex (surfaced only past a 500ms guard so fast per-edit
  reconciles don't flicker the chip). sync/import/export register the same
  way (kinds already defined).

+22 tests (store 9 · mapper 3 · handlers 4 · chip/popover 6). tsc + lint +
shell build + size clean. Complements the Settings → Search detail card:
the chip is the ambient indicator, the card the drill-down.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Base automatically changed from feat/11.3-download-progress to main July 3, 2026 20:02
@th3-br41n th3-br41n merged commit d9b75ba into main Jul 3, 2026
@th3-br41n th3-br41n deleted the feat/11.3.1-activity-center branch July 3, 2026 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant