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