Commit Graph

9292 Commits

Author SHA1 Message Date
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
0c0fda1d7d FN-6781: keep Command Center inline in the header
Keep Command Center anchored as an inline header destination while preserving changed-test coverage selection.

- Render Command Center immediately after Agents on tablet and desktop instead of moving it into the More views overflow.
- Update header and tablet tests plus docs to lock the stable inline navigation contract.
- Treat the quarantine data file as test-irrelevant so edits do not force gate mode and drop affected-package tests.

Files changed:
 .changeset/fix-quarantine-json-gate-mode.md        |  5 ++
 .changeset/fn-6781-command-center-header.md        |  5 ++
 CONCEPTS.md                                        |  3 +
 docs/dashboard-guide.md                            |  4 +-
 ...data-file-forces-gate-mode-dropping-coverage.md | 74 ++++++++++++++++++++++
 .../app/__tests__/tablet-header-controls.test.tsx  |  7 +-
 packages/dashboard/app/components/Header.tsx       | 51 +++++----------
 .../app/components/__tests__/Header.test.tsx       |  8 ++-
 scripts/__tests__/test-changed.test.mjs            | 20 ++++++
 scripts/test-changed.mjs                           |  8 +++
 10 files changed, 142 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-6781

Fusion-Task-Lineage: d328501d-7ec4-40ac-a140-6a491ea560e2
2026-06-19 20:59:05 -07:00
gsxdsm
60557cfea6 Merge pull request #1687 from Runfusion/fix/pause-abort-worktree-leak-storm
Fix pause-abort worktree-slot leak + retry storm; add board auto-recovery
2026-06-20 11:57:31 +08:00
gsxdsm
7f0ad62731 Update executor-recovery test for benign todo pause-abort (FN-6782)
The gate test asserted the OLD behavior — a paused graph exit in the `todo`
column parked `status:"failed"` with "operator action required". FN-6782
made the todo case benign (no failed park; benign log + cleared marker), so
split the parameterized test: `todo` now asserts the benign path (never
parked failed), `done` keeps the operator-action surfacing (log only, no
park). Full engine-core gate suite passes (644/644).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 20:53:37 -07:00
gsxdsm
82fa5375dd Merge pull request #1688 from Runfusion/fix/compound-engineering-dist-freshness
Build Compound Engineering plugin dist before its tests (fix Full Suite)
2026-06-20 11:49:31 +08:00
gsxdsm
8b5b9a75ad Build Compound Engineering plugin dist before its tests
dist-freshness.test.ts reads the plugin's compiled dist/settings.js and
dist/session/orchestrator.js to guard against stale dist (FN-6596), but the
plugin had no pretest build and was missing from ensure-test-artifacts.mjs.
On a fresh CI checkout dist/ does not exist, so the guard threw "dist/ is
missing" — failing the non-blocking Full Suite on every main commit.

