Commit Graph

88 Commits

Author SHA1 Message Date
gsxdsm
e8163ab81b FN-7146: add workflow analytics to Command Center
Adds a read-only per-workflow analytics surface for Command Center operators.

- Add a core workflow analytics aggregator with token, cost, task status, and files-changed rollups.
- Expose workflow analytics through JSON and CSV Command Center routes using the scoped store default workflow.
- Add the Workflows Command Center tab, localized copy, docs, tests, and a release changeset.

Files changed:
 .changeset/fn-7146-workflow-analytics.md           |   7 +
 docs/dashboard-guide.md                            |   7 +-
 .../core/src/__tests__/workflow-analytics.test.ts  | 306 +++++++++++++++++++
 packages/core/src/index.ts                         |   7 +
 packages/core/src/workflow-analytics.ts            | 339 +++++++++++++++++++++
 .../components/command-center/CommandCenter.tsx    |   8 +
 .../__tests__/CommandCenter.test.tsx               |  51 +++-
 .../command-center/areas/WorkflowArea.tsx          | 170 +++++++++++
 .../areas/__tests__/WorkflowArea.test.tsx          | 136 +++++++++
 .../register-command-center-routes.auth.test.ts    |   5 +
 .../register-command-center-routes.test.ts         | 109 +++++++
 packages/dashboard/src/command-center-csv.ts       |  57 ++++
 .../src/routes/register-command-center-routes.ts   |  30 ++
 packages/i18n/locales/en/app.json                  |  21 ++
 packages/i18n/locales/es/app.json                  |  21 ++
 packages/i18n/locales/fr/app.json                  |  21 ++
 packages/i18n/locales/ko/app.json                  |  21 ++
 packages/i18n/locales/zh-CN/app.json               |  21 ++
 packages/i18n/locales/zh-TW/app.json               |  21 ++
 19 files changed, 1354 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-7146
Fusion-Task-Lineage: f75e40a5-9010-45d5-a729-132e547887d7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 17:46:17 -07:00
gsxdsm
368f1e0e45 FN-7117: show all token models in Command Center
Show full-fidelity model token breakdowns in Command Center while keeping Overview compact.

- Remove the Tokens detail chart cap so bars, pies, and tables include every analytics model bucket.
- Keep Overview model summaries explicitly limited to the top consumers with a named cap.
- Add dashboard coverage and docs for full Tokens attribution versus Overview summaries.
- Add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/fn-7117-tokens-by-model.md              |  7 ++
 docs/dashboard-guide.md                            |  5 +-
 .../components/command-center/CommandCenter.tsx    |  8 ++-
 .../__tests__/CommandCenter.test.tsx               | 78 +++++++++++++++++++++-
 .../components/command-center/areas/TokensArea.tsx | 38 ++++++-----
 .../areas/__tests__/TokensArea.test.tsx            | 68 +++++++++++++++++++
 6 files changed, 182 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-7117

Fusion-Task-Lineage: 7bf4c090-1054-40d0-97bf-e0e495077af5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-27 10:34:15 -07:00
gsxdsm
0ddfe9a422 FN-7084: add concurrency save confirmations
Require explicit confirmation before Command Center concurrency sliders persist live capacity changes.

- Add confirmation flows for global and project concurrency sliders after debounce settles.
- Revert pending slider values on cancel, Escape, or backdrop dismissal without saving.
- Cover single, batched, no-op, failure, and dismissal paths in Command Center control tests.
- Document the confirmation behavior and add a published package changeset.

Files changed:
 .changeset/FN-7084-concurrency-confirm.md          |   7 +
 docs/dashboard-guide.md                            |   3 +-
 .../command-center/CommandCenterControls.tsx       | 169 ++++++++++++++---
 .../__tests__/CommandCenterControls.test.tsx       | 203 +++++++++++++++++----
 4 files changed, 323 insertions(+), 59 deletions(-)

Fusion-Task-Id: FN-7084

Fusion-Task-Lineage: f1ebe1f7-f570-4bcb-9dad-7c8f03808d54

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-06-26 18:01:21 -07:00
gsxdsm
93b01c8ea9 FN-7076: show Command Center concurrency utilization
Surface Command Center concurrency utilization beside the editable caps.

- Add loaded-only running-agent readouts for global and current-project concurrency.
- Render clamped current-use markers on the global and project max-concurrent sliders without intercepting drags.
- Cover loaded, zero, unavailable, over-subscribed, and persistence behavior in Command Center tests.
- Document the utilization indicators and add a release changeset.

Files changed:
 .../fn-7076-command-center-concurrency-counts.md   |   7 ++
 docs/dashboard-guide.md                            |   3 +-
 .../command-center/CommandCenterControls.css       |  22 ++++
 .../command-center/CommandCenterControls.tsx       | 103 ++++++++++++++-----
 .../__tests__/CommandCenterControls.test.tsx       | 111 +++++++++++++++++++++
 5 files changed, 219 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-7076

Fusion-Task-Lineage: 540a57aa-a31b-4a57-aff6-47b373713ab3
2026-06-26 14:38:12 -07:00
gsxdsm
4f01c4dba1 FN-7075: backfill session models for token analytics
Backfill resolved pi session models so token analytics can show every model bucket.\n\n- Mirror explicit model overrides onto sessions that do not expose a model snapshot.\n- Cover multi-model token grouping totals and Command Center pie/table rendering.\n- Add a patch changeset for the dashboard token breakdown fix.\n\nFiles changed:\n .changeset/tidy-token-model-buckets.md             |  7 ++++++\n .../core/src/__tests__/token-analytics.test.ts     |  5 ++++\n .../areas/__tests__/TokensArea.test.tsx            |  5 ++++\n .../src/__tests__/pi-create-fn-agent.test.ts       | 28 ++++++++++++++++++++++\n packages/engine/src/pi.ts                          | 10 +++++++-\n 5 files changed, 54 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-7075

Fusion-Task-Lineage: 5f026435-5c3c-4e83-aab4-c1d7a487685a
2026-06-26 14:22:13 -07:00
gsxdsm
98a5052b65 FN-6706: add signal connector incident ingestion
Connect external signal ingestion routes to Command Center incident analytics.\n\n- Add connector status reporting and incident upsert/resolution support for webhook, Sentry, Datadog, and PagerDuty sources.\n- Move signal aggregation through shared activity analytics and expose connector-aware empty states in Command Center.\n- Document connector setup, settings, and dashboard behavior with a published changeset.\n- Extend route, analytics, and Command Center UI tests for scoped signal data and configured-but-quiet connectors.\n\nFiles changed:\n .changeset/fn-6706-signal-connectors.md            |   7 +\n AGENTS.md                                          |   1 +\n docs/dashboard-guide.md                            |   4 +-\n docs/settings-reference.md                         |  16 +\n docs/signals-connectors.md                         | 140 ++++++++\n .../core/src/__tests__/signals-analytics.test.ts   |  37 ++-\n packages/core/src/activity-analytics.ts            | 185 ++++++++++-\n packages/core/src/index.ts                         |  11 +-\n packages/core/src/signals-analytics.ts             | 209 +-----------\n .../command-center/areas/SignalsArea.tsx           |  47 ++-\n .../areas/__tests__/areas.github-signals.test.tsx  | 120 +++++--\n .../command-center/areas/__tests__/areas.test.tsx  |   3 +-\n .../register-command-center-routes.test.ts         |  72 +++-\n .../src/__tests__/register-signal-routes.test.ts   | 369 ++++++++++++++++++++-\n .../src/routes/register-command-center-routes.ts   |  29 +-\n .../dashboard/src/routes/register-signal-routes.ts |  55 +++\n packages/dashboard/src/signal-source.ts            |   8 +\n packages/dashboard/src/signal-sources/datadog.ts   |   8 +\n packages/dashboard/src/signal-sources/pagerduty.ts |  14 +-\n packages/dashboard/src/signal-sources/sentry.ts    |  19 +-\n packages/dashboard/src/signal-sources/webhook.ts   |   8 +\n 21 files changed, 1094 insertions(+), 268 deletions(-)

