Commit Graph

1680 Commits

Author SHA1 Message Date
gsxdsm
e18745b79e FN-6844: move engine controls to footer status bar
Move engine stop, pause, and scheduler tuning controls into the executor footer status bar.

- Add a footer EngineControlMenu popover with stop/start, pause/resume, and debounced concurrency/worktree sliders.
- Remove the engine controls from the dashboard header and wire the footer running-state text to open the controls.
- Update dashboard tests, English labels, and operator documentation for the footer control location.

Files changed:
 docs/dashboard-guide.md                            |   4 +
 packages/dashboard/app/App.tsx                     |   7 -
 .../app/__tests__/tablet-header-controls.test.tsx  |  21 +-
 .../dashboard/app/components/EngineControlMenu.css | 118 +++++++++
 .../dashboard/app/components/EngineControlMenu.tsx | 292 +++++++++++++++++++++
 .../dashboard/app/components/ExecutorStatusBar.css |  28 ++
 .../dashboard/app/components/ExecutorStatusBar.tsx |  25 +-
 packages/dashboard/app/components/Header.css       |  89 -------
 packages/dashboard/app/components/Header.tsx       |  81 +-----
 .../app/components/__tests__/App.test.tsx          | 132 ----------
 .../__tests__/EngineControlMenu.test.tsx           | 145 ++++++++++
 .../__tests__/ExecutorStatusBar.test.tsx           |  40 +++
 .../app/components/__tests__/Header.test.tsx       |  57 +---
 .../components/__tests__/MultiProjectFlow.test.tsx |   8 -
 .../app/components/__tests__/ResearchView.test.tsx |   4 -
 packages/i18n/locales/en/app.json                  |   5 +-
 16 files changed, 666 insertions(+), 390 deletions(-)

Fusion-Task-Id: FN-6844

Fusion-Task-Lineage: f0e17e3d-489e-483c-ba7d-a020c111231c
2026-06-21 09:00:40 -07:00
gsxdsm
4672203acd FN-6814: add Shadcn Gray theme variant
Adds a neutral Shadcn Gray dashboard color theme across selection, bootstrap, documentation, and release notes.

- Add Shadcn Gray to core theme validation and dashboard theme picker options.
- Define dark and light zinc-gray theme tokens plus matching swatch previews.
- Cover the new theme with regression tests and document the expanded theme count.

Files changed:
 .changeset/shadcn-gray-variant.md                  |   5 +
 docs/dashboard-guide.md                            |   2 +-
 packages/core/src/types.ts                         |   4 +-
 .../app/__tests__/shadcn-gray-theme.test.ts        |  65 ++++++++++
 .../dashboard/app/components/ThemeSelector.css     |  15 +++
 packages/dashboard/app/components/themeOptions.ts  |   2 +
 packages/dashboard/app/index.html                  |   2 +-
 packages/dashboard/app/public/theme-data.css       | 143 ++++++++++++++++++++-
 8 files changed, 228 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-6814

Fusion-Task-Lineage: 0548ad7a-5a3c-4e39-8dab-3eb5d40d84c1
2026-06-21 03:40:56 -07:00
gsxdsm
f030f73032 FN-6847: move sidebar collapse toggle into footer
Move the left sidebar collapse control into the footer so it sits above Settings with row-style behavior.

- Replace the floating border collapse button with a footer row button that keeps accessible expanded/collapsed labels.
- Retokenize collapse toggle CSS around shared sidebar item styling and remove the obsolete floating modifier.
- Extend sidebar tests and dashboard guide coverage for the footer placement and collapsed rail behavior.

Files changed:
 docs/dashboard-guide.md                            |  4 +-
 .../dashboard/app/components/LeftSidebarNav.css    | 24 ++--------
 .../dashboard/app/components/LeftSidebarNav.tsx    | 32 ++++++-------
 .../components/__tests__/LeftSidebarNav.test.tsx   | 54 ++++++++++++++++++++--
 4 files changed, 72 insertions(+), 42 deletions(-)

Fusion-Task-Id: FN-6847

Fusion-Task-Lineage: 5d7781a1-afc9-4e5c-bf7b-0648bb874285
2026-06-21 03:40:56 -07:00
gsxdsm
cb64e874de docs: enrich engine singleton-lock learning after PR #1704 review
- Fix frontmatter enums (root_cause: logic_error, component: tooling); add #1699
  to related_prs and last_updated
- Reflect post-review behavior: external marker cleared at lock-acquire time;
  reconcile/startAll/onProjectAccessed swallow EngineAlreadyRunningError
- Add rejected approach (don't merge has()/hasRunningEngine) and the
  keep-them-distinct invariant
- Tighten socket-name detail (sha1[:16]); cross-link the browser-testing doc

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 03:35:16 -07:00
gsxdsm
7d312b416d docs: capture engine singleton-lock learning (EngineAlreadyRunningError != no engine)
Document the false "engine not running" banner root cause and fix as a
docs/solutions learning, and add an "Engine Singleton Lock" entry to
CONCEPTS.md: a failed per-machine lock acquisition is proof an engine is
running elsewhere, not "no engine."

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 03:15:22 -07:00
gsxdsm
275e97edc1 Merge pull request #1699 from Runfusion/codex/start-engines-by-default
[codex] Start Fusion engines by default
2026-06-21 02:35:13 -07:00
gsxdsm
eafe6f7b28 Merge pull request #1696 from Runfusion/gsxdsm/ce-workflow-skill-loading
fix: make the compound-engineering workflow actually load skills and run the full CE flow
2026-06-21 02:04:17 -07:00
gsxdsm
40cea655b8 Merge main into validator behavioral verification
Resolve conflicts from main's analytics schema additions (plugin
activations, per-model token buckets) against the PR's contract-assertion
type column:
- db.ts: renumber behavioral-verification migration 124 -> 126, bump
  SCHEMA_VERSION to 126 so it follows main's migrations 124/125