Register the plugin's required artifacts in ensure-test-artifacts.mjs and add
a `pretest` hook that builds them, matching the dependency-graph / hermes /
openclaw plugins. Verified locally: with dist/ absent, `pnpm --filter
@fusion-plugin-examples/compound-engineering test` now builds dist via the
pretest and all 192 plugin tests pass (incl. the two dist-freshness cases).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 20:47:32 -07:00
gsxdsm
8c93e2ad6b Re-check execution ownership before reaping a leaked slot (PR #1687)
coderabbit Major: reapLeakedConcurrencySlots captured executingIds once
before the loop, but each holder awaits getTask — a task could start
executing mid-sweep and have its worktree slot pulled. Refresh the
executing set immediately before clearPhantomExecutorBinding and skip if
the holder is now executing (same race the A1 recovery fix closed).
clearPhantomExecutorBinding's live-session refusal remains the last line
of defense; this avoids racing it. Added a mid-sweep race test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 20:34:53 -07:00
gsxdsm
a9b65ac83f Merge pull request #1686 from Runfusion/fix/quarantine-json-forces-gate-mode
Stop quarantine-list edits from forcing pnpm test into gate mode
2026-06-20 11:34:41 +08:00
gsxdsm
7eaf513944 Address PR #1687 review: harden pause-abort recovery + FNXC comments
Substantive (A1 recoverPausedAbortFailures):
- Self-guard on globalPause/enginePaused at method entry (greptile P1) — the
  public method must not requeue tasks an operator intentionally froze.
- Re-validate the FULL predicate with a FRESH executing set on the re-read
  before the backward move (coderabbit Major + greptile): add fresh.userPaused
  and column re-check so a task that became ineligible across awaits is skipped.
- Isolate audit emission in its own try/catch (coderabbit) so an audit throw
  after a successful mutation can't log a false "recovery failed".
- Decouple the recovery predicate from the literal error text via shared
  PAUSE_ABORT_PARK_ERROR_MARKER/OPERATOR_MARKER constants (greptile) — the
  executor builds the parked message from the same constants.
- Use the wired clearPhantomExecutorBinding (live-session-guarded) instead of
  the declared-but-never-wired releaseExecutorWorktreeOwnership, which no-op'd.

Nits:
- FNXC-prefix new comments in executor.ts, run-audit.ts, and the benign test
  per repo comment policy.
- Fix a test-only type error on the clearPhantomExecutorBinding mock.

Added a test asserting the globalPause self-guard. Engine typecheck clean;
pause-abort/reaper/benign + regression suites pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 20:10:50 -07:00
gsxdsm
8e4b9e4f0f Add leaked-slot reaper (A2) to self-healing
reapLeakedConcurrencySlots() reclaims in-memory worktree slots whose
holder is no longer in-progress (the FN-6756 "in todo yet still a
maxWorktrees holder" leak) without an engine restart — defense-in-depth
behind the source fix.

- executor: new listWorktreeHolders() read-only introspection over
  activeWorktrees; wired through in-process-runtime to SelfHealingManager.
- reaper releases ONLY when every guard agrees: not executing, task
  missing or in todo/triage, past a 60s grace, and clearPhantomExecutor
  Binding itself refuses (returns false) if a live session surface is
  registered — so it can never pull a worktree from a running agent.
- registered in maintenance batch 2 (respects globalPause/enginePaused
  skip + FN-4962 ordering).
- widened the clearPhantomExecutorBinding option type to surface its
  boolean refusal signal.

Engine typecheck clean; 19 tests pass (new reaper 7 cases + regression).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 20:03:24 -07:00
gsxdsm
9643563874 Fix pause-abort worktree leak + retry storm; add auto-recovery
A global pause/resume cycle parked tasks that had re-queued to todo as
status:"failed" ("operator action required") and leaked their in-memory
worktree slot. The scheduler kept re-dispatching the todo task, the
genuine-pause-abort branch re-fired on the still-set pausedAborted marker,
and it re-parked instantly with no backoff — a retry storm (75x/hr) that
pinned maxWorktrees=3/3 and concurrency-starved the whole queue.

- R1+R2 (executor.ts handleGraphFailure): treat a pause-abort that left a
  task in `todo` as benign (FN-6782) — don't park failed, clear the
  pausedAborted marker so the next dispatch is clean, and release the
  leaked activeWorktrees slot. Operator-action failure preserved for
  genuinely stranded non-todo columns (FN-6478).
- A1 (self-healing.ts recoverPausedAbortFailures): new maintenance sweep
  that auto-recovers any pause-abort park still on the board and requeues
  it (status:null = schedulable) so the board self-heals.
- run-audit.ts: new mutation types for the recovery telemetry.

Corrected the spec's null-vs-queued assumption: the scheduler dispatch set
is column==="todo" && !paused (scheduler.ts:1288); status:"queued" is the
*blocked* marker, status:null is runnable — so recovered tasks are left null.

Deferred (documented): A2 leaked-slot reaper needs a new executor
listWorktreeHolders introspection API to reap in-memory worktree slots
safely; R1 closes the observed leak at its source.

Tests: self-healing-paused-abort-recovery.test.ts (3),
executor-paused-abort-todo-benign.test.ts (2). Engine typecheck clean;
106 existing pause/graph-failure/limbo tests still pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 19:50:46 -07:00
gsxdsm
b9c5b4a2a6 docs: capture gate-mode-drops-coverage learning
Document the test-changed shared-infra catch-all trap (gate mode replaces
affected-package coverage instead of augmenting it) under docs/solutions/,
and add an "Affected-package test selection" concept to CONCEPTS.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 19:10:27 -07:00
gsxdsm
24ff12471f Stop quarantine-list edits from forcing pnpm test into gate mode
scripts/lib/test-quarantine.json is runtime data (which tests are
quarantined), not executable test infra, but it tripped the shared-infra
catch-all in isSharedInfraChange. That forced mode=gate, which runs only
the fixed engine-core + cli-shape gate suite and returns before the
affected packages -- so a dev's real changes (e.g. @fusion/core,
@fusion/dashboard) got zero coverage whenever they also touched the
quarantine list. Classify the file as test-irrelevant so the diff stays
in changed mode and the affected packages run.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 19:05:49 -07:00
gsxdsm
1a565a368b FN-6744: rescue WorkflowNodeEditor merge seam guard
Rescue the WorkflowNodeEditor quarantine by making duplicate merge seam detection reliable during initial canvas load.

- Derive fragment seam conflicts from the loaded workflow IR until React Flow nodes materialize.
- Treat IR merge nodes as merge seams so duplicate merge fragments are rejected consistently.
- Cover desktop and mobile duplicate merge fragment insertion paths and remove the test from quarantine.
- Document the FN-6744 rescue evidence and deletion-ratchet update.

Files changed:
 docs/testing.md                                    |  6 +++-
 .../app/components/WorkflowNodeEditor.tsx          | 11 +++++--
 .../__tests__/WorkflowNodeEditor.test.tsx          | 34 ++++++++++++++++------
 .../app/components/workflow-flow-mapping.ts        | 10 +++++++
 packages/dashboard/vitest.config.ts                |  8 +++--
 scripts/lib/test-quarantine.json                   |  5 ----
 6 files changed, 54 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-6744

Fusion-Task-Lineage: 0f5b167a-8efc-4458-ac9d-e719320b751f
2026-06-19 18:38:17 -07:00
gsxdsm
d06d1052db FN-6743: rescue QuickEntryBox focus restoration
Restore reliable QuickEntryBox post-submit focus and return its test to the dashboard suite.

- Replace the ref-gated focus effect with a state-driven post-submit focus request.
- Cover desktop Enter, Save, duplicate-confirmed submit, mobile non-focus, and failed-submit draft preservation.
- Remove QuickEntryBox from dashboard quarantine while keeping the remaining workflow editor quarantine.

Files changed:
 .../dashboard/app/components/QuickEntryBox.tsx     | 46 +++++++++++++++++-----
 .../components/__tests__/QuickEntryBox.test.tsx    | 29 +++++++++++++-
 packages/dashboard/vitest.config.ts                |  5 ++-
 scripts/lib/test-quarantine.json                   |  5 ---
 4 files changed, 69 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-6743

Fusion-Task-Lineage: 2d458631-3ff3-4d96-8d91-bc2a17538be2
2026-06-19 17:49:06 -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
711bf3e1b8 FN-6746: attribute token analytics per runtime model
Persist and expand per-model token usage so Command Center reports every model used by a task.

- Add a nullable per-model token usage column and task model bucket types.
- Merge session token deltas into provider/model buckets while retaining task-level totals.
- Expand model/provider analytics from per-model buckets with legacy fallbacks for older rows.
- Cover persistence, migration, aggregation, and session accumulation behavior with tests.
- Document the per-model storage contract alongside existing token analytics tables.

Files changed:
 docs/storage.md                                    |   2 +
 packages/core/src/__tests__/db-migrate.test.ts     |  62 ++++++++++
 .../core/src/__tests__/store-persistence.test.ts   |  49 ++++++++
 .../core/src/__tests__/token-analytics.test.ts     | 127 ++++++++++++++++++++-
 packages/core/src/db.ts                            |  13 ++-
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/store.ts                         |   7 +-
 packages/core/src/token-analytics.ts               |  58 ++++++++--
 packages/core/src/types.ts                         |  32 ++++++
 .../src/__tests__/session-token-usage.test.ts      |  23 ++++
 packages/engine/src/executor.ts                    |  20 +++-
 packages/engine/src/session-token-usage.ts         |  50 +++++++-
 packages/engine/src/step-session-executor.ts       |   7 ++
 13 files changed, 429 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6746

Fusion-Task-Lineage: 1b1a3b31-b669-4e89-ac38-a871f3349015
2026-06-19 16:47:34 -07:00
gsxdsm
f01ede2523 FN-6742: rescue session cross-tab tests
Rescue the dashboard session cross-tab test before its deletion-ratchet deadline.

- Dispose the API router and session cleanup scheduler before closing test stores.
- Hide unused TaskStore EventEmitter hooks in the route-only harness to avoid background route subscribers reopening temp fixtures.
- Remove the session-cross-tab quarantine ledger entry and dashboard Vitest exclude in lockstep.
- Document the rescue evidence and teardown pattern for future dashboard session tests.

Files changed:
 docs/testing.md                                    |  6 ++++-
 .../src/__tests__/session-cross-tab.test.ts        | 30 +++++++++++++++++++---
 packages/dashboard/vitest.config.ts                |  5 +++-
 scripts/lib/test-quarantine.json                   |  5 ----
 4 files changed, 36 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-6742

Fusion-Task-Lineage: e26d70eb-f139-45f7-8ddd-bde2d172c291
2026-06-19 16:47:34 -07:00
gsxdsm
fc0636fe90 FN-6748: add Air dashboard theme
Adds a minimal, borderless Air color theme across dashboard theme selection and bootstrap validation.

- Register Air in the core theme union, dashboard theme options, and browser/desktop bootstrap validators.
- Add dark and light Air token blocks with flattened chrome styling and matching swatch samples.
- Cover Air registration and CSS invariants with a focused dashboard test.
- Document the Air theme alongside the existing Shadcn theme in dashboard theming guidance.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 packages/core/src/types.ts                         |   2 +
 packages/dashboard/app/__tests__/air-theme.test.ts |  58 ++++++++++++
 .../dashboard/app/components/ThemeSelector.css     |  14 +++
 packages/dashboard/app/components/themeOptions.ts  |   1 +
 packages/dashboard/app/index.html                  |   2 +-
 packages/dashboard/app/public/theme-data.css       | 101 +++++++++++++++++++++
 packages/desktop/src/renderer/index.html           |   1 +
 8 files changed, 179 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6748

Fusion-Task-Lineage: a0caf14f-673d-485c-8886-97e4b273b624
2026-06-19 16:47:34 -07:00
gsxdsm
e19f7c2008 FN-6747: add shadcn dashboard theme
Add a shadcn-inspired dashboard theme across the theme picker, persisted startup validation, and public theme tokens.

- Register the Shadcn color theme in core and dashboard theme option lists.
- Add zinc-neutral dark and light CSS tokens with Geist typography, 1px borders, subtle shadows, and neutralized glow effects.
- Add theme swatches, documentation, startup allow-list support, regression coverage, and a published package changeset.

Files changed:
 .changeset/shadcn-dashboard-theme.md               |   5 +
 docs/dashboard-guide.md                            |   2 +-
 packages/core/src/types.ts                         |   1 +
 .../dashboard/app/components/ThemeSelector.css     |  14 ++
 packages/dashboard/app/components/themeOptions.ts  |   1 +
 .../dashboard/app/hooks/__tests__/useTheme.test.ts |  28 ++++
 packages/dashboard/app/index.html                  |   2 +-
 packages/dashboard/app/public/theme-data.css       | 166 +++++++++++++++++++++
 8 files changed, 217 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6747

Fusion-Task-Lineage: cf0d6732-aa4f-457d-ae6c-e54fca0191b2
2026-06-19 16:47:34 -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
c158dda8a6 FN-6745: add xhigh thinking level support
Adds the xhigh reasoning option across settings, task flows, APIs, and model adapter tests.

- Extend the shared thinking-level enum, validation paths, generated resource types, and settings documentation for `xhigh`.
- Surface `xhigh` in task, agent, and global model selectors with localized labels.
- Cover task route handling, task form rendering, and Pi adapter mapping behavior with regression tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6745-xhigh-thinking-level.md         |   5 +
 docs/settings-reference.md                         |   2 +-
 .../core/src/__tests__/thinking-levels.test.ts     |   9 ++
 packages/core/src/types.ts                         |  10 +-
 packages/dashboard/app/api/legacy.ts               |   6 +-
 .../dashboard/app/components/AgentDetailView.tsx   |   2 +-
 .../dashboard/app/components/ModelSelectorTab.tsx  |   1 +
 .../dashboard/app/components/NewAgentDialog.tsx    |   3 +-
 packages/dashboard/app/components/NewTaskModal.tsx |   2 +-
 .../dashboard/app/components/TaskDetailModal.tsx   |   2 +-
 packages/dashboard/app/components/TaskForm.tsx     |   2 +
 .../app/components/__tests__/TaskForm.test.tsx     |  14 +++
 .../settings/sections/GlobalModelsSection.tsx      |   1 +
 .../src/__tests__/routes-tasks-ops.test.ts         |   8 +-
 .../dashboard/src/__tests__/routes-tasks.test.ts   |   8 +-
 packages/dashboard/src/agent-generation.ts         |   4 +-
 packages/dashboard/src/agent-onboarding.ts         |   4 +-
 .../src/routes/register-task-workflow-routes.ts    |   5 +-
 packages/engine/src/__tests__/pi.test.ts           |  25 ++++
 packages/i18n/locales/en/app.json                  |   3 +
 packages/i18n/locales/es/app.json                  |   3 +
 packages/i18n/locales/fr/app.json                  |   3 +
 packages/i18n/locales/ko/app.json                  |   3 +
 packages/i18n/locales/zh-CN/app.json               |   3 +
 packages/i18n/locales/zh-TW/app.json               |   3 +
 packages/i18n/src/resources.d.ts                   | 126 ++++++++++++++++++++-
 26 files changed, 229 insertions(+), 28 deletions(-)

Fusion-Task-Id: FN-6745

Fusion-Task-Lineage: 779e1517-607b-482b-83a1-0f2bb94ae736
2026-06-19 16:47:34 -07:00
gsxdsm
8d2b396e85 FN-6741: rescue core quarantine entries
Rescue the loaded @fusion/core quarantine batch while keeping the remaining lock flake quarantined.

- Remove rescued core test files from the quarantine ledger and Vitest exclude list.
- Close the settings-export TaskStore before fixture cleanup to release resources deterministically.
- Re-quarantine the store-concurrent-writes broad-lane SQLite lock flake observed during merge verification.
- Document the rescue evidence and remaining deletion-ratchet follow-up.

Files changed:
 docs/testing.md                                    |  8 ++++++-
 .../core/src/__tests__/settings-export.test.ts     |  5 ++++
 packages/core/vitest.config.ts                     | 11 +++++----
 scripts/lib/test-quarantine.json                   | 27 +---------------------
 4 files changed, 19 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-6741

Fusion-Task-Lineage: 064367a6-f1c4-4685-a766-37bf2204a42c
2026-06-19 16:47:34 -07:00
gsxdsm
60b69dd3eb FN-6739: document terminal shortcut focus preservation
Document the terminal shortcuts behavior that keeps active sessions focused during shortcut activation.

- Note that Shortcuts panel buttons preserve focus across pointer, mouse, and touch activation.
- Clarify that preserved focus keeps Ctrl combinations emitting control bytes to the shell.

Files changed:
 docs/dashboard-guide.md | 1 +
 1 file changed, 1 insertion(+)

Fusion-Task-Id: FN-6739

Fusion-Task-Lineage: f1f0ff89-e37e-4ed6-b16f-77014f5d2cc4
2026-06-19 16:47:34 -07:00
gsxdsm
4ad4f7faf0 FN-6738: document reliability charts
Document the new Reliability View chart coverage in the dashboard guide.

- Add the entered-vs-bounced trend chart to the In-review flow feature list.
- Add the merge-attempt distribution pie chart and empty-state behavior to the Merge attempts feature list.

Files changed:
 docs/dashboard-guide.md | 2 ++
 1 file changed, 2 insertions(+)

Fusion-Task-Id: FN-6738

Fusion-Task-Lineage: 37e5249c-ae5e-431a-8b93-1ee098b725e7
2026-06-19 16:47:33 -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
2da55a8994 FN-6740: document quarantine ratchet follow-ups
Document the same-day flaky-test quarantine audit and ownership plan.\n\n- Record the 2026-06-19 quarantine batch expiration date and ledger/config lockstep status.\n- Split follow-up ownership across CLI, core, and dashboard quarantine rescue/delete work.\n- Add an FNXC comment explaining why the coordinated audit should stay scoped by subsystem.\n\nFiles changed:\n docs/testing.md | 4 ++++\n 1 file changed, 4 insertions(+)

Fusion-Task-Id: FN-6740

Fusion-Task-Lineage: eba08900-18d6-4768-ac8a-c673f89537ca
2026-06-19 16:47:33 -07:00
gsxdsm
259cdfb531 FN-6734: stabilize CLI extension test cleanup
Stabilize the CLI extension regression lane by closing cached stores before temp fixture removal.

- Close extension store caches and manually created TaskStore/AgentStore handles before deleting per-test fixture roots.
- Add a regression guard for the cached TaskStore close-before-remove invariant.
- Reduce oversized task-list truncation fixtures while preserving bounded-output assertions.
- Document the CLI affected-lane rescue pattern for store leaks, fixture sizing, and runtime-dist mocking order.

Files changed:
 docs/testing.md                                    |   4 +
 .../extension-agent-set-instructions.test.ts       |   3 +-
 .../__tests__/extension-goal-tools-audit.test.ts   |   3 +-
 .../cli/src/__tests__/extension-goal-tools.test.ts |   3 +-
 .../cli/src/__tests__/extension-insights.test.ts   |   3 +-
 .../__tests__/extension-mission-goal-tools.test.ts |   3 +-
 packages/cli/src/__tests__/extension.test.ts       | 221 +++++++++++++--------
 .../src/__tests__/research-extension-tools.test.ts |  40 +++-
 8 files changed, 186 insertions(+), 94 deletions(-)

Fusion-Task-Id: FN-6734

Fusion-Task-Lineage: efe91c0f-f84c-471c-8067-65a244b2aec7
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
df139ec84c FN-6736: reclaim phantom executor bindings
Recover wedged in-progress tasks by clearing stale executor bindings only after liveness proves the owner is gone.

- Add a guarded executor escape hatch that clears only stale in-memory task bookkeeping while refusing live session surfaces.
- Teach self-healing to identify phantom executor-active bindings using age, checkout, heartbeat, run-audit, and worktree liveness signals before requeueing preserved work.
- Record reclaim events in run audit and cover preserved-worktree recovery with reliability interaction tests.
- Document the recovery path and add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6736-phantom-executor-binding.md     |   5 +
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   1 +
 .../reclaim-phantom-executor-binding.test.ts       | 244 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |  35 +++
 packages/engine/src/run-audit.ts                   |   2 +
 packages/engine/src/runtimes/in-process-runtime.ts |   3 +-
 packages/engine/src/self-healing.ts                | 112 ++++++++++
 8 files changed, 402 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6736

Fusion-Task-Lineage: c76191ba-f4c3-4832-a790-67676e258ba2
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
gsxdsm
62033e5ef7 FN-6733: render dependency graph edge styling
Render dependency graph connectors with CSS-resolvable styling so task dependencies are visible.

- Move dependency edge stroke, width, opacity, and arrowhead fill from SVG presentation attributes into inline styles.
- Cover highlighted, dimmed, empty, filtered, desktop, and mobile dependency graph edge rendering.
- Document the SVG custom-property requirement with an FNXC dependency graph comment.

Files changed:
 .../DependencyGraph.highlighting.test.tsx          | 39 ++++++++++++++++++++++
 .../src/__tests__/edges.test.tsx                   | 34 ++++++++++++++++---
 .../fusion-plugin-dependency-graph/src/edges.tsx   | 17 +++++++---
 3 files changed, 81 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6733

Fusion-Task-Lineage: 167e7b56-f0eb-4b32-9f66-3b372ef27d60
2026-06-19 16:47:33 -07:00
gsxdsm
22c936d8e8 FN-6728: enlarge Agent Detail tab labels
Improves Agent Detail tab readability on tablet and mobile without changing scrolling behavior.

- Set Agent Detail tab labels to 0.875rem in base and mobile rules.
- Document the tablet readability requirement next to the tab styling.
- Add coverage for readable tab label sizing across tablet/base and mobile CSS states.

Files changed:
 .../dashboard/app/components/AgentDetailView.css   |  8 ++-
 .../AgentDetailView.mobile-scroll.test.tsx         | 84 ++++++++++++++--------
 2 files changed, 61 insertions(+), 31 deletions(-)

Fusion-Task-Id: FN-6728

Fusion-Task-Lineage: 6be99919-d0b4-4387-875b-88445b78a196
2026-06-19 16:47:33 -07:00
gsxdsm
e6f611169b FN-6737: preserve terminal Ctrl shortcuts
Keep terminal shortcut focus stable so Ctrl combinations emit control bytes reliably.

- Prevent pointer, mouse, and touch activation on terminal shortcut buttons from stealing xterm focus.
- Expand terminal shortcut coverage for Ctrl control codes, touch focus preservation, and platform copy modifiers.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6737-terminal-ctrl-shortcuts.md      |  5 +++
 .../dashboard/app/components/TerminalModal.tsx     | 31 +++++++++++++--
 .../components/__tests__/TerminalModal.test.tsx    | 46 +++++++++++++++++++---
 3 files changed, 73 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6737
Fusion-Task-Lineage: e27439e0-b2c5-44c1-8584-848e61d41e1b
2026-06-19 16:47:33 -07:00
gsxdsm
8927173ae0 FN-6726: prevent Command Center token totals from overflowing
Contain Command Center token totals so large formatted values stay inside their stat surfaces.

- Add shrink and wrap containment to stat and live metric value styles.
- Cover large comma-grouped token totals across Overview, Tokens, and Team surfaces.
- Guard the emitted CSS declarations and quarantine an unrelated WorkflowNodeEditor flake observed during verification.

Files changed:
 .../components/command-center/CommandCenter.css    | 10 +++++
 .../__tests__/CommandCenter.test.tsx               |  9 ++++
 .../CommandCenter.token-validity.css.test.ts       | 21 ++++++++++
 .../command-center/areas/__tests__/areas.test.tsx  | 48 ++++++++++++++++++----
 packages/dashboard/vitest.config.ts                |  5 +++
 scripts/lib/test-quarantine.json                   |  5 +++
 6 files changed, 89 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6726

Fusion-Task-Lineage: 8a26ca5c-fdbe-4e68-a9d2-ae93340fe685
2026-06-19 16:47:33 -07:00
gsxdsm
340da92400 FN-6735: treat benign merge-seam pause aborts as retryable
Treat benign pause/resume aborts at workflow merge seams as retryable transient merge failures.

- Classify legacy, merge-region, manual-hold, and retry node ids as merge-seam graph failures.
- Route clean in-review pause/resume aborts back through bounded auto-merge retry when eligible.
- Keep conflict, contamination, foreign-work, exhausted-retry, global/user pause, and confirmed-merge cases terminal.
- Cover the lifecycle with a reliability regression test and architecture notes.

Files changed:
 docs/architecture.md                               |   4 +-
 .../merge-node-paused-abort-retryable.test.ts      | 227 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |  77 ++++++-
 packages/engine/src/workflow-graph-executor.ts     |   2 +-
 4 files changed, 301 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6735

Fusion-Task-Lineage: 3560c1e3-91e9-405a-bdfc-a243f7052803
2026-06-19 16:47:33 -07:00
gsxdsm
26e5514a8e FN-6724: add Factory Mono theme
Add a monochrome Factory theme with red accents and no glow effects.

- Register Factory Mono across theme validation, typing, selector UI, and startup hydration.
- Define dark and light Factory Mono CSS tokens, swatches, red CTA accents, uppercase controls, and glow-free active states.
- Cover Factory Mono token behavior with a theme hook regression test and document the expanded theme count.
- Add a minor changeset for the published Fusion package.

Files changed:
 .changeset/factory-mono-theme.md                   |   5 +
 docs/dashboard-guide.md                            |   2 +-
 packages/core/src/types.ts                         |   1 +
 .../dashboard/app/components/ThemeSelector.css     |  14 ++
 .../dashboard/app/components/ThemeSelector.tsx     |   1 +
 .../dashboard/app/hooks/__tests__/useTheme.test.ts |  28 ++++
 packages/dashboard/app/index.html                  |   2 +-
 packages/dashboard/app/public/theme-data.css       | 177 +++++++++++++++++++++
 8 files changed, 228 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6724

Fusion-Task-Lineage: 861fbcef-d1b1-4bfb-bd60-0196ce825771
2026-06-19 16:47:33 -07:00
gsxdsm
c16557fb16 FN-6725: preserve responsive command center nav order
Reassert the responsive Command Center placement contracts for tablet and mobile navigation.

- Document the tablet contract that keeps Command Center after Agents while Documents remains in overflow.
- Document the mobile contract that keeps Command Center after Mailbox without duplicating it in More.
- Extend the mobile nav regression test to cover mailbox badges and primary plugin overflow behavior.

Files changed:
 packages/dashboard/app/components/Header.tsx         |  3 +++
 packages/dashboard/app/components/MobileNavBar.tsx   |  3 +++
 .../app/components/__tests__/MobileNavBar.test.tsx   | 20 ++++++++++++++++++--
 3 files changed, 24 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6725

Fusion-Task-Lineage: 9130b2d9-4163-4fed-bdc4-96ee6e1f4855
2026-06-19 16:47:33 -07:00
gsxdsm
d3a32f0e5f FN-6730: stabilize dashboard async test seams
Stabilize dashboard tests around async view commands and ReactFlow node readiness.

- Await the Insights overflow command before exercising lazy-view routing and preference persistence assertions.
- Assert Insights rendering through the test id users rely on instead of querying the DOM class directly.
- Wait for the base workflow node before measuring fragment insertion side effects.

Files changed:
 packages/dashboard/app/components/__tests__/App.test.tsx                | 17 +++++++++++------
 packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx |  6 ++++++
 2 files changed, 17 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6730

Fusion-Task-Lineage: f9c248c1-5253-449f-b30f-7696fda00e73
2026-06-19 16:47:33 -07:00
gsxdsm
8f052c6b92 FN-6723: normalize activity trend chart scaling
Normalize Command Center activity chart lines so low-volume agent series remain visible beside message volume.

- Add an opt-in per-series scale mode to the Recharts line chart while preserving shared scaling by default.
- Enable per-series scaling for the Activity trend chart and expose scale mode for regression coverage.
- Cover mixed-unit, non-finite, and finite chart geometry cases across Command Center chart tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 .../fn-6723-command-center-activity-charts.md      |  5 +++
 .../command-center/__tests__/charts.test.tsx       |  8 ++++
 .../command-center/areas/ActivityArea.tsx          |  5 +++
 .../command-center/areas/__tests__/areas.test.tsx  | 42 ++++++++++++++++++
 .../command-center/charts/recharts/LineChart.tsx   | 50 +++++++++++++++++-----
 .../charts/recharts/__tests__/LineChart.test.tsx   | 34 ++++++++++++++-
 6 files changed, 131 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6723

Fusion-Task-Lineage: 8f7ee1cb-5488-4237-b0c1-b4547fa4961d
2026-06-19 16:47:33 -07:00
gsxdsm
ee72c942f1 FN-6715: move Overview funnel below charts
Move the Command Center Overview funnel to the bottom while expanding chart palette coverage.

- Render the SDLC throughput funnel after loading, error, empty, and populated Overview content.
- Broaden hand-rolled chart primitive colors across existing semantic theme tokens.
- Add regression coverage for Overview ordering, palette cycling, and safe chart geometry.
- Document the Overview funnel placement and add a patch changeset.

Files changed:
 .../fn-6715-command-center-overview-funnel.md      |   5 +
 docs/dashboard-guide.md                            |   4 +-
 .../components/command-center/CommandCenter.tsx    |  13 +-
 .../__tests__/CommandCenter.test.tsx               |  20 +--
 .../command-center/__tests__/charts.test.tsx       | 103 ++++++++++++++-
 .../components/command-center/charts/charts.css    | 141 +++++++++++++++++++++
 6 files changed, 263 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6715

Fusion-Task-Lineage: 27fafdff-6cd8-4497-ab52-6f28f3100df1
2026-06-19 16:47:33 -07:00
gsxdsm
b87fc6ffd8 Merge pull request #1649 from Runfusion/agent/ceo/960946e0
FUS-7: keep activity modal on screen
2026-06-20 07:37:07 +08:00
gsxdsm
c093f4a1e6 fix(desktop): skip native rebuild in electron-builder to unblock Windows release
electron-builder's default @electron/rebuild step walked the desktop app's
whole dependency tree and tried to source-build @homebridge/node-pty-prebuilt-multiarch
(Node-ABI prebuilds only, none for Electron) via node-gyp, which fails on the
Windows runner with "Could not find any Visual Studio installation". The app
bundles no native addon needing an Electron-ABI rebuild (it uses node:sqlite;
keytar/node-pty aren't in the files list and are loaded optionally), so the
rebuild was pointless. Set npmRebuild: false to skip it on all platforms.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 08:14:22 -07:00
gsxdsm
82068f0b59 FN-6719: add reliability charts to Command Center
Adds visual reliability trends and distributions alongside the existing Command Center reliability tables.

- Render an entered-vs-bounced line chart from the filtered reliability per-day rows.
- Render a merge-attempts pie chart from the sorted histogram entries.
- Add scoped chart layout styles and regression coverage for populated, empty, and filtered chart states.

Files changed:
 .../dashboard/app/components/ReliabilityView.css   | 37 +++++++++++
 .../dashboard/app/components/ReliabilityView.tsx   | 50 ++++++++++++--
 .../components/__tests__/ReliabilityView.test.tsx  | 76 +++++++++++++++++++++-
 3 files changed, 158 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-6719

Fusion-Task-Lineage: 4b366f66-1fa2-4014-a51a-cb1c992447db
2026-06-19 08:06:38 -07:00
gsxdsm
c75135d9be FN-6716: raise daily activity line chart
Reorders the Command Center overview charts so the richer daily activity line appears higher in the grid.

- Render the daily activity multi-series line card before the sparkline trend card while preserving existing data gates.
- Add a regression assertion for the overview chart ordering and empty-state absence.
- Update dashboard documentation and align the mailbox modal font-size expectation with the current tokenized CSS.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 .../app/components/__tests__/MailboxModal.test.tsx |  2 +-
 .../components/command-center/CommandCenter.tsx    | 28 ++++++++++++----------
 .../__tests__/CommandCenter.test.tsx               |  9 +++++++
 4 files changed, 27 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-6716

Fusion-Task-Lineage: 0424f561-65f7-475a-a213-b12994c599c7
2026-06-19 07:50:18 -07:00
gsxdsm
70cce18c31 FN-6712: add managed agent instructions tool
Add a scoped extension tool for managers to update report instructions through AgentStore.

- Register fn_agent_set_instructions with validation, hierarchy authorization, and config-revision persistence.
- Cover direct, indirect, privileged, denied, missing-target, and field-clearing behaviors with CLI extension tests.
- Document the new agent-management tool in agent docs, Fusion skill references, and a published package changeset.

Files changed:
 .changeset/fn-6712-agent-set-instructions-tool.md  |   5 +
 docs/agents.md                                     |  12 ++
 packages/cli/skill/fusion/SKILL.md                 |   2 +-
 .../cli/skill/fusion/references/extension-tools.md |  10 +
 .../skill/fusion/references/fusion-capabilities.md |   1 +
 .../extension-agent-set-instructions.test.ts       | 235 +++++++++++++++++++++
 packages/cli/src/extension.ts                      |  94 +++++++++
 7 files changed, 358 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6712
Fusion-Task-Lineage: 1fac1ff0-283d-4911-8fbf-f15c5de6b902
2026-06-19 07:41:44 -07:00
gsxdsm
4373946a07 chore(release): v0.44.0
Version bump via changesets.
2026-06-19 07:34:26 -07:00
gsxdsm
c81899ba6e FN-6713: clarify Command Center design tokens
Clarify the Command Center documentation vocabulary for spacing and border design tokens.

- Replace the outdated --space-3 reference with the named --space-md token.
- Document the canonical 4px spacing scale vocabulary for Command Center surfaces.
- Specify the tokenized subtle border form used by those card-like surfaces.

Files changed:
 docs/dashboard-guide.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Fusion-Task-Id: FN-6713

Fusion-Task-Lineage: 928db804-091c-4c7e-a283-9f28d2d4be36
2026-06-19 07:12:22 -07:00
gsxdsm
da240931bf FN-6703: tokenise mobile mailbox tab font size
Tokenise the mobile mailbox tab font size while defining the shared xs dashboard token.

- Replace both mobile mailbox modal and mailbox view tab font sizes with var(--font-size-xs, 0.8rem).
- Define --font-size-xs in the dashboard typography token set.
- Document the FN-6703 styling contract with FNXC comments.

Files changed:
 packages/dashboard/app/components/MailboxModal.css | 5 +++--
 packages/dashboard/app/styles.css                  | 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6703
Fusion-Task-Lineage: af2073bd-fdde-497e-896a-ce9906459c6a
2026-06-19 07:08:05 -07:00
gsxdsm
44a7c83b23 FN-6707: move throughput card atop overview
Place the Command Center throughput section first across overview states.

- Render the throughput funnel before loading, error, empty, and populated overview content.
- Preserve throughput test anchors while documenting the top-of-page ordering requirement.
- Add regression coverage for throughput ordering in loading, empty, populated, and error overview branches.

Files changed:
 .../app/components/command-center/CommandCenter.tsx | 11 +++++++----
 .../command-center/__tests__/CommandCenter.test.tsx | 21 +++++++++++++++++++++
 2 files changed, 28 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6707

Fusion-Task-Lineage: 9b004ab4-e36b-4d83-804a-32503a7d8d72
2026-06-19 06:59:02 -07:00