Fusion-Task-Id: FN-6706

Fusion-Task-Lineage: 09003e9b-481b-4393-926b-44907d13bcf9
2026-06-26 00:28:31 -07:00
gsxdsm
9bd0853667 FN-7044: split Command Center area tests
Split the oversized Command Center area test suite into focused files while preserving shared fixtures and coverage.

- Extract shared date ranges, fixtures, and helpers into areas.test-harness.tsx.
- Move GitHub and Signals area assertions into a dedicated sibling suite.
- Keep the remaining areas.test.tsx below the 2000-line cap with existing coverage intact.

Files changed:
 .../areas/__tests__/areas.github-signals.test.tsx  | 406 +++++++++++++
 .../areas/__tests__/areas.test-harness.tsx         | 302 ++++++++++
 .../command-center/areas/__tests__/areas.test.tsx  | 648 +--------------------
 3 files changed, 730 insertions(+), 626 deletions(-)

Fusion-Task-Id: FN-7044

Fusion-Task-Lineage: 63886ec9-e9c3-410e-bbc6-c5116cddb168
2026-06-25 23:34:08 -07:00
gsxdsm
9a2709dde9 FN-6969: show provider icons beside Command Center models
Show inferred provider icons beside model names across Command Center bar and table surfaces.

- Add dashboard-side provider-icon inference for model/provider strings.
- Render provider icons on Command Center model bar rows and token table rows while keeping pie chart labels text-only.
- Cover overview, token, and ecosystem model-icon surfaces with tests and add a changeset.

Files changed:
 .changeset/fn-6969-provider-icons.md               |   7 ++
 .../components/command-center/CommandCenter.tsx    |  15 ++-
 .../__tests__/CommandCenter.test.tsx               |  33 ++++++-
 .../command-center/areas/EcosystemArea.tsx         |  15 ++-
 .../components/command-center/areas/TokensArea.tsx |  37 +++++++-
 .../areas/__tests__/TokensArea.test.tsx            | 105 +++++++++++++++++++++
 .../command-center/areas/__tests__/areas.test.tsx  |  42 ++++++++-
 .../app/components/command-center/charts/Bar.tsx   |  25 ++++-
 .../components/command-center/charts/charts.css    |  42 +++++++++
 .../app/utils/__tests__/providerIconKey.test.ts    |  32 +++++++
 packages/dashboard/app/utils/providerIconKey.ts    |  45 +++++++++
 11 files changed, 377 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-6969

Fusion-Task-Lineage: 6caf8864-1ecc-46e3-b7fa-bfa8e9a70aaa
2026-06-25 23:34:07 -07:00
gsxdsm
1ebb518698 fix(review): resolve PR feedback on global concurrency hook
- Double-commit race: null pendingValueRef synchronously at commit() start
  so the close-flush + unmount-cleanup guards can't both fire and send a
  duplicate PUT for the same value.
- Clamp ceiling: clamp setValue against max(SLIDER_BASE_MAX, currentValue)
  instead of Number(raw) (which had no effective upper bound for
  programmatic callers).
- Out-of-band staleness: force-revalidate on each activate so a Settings-modal
  save (which writes globalMaxConcurrent directly, bypassing this store) is
  reflected when a slider surface reopens.
- Load-error label: add an explicit error branch in both EngineControlMenu
  and CommandCenterControls so a failed initial load shows "Load failed"
  instead of "Ready" while the slider is disabled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 23:05:56 -07:00
gsxdsm
1d860ec310 feat: global concurrency slider (footer + dashboard) and scoped settings
Add a "Global Max Concurrent" slider to the footer engine menu and the
Command Center Concurrency card, and group the Scheduling settings by
Global vs Project scope so the global cap isn't mistaken for a per-project
setting (clearer on mobile).

Both sliders are backed by a single shared `useGlobalConcurrency` hook
(module-level store) so they read/write one source of truth and revalidate
after every PUT /api/global-concurrency — fixing the last-writer-wins and
stale-clobber races a per-component cache would cause. The hook treats a
fetch error as non-interactive (slider disabled, not stuck at 1), surfaces
a save-state indicator, and flushes a pending edit on menu close / unmount
so a quick drag-then-dismiss is never silently dropped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 22:19:24 -07:00
gsxdsm
45727f1459 FN-7019: fix Command Center range filtering
Command Center analytics now honor picker presets and open-ended date bounds.\n\n- Serialize All time with an explicit upper bound and preserve one-sided custom/preset query params.\n- Resolve server analytics ranges as open windows for from-only and to-only requests instead of defaulting them away.\n- Cover picker query serialization and range-consuming Command Center endpoints with regression tests.\n- Document the restored picker contract and add a patch changeset.\n\nFiles changed:\n .changeset/fn-7019-command-center-range.md         |  7 ++\n docs/dashboard-guide.md                            |  3 +-\n .../components/command-center/DateRangePicker.tsx  | 12 ++-\n .../command-center/areas/__tests__/areas.test.tsx  | 54 ++++++++++++-\n .../components/command-center/areas/areaShared.ts  |  8 +-\n .../register-command-center-routes.test.ts         | 92 +++++++++++++++++++++-\n .../src/routes/register-command-center-routes.ts   | 28 ++++---\n 7 files changed, 183 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-7019

Fusion-Task-Lineage: 327f8f45-8ad8-4103-8cc4-efcf2af6a73a
2026-06-25 19:57:49 -07:00
gsxdsm
90c0e9936e FN-7009: update dashboard tests for current labels
Refresh dashboard test expectations so they follow current project setup and theme metadata.

- Assert setup wizard registration payloads include workspace and task-prefix fields.
- Resolve default theme assertions through shared theme metadata instead of hardcoded labels.
- Update Command Center theme dropdown coverage to use the current default theme label.

Files changed:
 .../app/components/__tests__/SetupWizardModal.test.tsx   | 16 +++++++++-------
 .../app/components/__tests__/ThemeSelector.test.tsx      | 11 ++++++-----
 .../__tests__/CommandCenterControls.test.tsx             | 12 +++++++-----
 3 files changed, 22 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-7009