- core/roadmap tests: adopt main's SCHEMA_VERSION-constant assertions
  instead of stale literal 124
- test-quarantine.json: keep all four quarantine entries from both sides

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 00:22:19 -07:00
gsxdsm
7ef381762a feat: start engines by default 2026-06-20 23:57:37 -07:00
gsxdsm
0a04feec93 FN-6825: combine workflow actions in switcher
Move workflow edit and creation actions into the shared workflow switcher dropdown.

- Add inline edit buttons for workflow options and a persistent New workflow footer action.
- Remove separate board and list workflow toolbar icon buttons while preserving header portal behavior.
- Update workflow switcher styling, translations, docs, and regression coverage for board/list surfaces.

Files changed:
 docs/dashboard-guide.md                            |  8 +--
 packages/dashboard/app/App.tsx                     |  1 +
 packages/dashboard/app/components/Board.tsx        | 52 ++++----------
 packages/dashboard/app/components/Lane.css         |  4 --
 packages/dashboard/app/components/ListView.tsx     | 44 +++++-------
 .../dashboard/app/components/WorkflowSwitcher.css  | 60 +++++++++++++---
 .../dashboard/app/components/WorkflowSwitcher.tsx  | 80 +++++++++++++++++----
 .../app/components/__tests__/Board.test.tsx        | 62 +++++++++-------
 .../app/components/__tests__/ListView.test.tsx     | 27 +++++--
 .../components/__tests__/WorkflowSwitcher.test.tsx | 84 ++++++++++++++++++++++
 packages/i18n/locales/en/app.json                  |  4 +-
 packages/i18n/locales/es/app.json                  |  4 +-
 packages/i18n/locales/fr/app.json                  |  4 +-
 packages/i18n/locales/ko/app.json                  |  4 +-
 packages/i18n/locales/zh-CN/app.json               |  4 +-
 packages/i18n/locales/zh-TW/app.json               |  4 +-
 16 files changed, 314 insertions(+), 132 deletions(-)

Fusion-Task-Id: FN-6825
Fusion-Task-Lineage: 87754918-a695-4e4e-bba5-833e74f7f92f
2026-06-20 23:43:13 -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
34b555f5d2 FN-6824: move workflow controls into header
Move workflow controls into the header when sidebar navigation is active.

- Add a Header portal slot that replaces the hidden view toggle under left sidebar navigation.
- Portal Board workflow selector, edit, and create controls into the Header slot with inline fallback.
- Portal List workflow selector and create controls into the Header slot without adding edit controls.
- Cover relocated and inline workflow control behavior for Board, Header, and List views.

Files changed:
 docs/dashboard-guide.md                            |   2 +
 packages/dashboard/app/App.tsx                     |   2 +
 packages/dashboard/app/components/Board.tsx        |  99 ++++++++++++-------
 packages/dashboard/app/components/Header.css       |  34 +++++++
 packages/dashboard/app/components/Header.tsx       |  11 +++
 packages/dashboard/app/components/ListView.tsx     |  25 ++++-
 .../app/components/__tests__/Board.test.tsx        |  77 +++++++++++++++
 .../app/components/__tests__/Header.test.tsx       |  21 ++++
 .../app/components/__tests__/ListView.test.tsx     | 109 +++++++++++++++++++++
 9 files changed, 342 insertions(+), 38 deletions(-)

Fusion-Task-Id: FN-6824

Fusion-Task-Lineage: 01611a6c-2894-4f19-a5f8-262609528f49
2026-06-20 23:02:52 -07:00
gsxdsm
56ea618d72 docs(plans): add compound-engineering workflow skill-loading plan
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 23:01:09 -07:00
gsxdsm
9af9bf4fd9 docs(plans): add Full Suite engine/core watchdog-budget fix plan 2026-06-20 21:54:10 -07:00
gsxdsm
3c6db08270 FN-6805: color workflow counts by column
Align workflow switcher status count badges with their board column colors.

- Map Todo, In Progress, and Done workflow count badge text to the matching board column CSS tokens.
- Cover the badge color contract with a CSS fixture regression test.
- Document the color-token behavior for board and list workflow dropdown counts.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 .../dashboard/app/components/WorkflowSwitcher.css  | 10 +++++++---
 .../components/__tests__/WorkflowSwitcher.test.tsx | 22 ++++++++++++++++++++++
 3 files changed, 30 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6805

Fusion-Task-Lineage: aab7140c-ad37-4bd8-b73d-199534285b37
2026-06-20 21:16:16 -07:00
gsxdsm
c766bc9c95 FN-6811: keep terminal symbols out of xterm metrics
Keep terminal symbol fonts scoped away from xterm's measured text stacks across modal and session surfaces.

- add a scoped symbols @font-face to the session terminal CSS chunk
- defensively strip the symbols font from resolved xterm font-family presets
- expand modal, session, and CSS regression tests for symbols-free measurement and scoped glyph fallback
- document recurrence #6 and the remaining real-device iOS Safari verification gap

Files changed:
 .../xterm-symbols-nerd-font-unicode-range.md       | 13 ++++--
 .../dashboard/app/__tests__/terminal-input.test.ts | 51 ++++++++++++++++++----
 .../dashboard/app/components/SessionTerminal.css   | 11 +++++
 .../dashboard/app/components/TerminalModal.css     |  3 ++
 .../components/__tests__/SessionTerminal.test.tsx  |  3 ++
 .../components/__tests__/TerminalModal.test.tsx    | 47 ++++++++++++++++++--
 .../dashboard/app/utils/terminalPreferences.ts     | 17 ++++++--
 7 files changed, 127 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-6811