Fusion-Task-Lineage: 1255f1b5-b63d-4366-afe6-5d72ca15cb1a
2026-06-25 19:35:04 -07:00
gsxdsm
b293525751 fix(dashboard): repair CSS token/contrast regressions and stale tests
Fixes ~19 deterministic dashboard test failures pre-existing on origin/main
(non-blocking full-suite lane). Mix of real product fixes and stale-test
reconciliation; no appeasement (no widened timeouts, skips, or weakened
assertions).

Product CSS fixes (real regressions the guards caught):
- Info toast contrast: shadcn-custom light theme had white-on-#0284c7 (4.10,
  below WCAG AA 4.5); enrolled it in the light-mode dark-text correction.
- 27 undefined CSS token references (typos/foreign tokens) renamed to canonical
  defined tokens; defined the genuinely-intended --border-strong and
  --right-dock-min/max-width.
- Raw rgba() box-shadow fallback tokenized to color-mix; dev-server mobile
  header split into its own responsive rule.

Stale tests reconciled with intentional product changes:
- workflowColumns graduated to always-on (board-workflows unit test).
- workflow optional-steps source re-pointed to v2 optional-group nodes.
- command-center pricing docs (one doc gap filled: openai-codex:* keying).
- SetupWizardModal added detectWorkspace + workspaceMode/taskPrefix payload.
- board-mobile listener-count assertion → unmount no-throw behavior.
- CommandCenterControls / ThemeSelector: default theme relabeled "Fusion Legacy".
- ProjectOverview / WorkflowNodeEditor: header divider intentionally removed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 14:37:52 -07:00
gsxdsm
4880a0f857 FN-6970: fix live token usage refreshes
Keep Command Center token usage surfaces mounted and updated during live analytics polling.

- Preserve existing analytics data while background polls are in flight so token surfaces revalidate without disappearing.
- Add live refresh intervals for Overview and Tokens token-usage data.
- Cover in-place token stat, chart, and model-row updates with Command Center and area tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6970-command-center-token-live.md    |   7 ++
 .../components/command-center/CommandCenter.tsx    |   4 +
 .../__tests__/CommandCenter.test.tsx               |  81 +++++++++++++--
 .../components/command-center/areas/AreaShell.tsx  |   3 +
 .../components/command-center/areas/TokensArea.tsx |   4 +
 .../command-center/areas/__tests__/areas.test.tsx  | 111 +++++++++++++++++++--
 .../command-center/areas/useAnalyticsArea.ts       |  12 ++-
 7 files changed, 208 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-6970

Fusion-Task-Lineage: 670bb5ac-bc7d-47d8-abed-ef6748292cc6
2026-06-25 12:25:14 -07:00
gsxdsm
41f3b045ea FN-6920: add LOC backfill controls to productivity
Adds an explicit Productivity-area workflow for previewing and applying historical LOC diff-stat backfills.\n\n- Add preview and confirmed apply actions for commit-association LOC backfills in Command Center Productivity.\n- Surface dry-run/applied report counts, pending, and error states while preserving unavailable LOC sentinels.\n- Reuse tokenized responsive backfill styling and add localized strings, docs, regression coverage, and a patch changeset.\n\nFiles changed:\n .changeset/loc-backfill-command-center.md          |   5 +\n docs/dashboard-guide.md                            |   2 +-\n .../components/command-center/CommandCenter.css    |  21 ++-\n .../command-center/areas/ProductivityArea.tsx      | 142 ++++++++++++++-\n .../command-center/areas/__tests__/areas.test.tsx  | 200 +++++++++++++++++++++\n packages/i18n/locales/en/app.json                  |  15 ++\n packages/i18n/locales/es/app.json                  |  15 ++\n packages/i18n/locales/fr/app.json                  |  15 ++\n packages/i18n/locales/ko/app.json                  |  15 ++\n packages/i18n/locales/zh-CN/app.json               |  15 ++\n packages/i18n/locales/zh-TW/app.json               |  15 ++\n packages/i18n/src/resources.d.ts                   |  29 ++-\n 12 files changed, 476 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6920

Fusion-Task-Lineage: 2e81ec44-46f3-49a9-ba4a-a4a72a38a6e8
2026-06-23 12:17:04 -07:00
gsxdsm
d06e31693e fix(command-center): keep Recharts cards from blanking
Measure Command Center Recharts wrappers directly and keep usable fallback dimensions until lazy dashboard cards report a drawable box. This restores line charts such as Daily activity, Tokens trend, and Activity trend, plus model-share pies that used the same sizing path.
2026-06-23 09:12:44 -07:00
gsxdsm
f9043d733e fix(dashboard): polish workflow and chrome defaults 2026-06-22 19:48:50 -07:00
gsxdsm
4fd8d444fb fix(dashboard): polish app chrome and workflow defaults 2026-06-22 18:21:06 -07:00
gsxdsm
95f48f9aae feat(dashboard): canonical ViewHeader across left-sidebar views (consistent color/sizing/divider/buttons)
ViewHeader.css defaults now carry the canonical header: space-lg/space-xl padding, surface bg, 1px border-bottom, icon var(--todo), title 1.125rem/600, actions pinned right (margin-left:auto). Removed now-redundant per-view overrides (Agents, Documents doubled divider); converted Secrets from a bespoke header to ViewHeader (Lock icon + Refresh/Add as btn btn-sm); aligned Command Center title metrics. Right-dock/pop-out Secrets hide-selectors retargeted so the dock is unchanged. Chat/Todo (no view title row) and AgentDetail (per-entity header) intentionally left bespoke.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 11:36:20 -07:00
gsxdsm
e9a0b72747 feat(dashboard): Overview drops Active-nodes/Sessions cards, stat numbers auto-fit large, more engine-button spacing
- Remove the Active nodes and Sessions stat cards (data still feeds the activity sparkline). Remaining cards reflow via auto-fill.
- Stat value font scales up to fill the card (container-query cqi clamp, nowrap+overflow:hidden+min-width:0 so long values shrink to fit, never overflow).
- Add space-lg above the View Board/View Agents row so it's balanced below the Start/Stop AI Engine button.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 10:26:14 -07:00
gsxdsm
13bd2e473a feat(dashboard): list-header one-row, file pop-out opens current file, taller overview buttons; fix redesign test suite
- List view header: count + Bulk Edit + View options + New Task on one compact btn-sm row; view-options shrunk; count compacted/secondary.
- File browser pop-out now opens the file you're currently viewing — current path shared via scoped storage (kb-dashboard-dock-files-current) with cross-instance live-sync.
- Dashboard Overview: View Board / View Agents are now btn btn-secondary (taller, centered) to match the Stop AI Engine button.
- Test suite: fix ~40 stale assertions from the redesign (App nav moved to LeftSidebarNav, Import Tasks embedded, removed Todos in-view header, SkillsView shared ViewHeader, gm embedded keyboard rule, ThemeSelector option drift) — test-only, nothing weakened. Pre-existing board-mobile InlineCreateCard failure left as-is.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 09:47:27 -07:00
gsxdsm
62a96e3712 feat(dashboard): floating windows (pop-out task detail, floating New Task), consolidate AI engine row
- FloatingWindow: reusable non-blocking, draggable, smoothly-resizable window with focus-to-front z-index so multiple coexist (file browser + terminal + several task details open and movable at once).
- Task detail gains a Pop out (Maximize2) button in List + Board; App tracks multiple open floating task-detail windows (dedupe by id).
- New Task dialog is now a floating, draggable, resizable, non-blocking window; all quick-add controls visible without expanding (TaskForm forceMoreOptionsOpen).
- Dashboard Overview: removed the duplicate AI Engine row — View Board / View Agents moved into the first instance (the AI engine card, under Stop AI Engine).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 05:10:12 -07:00
gsxdsm
cc2753c8a2 fix(dashboard): resizers, overlaps, dock pop-out, dedup refactors, live tweaks
Resize fixes (root causes):
- List view: clamp ResizeObserver collapsed the pane to min when container measured 0; harden + rewrite drag to pointer events with teardown.
- Mailbox: split was a CSS grid whose auto track ignored the inline width; switch to flex (pane flex:0 0 auto) + pointer-event drag. List + mailbox panes narrower mins.

Layout fixes:
- Memory Working-Memory overlap: real cause was a cascade collision (MemoryView imports SettingsModal.css, whose .memory-editor-section flex:1 won, overflowing the fixed-height editor onto siblings). Scope MemoryView rules under .memory-working-tab + intrinsic height.
- Agent detail header no longer overlaps (flex-wrap; identity flex:1 1 auto).
- Git Manager dock tabs wrap so all sections are visible (no single-tab swipe).
- Terminal shortcuts+arrows on one line; Skills full width; Skills refresh + Add Goal button heights matched; mailbox divider matches chat divider; Todos in-view header removed.

Features:
- Right-dock pop-out is now a floating, draggable, smoothly resizable, non-blocking window (transparent overlay, interact behind it).
- Command Center Overview gains an always-visible 'AI Engine' panel with View Board / View Agents.
- Default load lands on board, never the Dashboard.

Refactors (behavior-preserving):
- Extract useBoardWorkflows hook (Board + Planning dedup).
- Shared useEmbeddedPresentation hook collapses the 7-way embedded copy-paste; add embedded-presentation test coverage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 04:18:35 -07:00
gsxdsm
4850e4309e fix(dashboard): apply code-review fixes + live UI tweaks
Code review (8 reviewers) fixes:
- P1: embedded board task-detail now passes onRequestClose so delete/merge/retry dismiss the panel (no ghost task).
- P1: RightDock + TerminalModal drag handlers add pointercancel + unmount teardown (no leaked document listeners / rAF / stuck userSelect); remove dead onOpenChange prop.
- Planning slot DOM-poll interval now caps (self-cancels on mobile); heartbeat slider persist debounced + mounted-guarded.
- Cleanup: remove dead ViewHeader-migration CSS (Skills/Insights), extract shared GithubIcon, move Activity Log embedded CSS to ActivityLogModal.css, FNXC date-format fixes, AGENTS lazy-view note.
- Update stale RightDock roster tests + LeftSidebarNav 'Compound Eng' test to current behavior.

Live UI tweaks:
- Default load lands on board, never the Command Center Dashboard.
- View Board/View Agents moved to the Command Center Overview tab (under the live-activity strip).
- Heartbeat card full-width with spaced, wrapping controls.
- Dev Server panel scrolls in the dock; ChatView right-pane title takes the full line.
- Files pop-out renders deterministic left-right two-pane.
- Mailbox list pane narrower + narrow by default; Add Goal button height matches the Compound stage button; Memory Working-Memory tab no longer overlaps; Skills view fills full width.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 03:57:10 -07:00
gsxdsm
8dd9697468 FN-6714: backfill commit-association diff stats
Backfill historical commit-association diff stats so Command Center LOC can use real persisted git data.

- Add a core backfill API that inspects local git commits for associations with missing additions/deletions and supports dry-run reporting.
- Expose an authenticated Command Center productivity backfill endpoint and route it through the legacy API shim.
- Keep productivity LOC/hour sentinels safe for legacy payloads and document the backfill contract.
- Cover the backfill path, auth gate, productivity analytics, and route registration with tests.

Files changed:
 .changeset/fn-6714-command-center-loc-backfill.md  |   5 +
 docs/architecture.md                               |   4 +-
 docs/storage.md                                    |   4 +-
 ...mmit-association-diff-backfill.real-git.test.ts | 140 +++++++++++++++++++++
 packages/core/src/index.ts                         |   1 +
 packages/core/src/store.ts                         |  76 ++++++++++-
 packages/core/src/types.ts                         |   9 ++
 packages/dashboard/app/api/legacy.ts               |  16 +++
 .../command-center/areas/ProductivityArea.tsx      |   8 +-
 .../register-command-center-routes.auth.test.ts    |  48 ++++---
 .../register-command-center-routes.test.ts         |  49 +++++++-
 .../src/routes/register-command-center-routes.ts   |  20 +++
 12 files changed, 354 insertions(+), 26 deletions(-)

Fusion-Task-Id: FN-6714

Fusion-Task-Lineage: 657c7789-bbe4-4611-abca-127af05b0300
2026-06-22 03:42:24 -07:00
gsxdsm
3b4daf3e66 feat(dashboard): place View Board/View Agents under the AI engine button
Move the Command Center AI-engine card's View Board / View Agents shortcuts to sit directly under the engine toggle button (above the heartbeat-speed slider) so they read as engine-card navigation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 03:34:16 -07:00
gsxdsm
533d10095d feat(dashboard): finish ViewHeader rollout + normalize content padding
- Migrate Insights, Dev Server, Todos, Pull Requests to the shared ViewHeader.
- Fix doubled top padding (ViewHeader already pads top) across Documents/Agents/Mailbox/Missions content areas.
- Nudge embedded-view headers to the shared spec (CommandCenter icon 20; WorkflowNodeEditor icon+1.125rem title+space-lg; Settings embedded icon). ChatView intentionally headerless.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 03:34:16 -07:00
gsxdsm
efd659be0e feat(dashboard): Command Center Team card - View Board/Agents buttons + heartbeat multiplier slider
- TeamArea heartbeat card gains a heartbeat-multiplier slider (mirrors AgentsView: same range/step/presets, persisted via updateSettings) and a View Board / View Agents nav row (onChangeView threaded from CommandCenter <- App handleChangeTaskView).
- Update CC/TeamArea test mocks to export fetchSettings/updateSettings (220 pass).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 03:34:16 -07:00
gsxdsm
6b59c5bbde FN-6885: enable org chart drag panning
Enable drag panning for the Command Center Team org chart while preserving node clicks and touch scrolling.