Fusion-Task-Lineage: 15a6fc1f-34c6-44d4-b9ea-8b5b3baae267
2026-06-20 21:02:51 -07:00
gsxdsm
5d9162e138 FN-6806: show workflow counts only when expanded
Keep workflow dropdown triggers compact until the menu opens.

- Hide Todo, In Progress, and Done count badges from the collapsed workflow switcher trigger.
- Preserve active-workflow and option counts while the dropdown is expanded for comparison.
- Update Board, List, switcher tests, and dashboard docs for the expanded-only count behavior.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 .../dashboard/app/components/WorkflowSwitcher.tsx  |  8 +++--
 .../app/components/__tests__/Board.test.tsx        |  3 +-
 .../app/components/__tests__/ListView.test.tsx     |  5 ++-
 .../components/__tests__/WorkflowSwitcher.test.tsx | 36 +++++++++++++++++-----
 5 files changed, 41 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6806

Fusion-Task-Lineage: a3c2db33-fe08-4207-9aae-548b292d98bd
2026-06-20 20:36:18 -07:00
gsxdsm
c8c76a2d1b FN-6801: float sidebar collapse toggle
Replace the sidebar brand-row collapse control with a floating border toggle.\n\n- Remove the empty sidebar brand shell and keep the collapse control reachable in both expanded and rail modes.\n- Style the collapse button as a floating affordance on the sidebar edge.\n- Cover the missing brand shell, accessible toggle labels, pressed state, and persisted collapsed state in sidebar tests.\n- Update dashboard documentation to describe the border-mounted toggle.\n\nFiles changed:\n docs/dashboard-guide.md                            |  2 +-\n .../dashboard/app/components/LeftSidebarNav.css    | 30 +++++++++++-----------\n .../dashboard/app/components/LeftSidebarNav.tsx    | 28 ++++++++++----------\n .../components/__tests__/LeftSidebarNav.test.tsx   | 27 +++++++++++++++++++\n 4 files changed, 56 insertions(+), 31 deletions(-)

Fusion-Task-Id: FN-6801

Fusion-Task-Lineage: e1384565-c0cc-4564-b556-f5b74a501c41
2026-06-20 19:08:50 -07:00
gsxdsm
36b8950dbe FN-6804: carry workflow selection into planning creates
Planning and subtask creation now preserve the workflow lane chosen from dashboard task entry points.

- Thread optional workflow IDs through quick entry, modal state, planning mode, and subtask breakdown flows.
- Apply supplied or parent-derived workflow IDs when creating planning and breakdown tasks, including validation errors for invalid workflow selections.
- Cover workflow-aware task creation and quick-entry modal handoff with regression tests and document the dashboard behavior.

Files changed:
 .changeset/planning-subtask-workflow-selection.md  |   5 +
 docs/dashboard-guide.md                            |   2 +
 packages/dashboard/app/App.tsx                     |   8 +-
 packages/dashboard/app/api/legacy.ts               |   6 +
 packages/dashboard/app/components/AppModals.tsx    |   2 +
 packages/dashboard/app/components/Board.tsx        |   4 +-
 packages/dashboard/app/components/Column.tsx       |   5 +-
 .../dashboard/app/components/InlineCreateCard.tsx  |  20 ++-
 packages/dashboard/app/components/Lane.tsx         |   4 +-
 packages/dashboard/app/components/ListView.tsx     |   4 +-
 .../dashboard/app/components/PlanningModeModal.tsx |  18 +-
 .../dashboard/app/components/QuickEntryBox.tsx     |  24 ++-
 .../app/components/SubtaskBreakdownModal.tsx       |  20 ++-
 packages/dashboard/app/components/TaskForm.tsx     |   4 +-
 .../components/__tests__/QuickEntryBox.test.tsx    |  34 ++++
 packages/dashboard/app/hooks/useModalManager.ts    |  26 ++-
 .../planning-subtask-create-workflow-route.test.ts | 192 +++++++++++++++++++++
 .../src/routes/register-planning-subtask-routes.ts |  72 ++++++--
 18 files changed, 398 insertions(+), 52 deletions(-)

Fusion-Task-Id: FN-6804
Fusion-Task-Lineage: ca03e666-2dd4-4983-8c84-c5540f5adb0b
2026-06-20 18:04:02 -07:00
gsxdsm
da5fea6e11 FN-6756: add Shadcn color theme variants
Add the Shadcn color family to dashboard theme selection and persisted theme validation.

- Register blue, green, red, purple, pink, orange, yellow, mono, and black Shadcn theme IDs across core and dashboard selectors.
- Add swatches and CSS token blocks for light and dark variants, including bootstrap loading coverage.
- Document the expanded theme count and include a minor changeset for the published CLI package.

Files changed:
 .changeset/shadcn-color-variants.md                |    5 +
 docs/dashboard-guide.md                            |    2 +-
 packages/core/src/types.ts                         |   10 +
 .../dashboard/app/components/ThemeSelector.css     |  126 +++
 packages/dashboard/app/components/themeOptions.ts  |    9 +
 .../dashboard/app/hooks/__tests__/useTheme.test.ts |   41 +
 packages/dashboard/app/index.html                  |    2 +-
 packages/dashboard/app/public/theme-data.css       | 1177 ++++++++++++++++++++
 8 files changed, 1370 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6756

Fusion-Task-Lineage: 143e717a-9718-419f-a6c5-34305e53c65d
2026-06-20 17:17:32 -07:00
gsxdsm
c808177979 FN-6776: prevent workflow board legacy flash
Prevent workflow-enabled board surfaces from flashing the legacy layout during first paint.

- Hydrate Board and ListView workflow metadata from a per-project session cache before async revalidation.
- Gate legacy board/list rendering behind settings and workflow-lane metadata readiness, with neutral skeleton states for cold or empty workflow loads.
- Add regression coverage for no-legacy-flash behavior and cache validation, plus docs and changeset notes.