- Add pointer-driven mouse/pen panning with a movement threshold and click suppression after drag gestures.
- Style the draggable org chart viewport with grab/grabbing cursor states.
- Cover panning behavior, click preservation, drag click suppression, and touch pointer passthrough in TeamArea tests.
- Document drag-to-pan support in the dashboard guide.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 .../components/command-center/areas/TeamArea.tsx   |  82 +++++++++-
 .../areas/__tests__/TeamArea.orgchart-pan.test.tsx | 172 +++++++++++++++++++++
 .../app/components/command-center/areas/areas.css  |  10 ++
 4 files changed, 263 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6885

Fusion-Task-Lineage: d0749fc9-cea4-4bc4-b457-b93ddd2a3613
2026-06-21 18:13:56 -07:00
gsxdsm
31dd7429a3 FN-6883: fill Command Center line charts
Restore Command Center Activity line charts so their plotted geometry fills the rendered chart box without distorting point markers.

- Measure the rendered SVG dimensions and use them as the line chart viewBox so paths span wide desktop and mobile layouts.
- Preserve safe bounded geometry for zero, single-point, NaN, and resized chart states.
- Update Command Center chart tests and dashboard rendering guidance for the fill-width/circular-marker invariant.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 .../command-center/__tests__/charts.test.tsx       | 71 ++++++++++++++---
 .../command-center/areas/__tests__/areas.test.tsx  | 35 ++++++---
 .../components/command-center/charts/LineChart.tsx | 89 ++++++++++++++++++----
 .../components/command-center/charts/charts.css    |  4 +-
 5 files changed, 164 insertions(+), 37 deletions(-)

Fusion-Task-Id: FN-6883

Fusion-Task-Lineage: 71c19a62-1a76-455d-92cb-9c22d0613881
2026-06-21 18:02:49 -07:00
gsxdsm
69b8178844 FN-6884: expand Team org chart connectors
Make the Command Center Team org chart easier to scan with taller scrolling and visible parent-child connectors.

- Increase desktop and mobile Team org chart scroll heights.
- Draw horizontal-mode parent drops, sibling rails, and child connector stubs while preserving vertical connector styling.
- Add CSS invariant coverage for connector rules, viewport heights, and design-token usage.
- Document the taller connected Team org chart behavior.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 .../CommandCenter.orgchart-connectors.css.test.ts  | 119 +++++++++++++++++++++
 .../app/components/command-center/areas/areas.css  |  38 ++++++-
 3 files changed, 156 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6884

Fusion-Task-Lineage: 0a68f0a1-3303-4730-b3bd-788cc6218c0a
2026-06-21 17:19:03 -07:00
gsxdsm
58f758842b FN-6816: add shadcn custom color picker
Add a Shadcn Custom theme flow for editing and applying sanitized dashboard color tokens.

- Add a lazy-loaded Shadcn color picker modal with token defaults, reset controls, and validation tests.
- Persist sanitized custom color overrides through settings, pre-hydration theme bootstrapping, and Command Center/theme dropdown surfaces.
- Register the Shadcn Custom theme option in core types, schema, docs, theme CSS, and release notes.

Files changed:
 .changeset/fn-6816-shadcn-custom-colors.md         |   5 +
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   3 +-
 packages/core/src/settings-schema.ts               |   1 +
 packages/core/src/types.ts                         |   4 +
 packages/dashboard/app/App.tsx                     |   7 +-
 packages/dashboard/app/components/AppModals.tsx    |   6 +
 .../dashboard/app/components/SettingsModal.tsx     |  12 ++
 .../dashboard/app/components/ShadcnColorPicker.css | 101 ++++++++++++++
 .../dashboard/app/components/ShadcnColorPicker.tsx |  95 +++++++++++++
 .../dashboard/app/components/ThemeDropdown.tsx     |  23 +++-
 .../dashboard/app/components/ThemeSelector.css     |  14 ++
 .../dashboard/app/components/ThemeSelector.tsx     |  19 ++-
 .../__tests__/ShadcnColorPicker.test.tsx           |  50 +++++++
 .../components/__tests__/ThemeDropdown.test.tsx    |  19 +++
 .../components/__tests__/ThemeSelector.test.tsx    |  64 +++++++++
 .../__tests__/shadcnCustomColors.test.ts           |  52 ++++++++
 .../components/command-center/CommandCenter.tsx    |  15 +++
 .../command-center/CommandCenterControls.tsx       |   8 +-
 .../settings/sections/AppearanceSection.tsx        |   8 +-
 .../dashboard/app/components/shadcnCustomColors.ts |  80 +++++++++++
 packages/dashboard/app/components/themeOptions.ts  |   1 +
 .../dashboard/app/hooks/__tests__/useTheme.test.ts | 108 +++++++++++++++
 packages/dashboard/app/hooks/useTheme.ts           |  91 ++++++++++++-
 packages/dashboard/app/index.html                  |  19 ++-
 packages/dashboard/app/public/theme-data.css       | 148 ++++++++++++++++++++-
 26 files changed, 938 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-6816

Fusion-Task-Lineage: f16baaa9-16f5-4526-8159-9a1ceff4f807
2026-06-21 16:13:54 -07:00
gsxdsm
eb3477aba4 FN-6835: add system stats node selection
Add Command Center controls for inspecting local or remote node system telemetry.

- add a System area node selector with local defaults, remote stats loading, and per-node sample resets
- expose proxied node system-stats fetching and route local node requests through the shared stats builder
- route Vitest kill requests through node-aware proxy plumbing and cover node stats behavior with tests
- add localized node selector copy, docs, and a published package changeset

Files changed:
 .changeset/fuzzy-nodes-watch.md                    |   5 +
 docs/dashboard-guide.md                            |   4 +-
 packages/dashboard/app/api/legacy.ts               |  14 +-
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |   2 +
 .../__tests__/CommandCenter.tablet-layout.test.tsx |   2 +
 .../__tests__/CommandCenter.test.tsx               |   1 +
 .../__tests__/SystemStatsArea.test.tsx             | 160 +++++++++++++++++
 .../command-center/areas/SystemStatsArea.css       |  13 ++
 .../command-center/areas/SystemStatsArea.tsx       |  72 +++++++-
 .../dashboard/src/__tests__/routes-system.test.ts  | 122 +++++++++++++
 packages/dashboard/src/routes.ts                   | 190 +++++++++++++--------
 packages/i18n/locales/en/app.json                  |  10 ++
 packages/i18n/locales/es/app.json                  |  10 ++
 packages/i18n/locales/fr/app.json                  |  10 ++
 packages/i18n/locales/ko/app.json                  |  10 ++
 packages/i18n/locales/zh-CN/app.json               |  10 ++
 packages/i18n/locales/zh-TW/app.json               |  10 ++
 17 files changed, 562 insertions(+), 83 deletions(-)

Fusion-Task-Id: FN-6835

Fusion-Task-Lineage: 8f9a047b-78d0-477e-824e-f7592966cdc0
2026-06-21 13:25:41 -07:00
gsxdsm
ca08828813 FN-6855: raise Command Center concurrency sliders to 50
Command Center scheduler controls now expose a default slider ceiling of 50 without hiding higher persisted values.

- Set max concurrent tasks, max triage concurrency, and max worktrees sliders to default to a maximum of 50.
- Preserve dynamic slider maxima for persisted settings above 50 so existing out-of-range values remain visible.
- Add regression coverage for persisting 50, in-range slider maxima, and above-range readouts.

Files changed:
 .../command-center/CommandCenterControls.tsx       |  9 ++-
 .../__tests__/CommandCenterControls.test.tsx       | 71 +++++++++++++++++++---
 2 files changed, 67 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6855

Fusion-Task-Lineage: 780d5322-5f3c-4503-9ec7-17716e966961
2026-06-21 13:25:41 -07:00
gsxdsm
dcf1ab1164 FN-6870: render wide team org charts horizontally
Render the Command Center Team org chart horizontally when its container has room.

- Measure the Team org-chart viewport and reuse the shared Agents org-chart layout resolver.
- Add horizontal and vertical data-layout styling for Team org-chart roots and children.
- Cover wide, narrow, unmeasured, loading, error, empty, and single-root Team org-chart states.
- Document the Team org-chart horizontal layout behavior.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 .../components/command-center/areas/TeamArea.tsx   | 38 ++++++++++-
 .../command-center/areas/__tests__/areas.test.tsx  | 77 ++++++++++++++++++++++
 .../app/components/command-center/areas/areas.css  | 36 +++++++++-
 4 files changed, 149 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6870

Fusion-Task-Lineage: b023788a-a353-4b10-ad68-a661e72e5be6
2026-06-21 13:25:41 -07:00
gsxdsm
f13aaa1a99 FN-6722: expose resolved GitHub issues
Expose resolved GitHub issue details in Command Center analytics and exports.

- Add resolved issue rows to local GitHub issue analytics with exact-vs-approximate timestamp metadata.
- Render a resolved issues table in the Command Center GitHub area without empty links when issue URLs are missing.
- Include resolved issue details in CSV export, route coverage, dashboard tests, docs, and the release changeset.
- Quarantine the unrelated dashboard dev-server process timer flake observed during workspace verification under the deletion ratchet.

Files changed:
 ...fn-6722-command-center-resolved-issue-detail.md |   5 +
 docs/dashboard-guide.md                            |   3 +-
 .../src/__tests__/github-issue-analytics.test.ts   | 109 +++++++++++++++++++--
 packages/core/src/github-issue-analytics.ts        |  45 ++++++++-
 packages/core/src/index.ts                         |   1 +
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |   4 +-
 .../__tests__/CommandCenter.test.tsx               |   1 +
 .../components/command-center/areas/GithubArea.tsx |  67 +++++++++++++
 .../command-center/areas/__tests__/areas.test.tsx  |  55 +++++++++++
 .../register-command-center-routes.test.ts         |  61 +++++++++++-
 packages/dashboard/src/command-center-csv.ts       |  39 +++++++-
 packages/dashboard/vitest.config.ts                |   7 +-
 scripts/lib/test-quarantine.json                   |   5 +
 13 files changed, 382 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-6722
Fusion-Task-Lineage: 9fcbd8c2-f1bc-4b86-b5f5-593e5fd0e675
2026-06-21 09:00:40 -07:00
gsxdsm
3b61ac3d23 fix: make loading spinners actually spin across the dashboard
Many loading states rendered bare "Loading…" text with no spinner
element, and a couple rendered an unstyled `loading-spinner` div with no
matching CSS (invisible). The global spin animation was never broken —
it rotates in Chromium and WebKit — so prior transform-box edits chased
a non-bug, validated only by a string-matching CSS test.

Add a shared <LoadingSpinner> (self-contained animated SVG, no
lucide-react import so it survives partial test mocks) and adopt it
across ~47 loading placeholders so every loading state shows a
consistent animated spinner. Includes a component test that asserts the
svg carries the animate-spin utility.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 03:53:43 -07:00
gsxdsm
5d3f63e875 FN-6818: keep Activity line markers circular
Use uniform SVG scaling so Command Center Activity line charts preserve proportional geometry.\n\n- Switch the shared hand-rolled LineChart from non-uniform stretching to centered uniform scaling.\n- Cover marker distortion invariants in chart and Activity area tests.\n- Document the Activity chart rendering invariant for desktop and mobile layouts.\n\nFiles changed:\n docs/dashboard-guide.md                            |  1 +\n .../command-center/__tests__/charts.test.tsx       | 22 ++++++++++++++++++++++\n .../command-center/areas/__tests__/areas.test.tsx  | 12 ++++++++++++\n .../components/command-center/charts/LineChart.tsx |  5 ++++-\n .../components/command-center/charts/charts.css    |  3 +++\n 5 files changed, 42 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6818

Fusion-Task-Lineage: 304dc64b-688d-42e4-ba7f-c7db16c49de9
2026-06-20 23:24:57 -07:00
gsxdsm
48e7a9d5e9 FN-6785: guard productivity metrics defaults
Productivity metrics now tolerate incomplete analytics payloads without crashing.\n\n- Default missing LOC and hours-saved metric objects to unavailable sentinels.\n- Render dash placeholders for incomplete productivity analytics payloads.\n- Add regression coverage for missing productivity metric fields.\n\nFiles changed:\n .../command-center/areas/ProductivityArea.tsx      | 13 ++++++++----\n .../command-center/areas/__tests__/areas.test.tsx  | 23 ++++++++++++++++++++++\n 2 files changed, 32 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6785

Fusion-Task-Lineage: 0600a88e-58ae-4f81-9871-c5879b49810f
2026-06-20 05:23:05 -07:00
gsxdsm
a98a0ae23e FN-6768: show actual concurrency slider values
Command Center concurrency controls now preserve persisted scheduler values and improve mobile slider handling.

- Load concurrency defaults from project settings and display persisted values without clamping the readout.
- Expand range slider maxima when existing settings exceed normal UI bounds while keeping edits bounded.
- Add mobile touch-drag affordance styling and regression coverage for actual values, overflow values, and CSS contracts.

Files changed:
 .../command-center/CommandCenterControls.css       | 26 +++++++-
 .../command-center/CommandCenterControls.tsx       | 63 +++++++++++++-----
 .../__tests__/CommandCenterControls.test.tsx       | 74 +++++++++++++++++++++-
 3 files changed, 143 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-6768

Fusion-Task-Lineage: 2508c2ab-9e57-4d29-934c-828a015bdfe1
2026-06-20 03:08:19 -07:00
gsxdsm
9483670d6a FN-6755: move org chart and heartbeat controls to Team
Relocate Command Center team operations out of Overview and into the Team section.

- Render the agent org chart and heartbeat pause/resume controls above Team analytics.
- Keep Overview controls focused on global engine, concurrency, and theme settings.
- Add Team-specific styling and tests for org chart, heartbeat, and responsive placement.
- Update Command Center documentation to describe the new Team operations layout.