Files changed:
 .changeset/fn-6776-board-flash.md                  |   5 +
 docs/dashboard-guide.md                            |   1 +
 packages/dashboard/app/App.tsx                     |   4 +
 packages/dashboard/app/components/Board.css        |  69 +++++
 packages/dashboard/app/components/Board.tsx        |  53 +++-
 packages/dashboard/app/components/ListView.css     |  53 ++++
 packages/dashboard/app/components/ListView.tsx     |  52 +++-
 .../__tests__/board-no-legacy-flash.test.tsx       | 326 +++++++++++++++++++++
 .../utils/__tests__/boardWorkflowsCache.test.ts    |  71 +++++
 .../dashboard/app/utils/boardWorkflowsCache.ts     |  49 ++++
 10 files changed, 676 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6776

Fusion-Task-Lineage: caa8e53f-9b6d-49a6-94ca-b694550b43ef
2026-06-20 15:42:16 -07:00
gsxdsm
08d1f09107 FN-6796: preserve benign in-review pause aborts
Preserve completed in-review tasks when benign pause/resume aborts surface after executor handoff.

- Detect non-user hard-cancel pause aborts on clean completed in-review rows and clear the transient abort marker without moving the task.
- Let self-healing recover persisted safe in-review pause-abort parks in place while keeping hard-cancel, pause, autoMerge:false, terminal merge, and live-execution guards intact.
- Cover executor and self-healing recovery paths with regression tests, document the audit metadata, and add a patch changeset.

Files changed:
 .../fn-6796-pause-resume-in-review-recovery.md     |  5 ++
 AGENTS.md                                          |  1 +
 docs/architecture.md                               |  2 +
 .../engine/src/__tests__/executor-recovery.test.ts | 97 +++++++++++++++++++++-
 .../active-worktree-removal-liveness.test.ts       |  2 +-
 .../self-healing-paused-abort-recovery.test.ts     | 90 +++++++++++++++++++-
 packages/engine/src/executor.ts                    | 35 ++++++++
 packages/engine/src/self-healing.ts                | 38 +++++++--
 8 files changed, 257 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6796

Fusion-Task-Lineage: d2fe6c6d-c118-4f2f-b19e-58e6f1b29384
2026-06-20 15:11:22 -07:00
gsxdsm
b2f564c2be FN-6791: add i18n regression guardrails
Add focused i18n regression coverage for dashboard localization guardrails.

- Assert dashboard hardcoded-string lint ignores stay limited to non-shipping patterns.
- Verify real locale catalogs retain key parity across supported locales and namespaces.
- Cover fallback behavior for empty secondary translations, missing keys, unsupported locale tags, and Chinese locale normalization.
- Document that @fusion/i18n tests now protect lint-ignore scope and catalog parity drift.

Files changed:
 docs/i18n-contributing.md                          |  2 +
 .../i18n/src/__tests__/i18n-gate-coverage.test.ts  | 65 +++++++++++++++++++
 .../i18n/src/__tests__/locale-fallback.test.ts     | 72 ++++++++++++++++++++++
 3 files changed, 139 insertions(+)

Fusion-Task-Id: FN-6791

Fusion-Task-Lineage: 7f52113e-237a-415d-a109-51295fdc0372
2026-06-20 11:02:55 -07:00
gsxdsm
c0d78f19c5 FN-6795: update quarantine ledger after rescue triage
Refresh the test quarantine records after loaded-lane rescue verification.

- document the FN-6795 CLI and core quarantine triage outcomes
- rescue passing core and CLI test files by removing their ledger/config excludes
- retain CLI package-lane-only timeout quarantines and add the newly observed bin test flake

Files changed:
 docs/testing.md                  |  4 ++++
 packages/cli/vitest.config.ts    | 10 +++++++---
 packages/core/vitest.config.ts   |  4 +++-
 scripts/lib/test-quarantine.json | 25 +++++--------------------
 4 files changed, 19 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-6795
Fusion-Task-Lineage: b4460fc7-848f-4d54-89b4-cfd4d4533d57
2026-06-20 10:28:25 -07:00
gsxdsm
61ff17a057 FN-6797: harden in-review dependency rebound audits
Harden in-review dependency drift reconciliation with explicit guarded no-action audit evidence.

- Emit no-action run-audit events when pause, auto-merge, live execution, checkout, or rebound mutation guards prevent an in-review dependency rebound.
- Preserve scheduler dependency satisfaction semantics so in-review dependencies remain non-blocking under merge-request shadow mode without accepted markers.
- Extend regression coverage and run-audit documentation for guarded in-review rebounds.

Files changed:
 .changeset/fn-6797-in-review-dependency-drift.md   |   5 +
 AGENTS.md                                          |   2 +-
 docs/architecture.md                               |   4 +-
 .../in-review-unmet-dependency-reconcile.test.ts   |  18 ++-
 packages/engine/src/__tests__/self-healing.test.ts |  79 +++++++++++--
 packages/engine/src/self-healing.ts                | 129 ++++++++++++++++-----
 6 files changed, 190 insertions(+), 47 deletions(-)

Fusion-Task-Id: FN-6797

Fusion-Task-Lineage: f94c7875-619a-47be-88f5-320a4dda3b34
2026-06-20 10:21:26 -07:00
gsxdsm
eca96fbd0b FN-6771: localize settings section copy
Localize dashboard settings section text and restore i18n lint coverage for those files.

- Replace hardcoded settings section labels, help text, placeholders, and status copy with i18n lookups.
- Add settings translation keys across supported app and common locale catalogs and refresh generated resource types.
- Remove the settings sections from the i18n lint deferral list and document that coverage requirement.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6771-localize-settings-sections.md   |   5 +
 docs/i18n-contributing.md                          |   3 +-
 i18next.config.ts                                  |  26 +-
 .../settings/sections/AgentPermissionsSection.tsx  |  55 +-
 .../settings/sections/AppearanceSection.tsx        |  91 +-
 .../settings/sections/AuthenticationSection.tsx    | 457 +++-------
 .../settings/sections/BackupsSection.tsx           | 229 ++---
 .../settings/sections/CommandsSection.tsx          |  49 +-
 .../settings/sections/ExperimentalSection.tsx      | 109 +--
 .../settings/sections/GeneralSection.tsx           | 487 ++++-------
 .../settings/sections/GlobalGeneralSection.tsx     | 183 +---
 .../settings/sections/GlobalModelsSection.tsx      | 525 ++++-------
 .../components/settings/sections/MemorySection.tsx | 458 +++-------
 .../components/settings/sections/MergeSection.tsx  | 863 ++++++------------
 .../settings/sections/NodeRoutingSection.tsx       | 108 +--
 .../settings/sections/NodeSyncSection.tsx          | 105 +--
 .../settings/sections/NotificationsSection.tsx     | 484 ++++------
 .../settings/sections/PluginsSection.tsx           | 105 +--
 .../settings/sections/ProjectModelsSection.tsx     | 971 ++++++++-------------
 .../components/settings/sections/RemoteSection.tsx | 560 +++++-------
 .../settings/sections/ResearchGlobalSection.tsx    | 314 ++-----
 .../settings/sections/ResearchProjectSection.tsx   | 226 ++---
 .../settings/sections/RuntimesSections.tsx         |  40 +-
 .../settings/sections/ScheduledEvalsSection.tsx    | 169 ++--
 .../settings/sections/SchedulingSection.tsx        | 381 ++------
 .../settings/sections/WorktreesSection.tsx         | 330 ++-----
 packages/i18n/locales/en/app.json                  | 698 ++++++++++++++-
 packages/i18n/locales/en/common.json               |   8 +
 packages/i18n/locales/es/app.json                  | 698 ++++++++++++++-
 packages/i18n/locales/es/common.json               |   8 +
 packages/i18n/locales/fr/app.json                  | 698 ++++++++++++++-
 packages/i18n/locales/fr/common.json               |   8 +
 packages/i18n/locales/ko/app.json                  | 698 ++++++++++++++-
 packages/i18n/locales/ko/common.json               |   8 +
 packages/i18n/locales/zh-CN/app.json               | 698 ++++++++++++++-
 packages/i18n/locales/zh-CN/common.json            |   8 +
 packages/i18n/locales/zh-TW/app.json               | 698 ++++++++++++++-
 packages/i18n/locales/zh-TW/common.json            |   8 +
 packages/i18n/src/resources.d.ts                   | 706 ++++++++++++++-
 39 files changed, 7178 insertions(+), 5097 deletions(-)

Fusion-Task-Id: FN-6771
Fusion-Task-Lineage: cdf9b36f-414e-4084-b661-b578a4c27314
2026-06-20 08:57:45 -07:00
gsxdsm
52924ba23d FN-6759: add built-in lead-generation workflow
Add a selectable business workflow for managing lead-generation tasks.

- Register a built-in lead-generation workflow with custom business columns, lead fields, and stage prompts.
- Cover workflow registration, column traits, field metadata, compilation, and IR round-tripping with core tests.
- Document the workflow catalog entry and add a minor changeset for the published CLI package.

Files changed:
 .changeset/fn-6759-lead-generation-workflow.md     |   5 +
 docs/workflow-steps.md                             |   4 +
 .../builtin-lead-generation-workflow-ir.test.ts    | 123 ++++++++++++++++++
 .../core/src/__tests__/builtin-workflows.test.ts   |  10 ++
 .../src/builtin-lead-generation-workflow-ir.ts     | 141 +++++++++++++++++++++
 packages/core/src/builtin-workflows.ts             |  20 +++
 packages/core/src/index.ts                         |   1 +
 7 files changed, 304 insertions(+)

Fusion-Task-Id: FN-6759

Fusion-Task-Lineage: 6c724f84-a6a6-4b01-93ec-cabb9387be2f
2026-06-20 08:43:35 -07:00
gsxdsm
281ce35829 FN-6761: add built-in marketing workflow
Add a content-focused workflow while preserving standard Fusion lifecycle and merge behavior.

- Register builtin:marketing in the built-in workflow catalog and default-enabled workflow order.
- Define marketing-specific columns, content brief/draft/editorial prompts, lifecycle traits, and merge primitives.
- Cover the marketing workflow in built-in workflow tests and document it in workflow-step docs.
- Add a minor changeset for the published Fusion package.

Files changed:
 .changeset/fn-6761-marketing-workflow.md           |   5 +
 docs/workflow-steps.md                             |   3 +
 .../core/src/__tests__/builtin-workflows.test.ts   |  64 +++++++++++-
 packages/core/src/builtin-marketing-workflow-ir.ts | 116 +++++++++++++++++++++
 packages/core/src/builtin-workflows.ts             |  24 +++++
 packages/core/src/index.ts                         |   1 +
 6 files changed, 209 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6761

Fusion-Task-Lineage: 3242eceb-570f-47f8-8750-dc3acc971bbd
2026-06-20 08:20:39 -07:00
gsxdsm
d2fc70ac91 FN-6793: enforce dependency gates before review
Dependency gating now blocks executor and review recovery paths when dependencies remain unmet.

- Re-check unmet scheduling dependencies before workflow graph or authoritative executor dispatch and requeue blocked tasks with blockedBy.
- Rebound auto-merge-eligible in-review tasks with live unmet dependencies back to todo while preserving progress, worktree, and resume state.
- Add run-audit documentation, a patch changeset, and regression coverage for executor, scheduler, and self-healing behavior.