Files changed:
 docs/dashboard-guide.md                            |   5 +-
 .../components/command-center/CommandCenter.tsx    |   2 +-
 .../command-center/CommandCenterControls.css       |  61 ------
 .../command-center/CommandCenterControls.tsx       | 188 +------------------
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |   8 +-
 .../__tests__/CommandCenter.tablet-layout.test.tsx |   2 +-
 .../__tests__/CommandCenter.test.tsx               |   4 +
 .../__tests__/CommandCenterControls.test.tsx       |  89 +--------
 .../components/command-center/areas/TeamArea.tsx   | 204 ++++++++++++++++++++-
 .../command-center/areas/__tests__/areas.test.tsx  | 123 ++++++++++++-
 .../app/components/command-center/areas/areas.css  | 181 ++++++++++++++++++
 11 files changed, 526 insertions(+), 341 deletions(-)

Fusion-Task-Id: FN-6755

Fusion-Task-Lineage: 63ceb609-f0e3-4e02-8fea-c97cfc18ccf2
2026-06-20 00:15:25 -07:00
gsxdsm
a326e8e684 FN-6717: move Nodes into Command Center
Move node management into the Command Center experience while removing the separate Nodes overlay entry points.

- Add a gated Nodes tab to Command Center and pass toast wiring through from App.
- Remove top-level header and mobile-nav Nodes overlay controls and overlay-only styling.
- Let NodesView render without a close button when embedded as a tab.
- Update navigation, lazy-load docs, mobile access, and Command Center tests for the new surface.

Files changed:
 AGENTS.md                                          |  3 +-
 packages/dashboard/app/App.tsx                     | 57 ++-------------
 .../app/__tests__/lazy-loaded-views-docs.test.ts   | 11 +--
 .../mobile-feature-access-regression.test.tsx      | 12 ++--
 packages/dashboard/app/components/Header.tsx       | 33 +--------
 packages/dashboard/app/components/MobileNavBar.tsx | 16 -----
 packages/dashboard/app/components/NodesView.css    | 37 ----------
 packages/dashboard/app/components/NodesView.tsx    | 22 +++---
 .../app/components/__tests__/Header.test.tsx       | 22 ++----
 .../app/components/__tests__/MobileNavBar.test.tsx | 22 +-----
 .../app/components/__tests__/NodesView.test.tsx    | 81 +++-------------------
 ...-merge-toggle-blank.mobile-integration.test.tsx |  1 -
 .../components/command-center/CommandCenter.tsx    | 17 ++++-
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |  2 +-
 .../__tests__/CommandCenter.tablet-layout.test.tsx |  2 +-
 .../__tests__/CommandCenter.test.tsx               | 40 ++++++++++-
 packages/dashboard/app/styles.css                  |  2 +-
 packages/i18n/locales/en/app.json                  |  1 +
 18 files changed, 106 insertions(+), 275 deletions(-)

Fusion-Task-Id: FN-6717

Fusion-Task-Lineage: 89306335-c247-4c66-8937-adfdf8c3cbb8
2026-06-19 23:16:19 -07:00
gsxdsm
f3343ca79f FN-6754: restore Command Center tablet API mocks
Restore the Command Center tablet layout test mock contract so hook refresh calls resolve cleanly.

- Export fetchConfig, fetchSettings, and updateSettings from the tablet test api mock.
- Document why the real useAppSettings hook requires the full api mock surface.
- Preserve task fixture updates for populated productivity metrics.

Files changed:
 .../command-center/__tests__/CommandCenter.mobile-scroll.test.tsx | 2 +-
 .../command-center/__tests__/CommandCenter.tablet-layout.test.tsx | 8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6754

Fusion-Task-Lineage: 5c5955e3-7b23-4fb3-baf5-4ba9dcfeef2e
2026-06-19 23:06:44 -07:00
gsxdsm
28ba1bce85 FN-6784: keep Command Center numbers on one line
Command Center token totals now shrink to fit instead of wrapping digit groups.

- Add inline-size containers around stat cards and live metrics for container-query scaling.
- Replace digit wrapping with nowrap overflow clipping and clamp-based numeric font sizes.
- Strengthen Command Center tests for exact live metric values and CSS no-wrap shrink contracts.

Files changed:
 .../app/components/command-center/CommandCenter.css   | 17 ++++++++++++-----
 .../command-center/__tests__/CommandCenter.test.tsx   |  3 ++-
 .../CommandCenter.token-validity.css.test.ts          | 19 +++++++++++++++----
 3 files changed, 29 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-6784

Fusion-Task-Lineage: dfe165f4-7304-49eb-b46b-83c0a9e2c4a3
2026-06-19 22:31:57 -07:00
gsxdsm
a3be2351d1 Fix Full Suite test failures: productivity fixtures + delete teardown race
Three failures in the non-blocking Full Suite:

- CommandCenter mobile-scroll / tablet-layout regression tests rendered with
  productivity fixtures missing the `hoursSaved` field added in FN-6721. That
  made ProductivityArea throw on `data.hoursSaved.unavailable`, an uncaught
  exception that crashed the CommandCenter render (no `command-center` testid)
  and polluted the shared worker, causing collateral QuickEntryBox failures.
  Add `hoursSaved` to both fixtures.

- github-tracking-delete route test failed intermittently with
  `ENOTEMPTY: ... rmdir '.../.fusion'` because the fire-and-forget delete
  handler can write into `.fusion` while afterEach removes the temp dir. Make
  rm tolerant via maxRetries/retryDelay.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 21:09:12 -07:00
gsxdsm
5117944371 FN-6720: add productivity task duration stats
Adds completed-task active-duration analytics to the Command Center Productivity surface.\n\n- Aggregate average, median, p90, total, and completed-task duration metrics from done tasks with recorded active time.\n- Render duration stat cards with unavailable dash sentinels and export matching CSV rows.\n- Cover analytics, dashboard, route, CSV, mobile/tablet layout, and documentation behavior.\n\nFiles changed:\n .changeset/soft-badgers-measure.md                 |   5 +\n docs/architecture.md                               |   4 +-\n docs/dashboard-guide.md                            |   2 +-\n docs/storage.md                                    |   2 +\n .../src/__tests__/productivity-analytics.test.ts   | 105 ++++++++++++++++++++-\n packages/core/src/productivity-analytics.ts        |  83 +++++++++++++++-\n .../__tests__/CommandCenter.mobile-scroll.test.tsx |  16 ++++\n .../__tests__/CommandCenter.tablet-layout.test.tsx |  19 ++++\n .../command-center/areas/ProductivityArea.tsx      |  65 ++++++++++++-\n .../command-center/areas/__tests__/areas.test.tsx  |  65 ++++++++++++-\n .../components/command-center/areas/areaShared.ts  |  12 +++\n .../src/__tests__/command-center-csv.test.ts       |   8 ++\n .../register-command-center-routes.test.ts         |  22 +++++\n packages/dashboard/src/command-center-csv.ts       |   5 +\n 14 files changed, 404 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6720