Files changed:
 .changeset/fn-6793-dependency-gating.md            |   7 +
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   2 +
 .../engine/src/__tests__/executor-core.test.ts     |  68 +++++++++
 .../in-review-unmet-dependency-reconcile.test.ts   | 115 +++++++++++++++
 packages/engine/src/__tests__/scheduler.test.ts    |  36 +++++
 packages/engine/src/__tests__/self-healing.test.ts | 159 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |  46 ++++++
 packages/engine/src/self-healing.ts                | 112 +++++++++++++++
 9 files changed, 546 insertions(+)

Fusion-Task-Id: FN-6793

Fusion-Task-Lineage: b209264c-faae-41aa-a024-c33e0d8b61be
2026-06-20 08:13:33 -07:00
gsxdsm
083ebf8134 FN-6780: make i18n status check key parity
Make i18n status enforce catalog key parity while allowing empty fallback placeholders.

- Add a reusable i18n parity checker that reports missing and orphaned keys across secondary locales.
- Route pnpm i18n:status through the project parity gate and keep the upstream completeness report as i18n:status:report.
- Document that empty secondary locale strings are valid fallback placeholders and cover parity behavior with tests.

Files changed:
 docs/i18n-contributing.md                   |  18 +++-
 i18next.config.ts                           |  13 ++-
 package.json                                |   3 +-
 packages/i18n/scripts/check-i18n-parity.mjs | 110 +++++++++++++++++++++++
 packages/i18n/src/__tests__/config.test.ts  |   2 +-
 packages/i18n/src/__tests__/parity.test.ts  | 130 ++++++++++++++++++++++++++++
 packages/i18n/src/parity.ts                 | 126 +++++++++++++++++++++++++++
 7 files changed, 393 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6780

Fusion-Task-Lineage: f687586a-bc09-4f9d-843f-b7205eb40a58
2026-06-20 06:46:35 -07:00
gsxdsm
254f31ebb6 FN-6790: quiesce deferred task-created writes on close
Rescue task-document coverage by making TaskStore teardown stop late deferred task-created filesystem work.

- Track deferred title write and task-created hook phases so close can drain active work.
- Skip late deferred task-created work once a store is closing to avoid recreating removed fixture roots.
- Update task-document regression coverage, harness teardown awaiting, and rescue documentation while keeping task-documents loaded.

Files changed:
 docs/testing.md                                    |  4 ++
 packages/core/src/__tests__/store-test-helpers.ts  |  2 +-
 packages/core/src/__tests__/task-documents.test.ts | 39 ++++++++++-
 packages/core/src/store.ts                         | 75 +++++++++++++++-------
 packages/core/vitest.config.ts                     |  3 +
 5 files changed, 96 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-6790

Fusion-Task-Lineage: c458fc4a-b2b4-4cc4-9d88-da8c43f6916d
2026-06-20 05:53:46 -07:00
gsxdsm
7f3e94292c FN-6760: add built-in design workflow
Add a built-in workflow path for UI-heavy implementation work with a required design review gate.

- Register builtin:design as a selectable built-in workflow after implementation and before standard review/merge.
- Define design review criteria covering hierarchy, spacing, typography, design tokens, component reuse, responsiveness, and design-language fit.
- Add catalog coverage and update workflow documentation to list the new Design workflow.
- Add a minor changeset for the published Fusion package.

Files changed:
 .changeset/fn-6760-design-workflow.md              |  5 +++++
 docs/getting-started.md                            |  2 +-
 docs/workflow-editor.md                            |  4 ++++
 docs/workflow-steps.md                             |  1 +
 .../core/src/__tests__/builtin-workflows.test.ts   | 23 +++++++++++++++++++++
 packages/core/src/builtin-workflows.ts             | 24 ++++++++++++++++++++++
 6 files changed, 58 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6760

Fusion-Task-Lineage: 2682ce3f-a89d-4237-b2cf-675439eea1d6
2026-06-20 05:14:25 -07:00
gsxdsm
c32c925321 FN-6783: recover orphaned task dirs into the task index
Reconcile on-disk task.json records that are missing from SQLite without resurrecting tombstoned IDs.

- Add TaskStore orphaned task directory scanning with metadata validation, FTS-safe insertion, cache updates, lifecycle events, and run-audit entries.
- Run the reconcile during store init and self-healing maintenance for tasks created after startup.
- Cover recovery, skip, and maintenance behavior with core and engine regression tests.
- Document task index reconciliation and add the published package changeset.

Files changed:
 .changeset/fn-6783-orphaned-task-dir-reconcile.md  |   5 +
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   2 +
 docs/storage.md                                    |   8 +
 .../store-orphaned-task-dir-reconcile.test.ts      | 179 +++++++++++++++++++++
 packages/core/src/store.ts                         | 170 ++++++++++++++++++-
 .../self-healing-orphaned-task-dirs.test.ts        |  40 +++++
 packages/engine/src/self-healing.ts                |  14 ++
 8 files changed, 412 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6783
Fusion-Task-Lineage: 5c8d4690-5278-4c29-8f02-32d9f01d581d
2026-06-20 04:40:31 -07:00
gsxdsm
adbb1bbaaf FN-6787: remove duplicate sidebar branding
Keep project identity controls in the Header while preserving sidebar navigation behavior.

- Remove the Fusion logo, wordmark, and project selector from the experimental left sidebar.
- Keep the sidebar collapse control reachable in expanded and collapsed modes.
- Update sidebar tests and dashboard docs to cover the simplified navigation surface.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 .../dashboard/app/components/LeftSidebarNav.css    | 35 +-----------
 .../dashboard/app/components/LeftSidebarNav.tsx    | 33 ++----------
 .../components/__tests__/LeftSidebarNav.test.tsx   | 63 +++++++++++++++++++++-
 4 files changed, 67 insertions(+), 66 deletions(-)

Fusion-Task-Id: FN-6787
Fusion-Task-Lineage: 18321939-4a68-48c2-bdbe-18e69e198a57
2026-06-20 04:19:48 -07:00
gsxdsm
d2c7ff5f95 FN-6751: show idle task chat warning
Make task-detail chat disclose when sent guidance will not receive an immediate agent reply.

- Add an idle session hint for non-done tasks without an active steerable agent while keeping the composer sendable.
- Style the idle hint with warning color and expose a stable test id for regression coverage.
- Expand TaskChatTab tests across inline, expanded, empty, populated, paused, and non-live session states.
- Document the idle saved-guidance behavior in the dashboard guide.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/components/TaskChatTab.css  |  5 ++
 packages/dashboard/app/components/TaskChatTab.tsx  | 13 ++-
 .../app/components/__tests__/TaskChatTab.test.tsx  | 95 +++++++++++++++++++---
 4 files changed, 99 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-6751

Fusion-Task-Lineage: 21f0764d-23db-49ca-b737-3b6a8be7a918
2026-06-20 02:56:51 -07:00
gsxdsm
7eceec00cc FN-6763: add themed workflow status switcher
Add a reusable dashboard workflow picker that shows inline task status counts across board and list views.

- Replace native workflow selects with a themed accessible dropdown component.
- Share workflow status count calculation between board and list views.
- Add styling, i18n labels, tests, and dashboard docs for the switcher behavior.

Files changed:
 docs/dashboard-guide.md                            |   3 +-
 packages/dashboard/app/components/Board.tsx        |  28 +--
 packages/dashboard/app/components/Lane.css         |   2 +
 .../dashboard/app/components/LeftSidebarNav.tsx    |   2 +-
 packages/dashboard/app/components/ListView.css     |  17 --
 packages/dashboard/app/components/ListView.tsx     |  31 ++-
 .../dashboard/app/components/WorkflowSwitcher.css  | 186 ++++++++++++++
 .../dashboard/app/components/WorkflowSwitcher.tsx  | 270 +++++++++++++++++++++
 .../app/components/__tests__/Board.test.tsx        |  60 +++--
 .../app/components/__tests__/ListView.test.tsx     |  79 +++++-
 .../components/__tests__/WorkflowSwitcher.test.tsx |  92 +++++++
 .../__tests__/workflowStatusCounts.test.ts         | 122 ++++++++++
 .../app/components/workflowStatusCounts.ts         |  54 +++++
 packages/i18n/locales/en/app.json                  |   9 +
 packages/i18n/locales/es/app.json                  |   9 +
 packages/i18n/locales/fr/app.json                  |   9 +
 packages/i18n/locales/ko/app.json                  |   9 +
 packages/i18n/locales/zh-CN/app.json               |   9 +
 packages/i18n/locales/zh-TW/app.json               |   9 +
 19 files changed, 930 insertions(+), 70 deletions(-)

Fusion-Task-Id: FN-6763
Fusion-Task-Lineage: 3503ea85-841a-4cd3-9960-1b22ef2cd4ea
2026-06-20 02:08:36 -07:00
gsxdsm
58a6dccfb2 FN-6758: set shadcn theme accent orange
Update the default shadcn dashboard theme to use orange highlight accents while keeping its neutral base.\n\n- Set dark and light shadcn accent tokens and accent text for orange highlights.\n- Update shadcn theme swatches and documentation to reflect the orange accent.\n- Adjust theme tests to assert the orange accent token and preserved glow neutralization.\n\nFiles changed:\n docs/dashboard-guide.md                                 |  2 +-\n packages/dashboard/app/components/ThemeSelector.css     |  4 ++--\n packages/dashboard/app/hooks/__tests__/useTheme.test.ts | 12 ++++++++----\n packages/dashboard/app/public/theme-data.css            | 11 +++++++----\n 4 files changed, 18 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-6758

Fusion-Task-Lineage: b4fe5a6d-416e-4cd1-be57-7e6da5a07f59
2026-06-20 01:43:20 -07:00
gsxdsm
7559883940 FN-6765: fix mobile nav mailbox duplication
Keep Mailbox as a single top-level entry while Todos stays in overflow navigation.

- Remove the duplicate Mailbox action from the mobile More sheet while preserving its primary-tab badges.
- Cover desktop, tablet, and mobile navigation placement expectations for Todos and Mailbox.
- Update dashboard docs to describe compact Header and mobile bottom-nav mailbox indicators.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 .../mobile-feature-access-regression.test.tsx      |  3 +-
 packages/dashboard/app/components/MobileNavBar.tsx | 22 +++---------
 .../app/components/__tests__/Header.test.tsx       | 19 +++++++----
 .../app/components/__tests__/MobileNavBar.test.tsx | 39 ++++++++++++++++++----
 5 files changed, 52 insertions(+), 33 deletions(-)

Fusion-Task-Id: FN-6765
Fusion-Task-Lineage: e32f271e-7dab-43e0-b824-da598641aa77
2026-06-20 01:34:51 -07:00
gsxdsm
2e3b965909 FN-6757: smooth mobile Quick Chat keyboard resizing
Smooth Quick Chat mobile panel height changes while keeping viewport sampling synchronous.\n\n- Add Android resize-content detection that toggles height easing only for coarse keyboard viewport samples.\n- Clear smoothing and viewport CSS variables on blur, unmount, and suppressed shrink paths.\n- Cover Android smoothing, iOS offsetTop refocus, Latest gate, and streaming state with Quick Chat regression tests.\n- Document the mobile keyboard smoothing behavior and add a published package changeset.\n\nFiles changed:\n .changeset/smooth-mobile-quick-chat-keyboard.md    |   5 +\n docs/dashboard-guide.md                            |   1 +\n .../quick-chat-mobile-keyboard-board-shift.md      |   2 +\n packages/dashboard/app/components/QuickChatFAB.css |   8 ++\n packages/dashboard/app/components/QuickChatFAB.tsx |  17 +++\n .../app/components/__tests__/QuickChatFAB.test.tsx | 141 +++++++++++++++++++++\n 6 files changed, 174 insertions(+)