Fusion-Task-Lineage: aa0980eb-d156-4dca-b6b8-1788570c166b
2026-06-19 17:25:35 -07:00
gsxdsm
59d3eee7f4 FN-6721: estimate productivity hours saved
Estimate human hours saved from productivity LOC analytics and expose it consistently.

- Add a shared human-lines-per-hour conversion and hoursSaved summary to productivity analytics.
- Show human hours saved in the Command Center productivity area with unavailable-state handling.
- Include hoursSaved in productivity CSV exports, docs, tests, and the release changeset.

Files changed:
 .changeset/fuzzy-productivity-hours.md             |  5 ++++
 docs/architecture.md                               |  4 +--
 docs/storage.md                                    |  4 +--
 .../src/__tests__/productivity-analytics.test.ts   | 29 ++++++++++++++++------
 packages/core/src/index.ts                         |  3 ++-
 packages/core/src/productivity-analytics.ts        | 28 +++++++++++++++++++--
 .../command-center/areas/ProductivityArea.tsx      | 24 ++++++++++++++++++
 .../command-center/areas/__tests__/areas.test.tsx  |  9 ++++++-
 .../src/__tests__/command-center-csv.test.ts       | 29 +++++++++++++++++++++-
 .../register-command-center-routes.test.ts         |  1 +
 packages/dashboard/src/command-center-csv.ts       |  1 +
 11 files changed, 120 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-6721

Fusion-Task-Lineage: 80114bfc-7d7f-4659-983a-9488660e5f0f
2026-06-19 16:47:34 -07:00
gsxdsm
5145e609cc FN-6727: add Command Center operator controls
Add operator controls to the Command Center overview and reuse a shared theme dropdown.

- Add Command Center controls for org chart status, pause toggles, heartbeat, concurrency settings, and theme selection.
- Extract theme option metadata and a reusable ThemeDropdown for app-level and Command Center theme controls.
- Update localization, documentation, and dashboard tests for the new controls and mobile layout behavior.

Files changed:
 docs/dashboard-guide.md                            |   1 +
 docs/settings-reference.md                         |   6 +-
 packages/dashboard/app/App.tsx                     |   8 +-
 .../dashboard/app/components/ThemeDropdown.css     |  96 +++++
 .../dashboard/app/components/ThemeDropdown.tsx     | 175 +++++++++
 .../dashboard/app/components/ThemeSelector.tsx     |  65 +---
 .../components/__tests__/ThemeDropdown.test.tsx    |  76 ++++
 .../components/__tests__/ThemeSelector.test.tsx    |  18 +
 .../components/command-center/CommandCenter.tsx    |  52 ++-
 .../command-center/CommandCenterControls.css       | 193 ++++++++++
 .../command-center/CommandCenterControls.tsx       | 424 +++++++++++++++++++++
 .../__tests__/CommandCenter.mobile-scroll.test.tsx |  17 +
 .../__tests__/CommandCenter.test.tsx               |  26 +-
 .../__tests__/CommandCenterControls.test.tsx       | 241 ++++++++++++
 packages/dashboard/app/components/themeOptions.ts  |  70 ++++
 packages/i18n/locales/en/app.json                  |  47 +++
 16 files changed, 1442 insertions(+), 73 deletions(-)

Fusion-Task-Id: FN-6727

Fusion-Task-Lineage: bd7752cf-9f6e-4359-a5bc-d2a4b68d086b
2026-06-19 16:47:33 -07:00
gsxdsm
87f18f87ed FN-6705: add plugin activation analytics
Record plugin activation events and expose them to Command Center analytics.

- Add plugin activation persistence, aggregation helpers, and exports.
- Record load/reload activation events through the plugin loader and store APIs.
- Surface plugin activation counts in the Command Center Ecosystem area and API route.
- Cover migrations, aggregation behavior, plugin loader recording, route auth, UI rendering, and quarantined flaky suites.

Files changed:
 .changeset/fn-6705-plugin-activation-analytics.md  |   5 +
 docs/architecture.md                               |   2 +-
 docs/dashboard-guide.md                            |   2 +-
 packages/cli/vitest.config.ts                      |   8 +
 packages/core/src/__tests__/db-migrate.test.ts     |  34 ++---
 packages/core/src/__tests__/db.test.ts             |  59 ++++----
 packages/core/src/__tests__/goals-schema.test.ts   |   6 +-
 packages/core/src/__tests__/insight-store.test.ts  |  12 +-
 .../src/__tests__/merge-request-record.test.ts     |   3 +-
 packages/core/src/__tests__/mission-store.test.ts  |   6 +-
 .../__tests__/plugin-activation-analytics.test.ts  |  67 ++++++++
 packages/core/src/__tests__/plugin-loader.test.ts  | 168 ++++++++++++++++++++-
 packages/core/src/__tests__/run-audit.test.ts      |   6 +-
 .../core/src/__tests__/store-merge-queue.test.ts   |   3 +-
 .../src/__tests__/store-plugin-activations.test.ts |  52 +++++++
 packages/core/src/__tests__/task-documents.test.ts |   3 +-
 packages/core/src/db.ts                            |  35 ++++-
 packages/core/src/index.ts                         |   8 +
 packages/core/src/plugin-activation-analytics.ts   | 104 +++++++++++++
 packages/core/src/plugin-loader.ts                 |  27 ++++
 packages/core/src/store.ts                         |  24 ++-
 packages/core/src/types.ts                         |  22 +++
 packages/core/vitest.config.ts                     |  12 ++
 .../command-center/areas/EcosystemArea.tsx         |  40 +++--
 .../command-center/areas/__tests__/areas.test.tsx  |  52 ++++++-
 .../register-command-center-routes.auth.test.ts    |   1 +
 .../register-command-center-routes.test.ts         |  29 ++++
 .../src/routes/register-command-center-routes.ts   |  20 +++
 .../src/store/__tests__/roadmap-store.test.ts      |   9 +-
 scripts/boot-smoke.mjs                             |  24 ++-
 scripts/lib/test-quarantine.json                   |  55 +++++++
 31 files changed, 799 insertions(+), 99 deletions(-)

Fusion-Task-Id: FN-6705
Fusion-Task-Lineage: 12ed6227-f935-4038-bbe9-a605a054850e
2026-06-19 16:47:33 -07:00
gsxdsm
25ba732598 FN-6718: surface session counts in Command Center overview
Surface selected-range session totals in the Command Center overview stat grid.

- Add a Sessions stat card backed by existing ActivityAnalytics data.
- Keep Overview populated when sessions are the only activity and default missing session values to zero.
- Cover populated, zero, omitted, and empty Overview session states in tests.
- Document the Overview sessions metric source in the dashboard guide.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 .../components/command-center/CommandCenter.tsx    | 10 +++-
 .../__tests__/CommandCenter.test.tsx               | 53 ++++++++++++++++++++++
 3 files changed, 62 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6718

Fusion-Task-Lineage: 5e41d3dc-2f69-48e0-aceb-848cb111ea3b
2026-06-19 16:47:33 -07:00