Fusion-Task-Id: FN-6757

Fusion-Task-Lineage: d301aee8-ef76-4d70-a4cd-91641bb05259
2026-06-20 00:41:36 -07:00
gsxdsm
24fd4952bb FN-6753: isolate routes-auth from dashboard backfill
Preserve auth route coverage by moving the suite out of the contended API backfill shard.\n\n- Add routes-auth to the curated dashboard API quality shard.\n- Document the FN-6753 suite-load coupling classification and shard-isolation remedy.\n\nFiles changed:\n docs/testing.md                     | 4 ++++\n packages/dashboard/vitest.config.ts | 7 ++++++-\n 2 files changed, 10 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6753

Fusion-Task-Lineage: 4da2f45f-87ba-4b80-baed-68dbde93a09e
2026-06-20 00:30:54 -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
24246fba2b FN-6772: add experimental left sidebar navigation
Add a flag-gated desktop/tablet sidebar navigation surface while preserving mobile navigation behavior.

- Add LeftSidebarNav with project selection, primary and overflow destinations, badges, collapsed state, and resize persistence.
- Wire the experimental flag through App and Header so the sidebar owns non-mobile navigation when enabled.
- Style the sidebar shell, resize handle, collapsed rail, and project selector adaptations.
- Document the experiment and cover sidebar/mobile navigation regressions with tests.

Files changed:
 docs/dashboard-guide.md                            |  10 +
 packages/dashboard/app/App.tsx                     |  52 ++-
 .../mobile-feature-access-regression.test.tsx      |  94 ++++-
 packages/dashboard/app/components/Header.tsx       |  12 +-
 .../dashboard/app/components/LeftSidebarNav.css    | 217 ++++++++++
 .../dashboard/app/components/LeftSidebarNav.tsx    | 465 +++++++++++++++++++++
 .../dashboard/app/components/ProjectSelector.css   |  20 +
 .../dashboard/app/components/SettingsModal.tsx     |   1 +
 .../components/__tests__/LeftSidebarNav.test.tsx   | 201 +++++++++
 9 files changed, 1063 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6772
Fusion-Task-Lineage: 13ba4ea0-e64b-47a0-abf0-3134a750007a
2026-06-19 23:28:35 -07:00
gsxdsm
d4d7623ee0 FN-6749: rebaseline i18n lint guardrail
Rebaseline the i18n hardcoded-string lint guardrail for shipping dashboard surfaces.

- Add scoped i18n lint ignores for non-shipping tests, stories, and deferred source-copy files with follow-up rationale.
- Localize remaining plugin/view copy and replace technical glyph literals that should not be linted as prose.
- Refresh synced locale catalogs and generated resource types, and document the lint baseline policy.

Files changed:
 .changeset/fn-6749-i18n-lint-rebaseline.md         |    5 +
 docs/i18n-contributing.md                          |   14 +
 i18next.config.ts                                  |   96 ++
 .../dashboard/app/components/AgentDetailView.tsx   |    4 +-
 .../app/components/ConversationHistory.tsx         |    4 +-
 .../app/components/DockerNodeOnboardingModal.tsx   |    8 +-
 .../components/MilestoneSliceInterviewModal.tsx    |    4 +-
 .../app/components/MissionInterviewModal.tsx       |    4 +-
 .../app/components/ModelSelectionModal.tsx         |    4 +-
 .../dashboard/app/components/NodeDetailModal.tsx   |   15 +-
 .../dashboard/app/components/PlanningModeModal.tsx |    4 +-
 .../dashboard/app/components/SessionTerminal.tsx   |   15 +-
 .../app/components/SubtaskBreakdownModal.tsx       |    4 +-
 packages/dashboard/app/components/TaskForm.tsx     |    4 +-
 .../dashboard/app/components/TerminalModal.tsx     |   18 +-
 .../dashboard/app/plugins/pluginViewRegistry.tsx   |    7 +-
 packages/i18n/locales/en/app.json                  |  890 +++++++++---
 packages/i18n/locales/en/common.json               |   82 +-
 packages/i18n/locales/es/app.json                  |  986 ++++++++++---
 packages/i18n/locales/es/common.json               |   82 +-
 packages/i18n/locales/fr/app.json                  |  986 ++++++++++---
 packages/i18n/locales/fr/common.json               |   82 +-
 packages/i18n/locales/ko/app.json                  | 1482 ++++++++++++++------
 packages/i18n/locales/ko/cli.json                  |    8 +-
 packages/i18n/locales/ko/common.json               |   82 +-
 packages/i18n/locales/zh-CN/app.json               | 1482 ++++++++++++++------
 packages/i18n/locales/zh-CN/cli.json               |    8 +-
 packages/i18n/locales/zh-CN/common.json            |   82 +-
 packages/i18n/locales/zh-TW/app.json               | 1482 ++++++++++++++------
 packages/i18n/locales/zh-TW/cli.json               |    8 +-
 packages/i18n/locales/zh-TW/common.json            |   82 +-
 packages/i18n/src/resources.d.ts                   |  459 +++---
 32 files changed, 6055 insertions(+), 2438 deletions(-)

Fusion-Task-Id: FN-6749

Fusion-Task-Lineage: 789a7cbb-fdf8-4190-8cd2-6bf7d5e2d552
2026-06-19 22:14:57 -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
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
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
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