Commit Graph

9161 Commits

Author SHA1 Message Date
gsxdsm
fbd9ad2f3b FN-6617: add weekly test velocity baseline
Adds a report-only weekly baseline for test feedback-loop velocity.

- Add a test:velocity script that measures gate, boot smoke, and changed-only test durations and regenerates a #leads-ready report.
- Track committed baseline history, slowest-file summaries, and quarantine deletion-clock counts.
- Document the weekly refresh workflow in testing guidance and agent instructions.

Files changed:
 AGENTS.md                                         |   4 +-
 docs/test-velocity-baseline.md                    |  92 ++++++
 docs/testing.md                                   |  18 ++
 package.json                                      |   1 +
 scripts/__tests__/test-velocity-baseline.test.mjs | 121 ++++++++
 scripts/test-velocity-baseline.mjs                | 339 ++++++++++++++++++++++
 scripts/test-velocity-history.json                | 231 +++++++++++++++
 7 files changed, 805 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6617

Fusion-Task-Lineage: 50a07298-74ec-4481-b288-4fadb7d3d29b
2026-06-17 20:09:05 -07:00
gsxdsm
a013bc0309 FN-6607: align step tools with zero-based prompt steps
Align executor step tools and review bookkeeping with the 0-based Step N labels agents see in PROMPT.md.

- Treat fn_task_update and fn_review_step step parameters as 0-indexed values, including validation, logs, checkpoints, and review verdict maps.
- Update executor/reviewer/step-runner guidance and generated tool docs to describe Step 0 semantics consistently.
- Adjust affected executor and reliability tests and add coverage proving Step 0 progress, review, and revise handling work without off-by-one shifts.
- Add a patch changeset for the published Fusion CLI package.

Files changed:
 .changeset/fn-6607-step-numbering.md               |   5 +
 .../cli/skill/fusion/references/engine-tools.md    |   4 +-
 .../engine/src/__tests__/executor-pause.test.ts    |   2 +-
 .../executor-review-step-indexing.test.ts          |  18 +-
 .../src/__tests__/executor-review-verdicts.test.ts |  18 +-
 .../executor-step-numbering-zero-based.test.ts     | 196 +++++++++++++++++++++
 .../src/__tests__/executor-step-session.test.ts    |  24 ++-
 ...executor-task-done-revise-verdict-guard.test.ts |   4 +-
 .../executor-pending-review-skip-retry.test.ts     |   8 +-
 .../task-done-refusal-x-invariant.test.ts          |   2 +-
 packages/engine/src/__tests__/step-runner.test.ts  |   4 +-
 packages/engine/src/executor.ts                    |  57 +++---
 packages/engine/src/reviewer.ts                    |   3 +
 packages/engine/src/step-runner.ts                 |   6 +-
 14 files changed, 284 insertions(+), 67 deletions(-)

Fusion-Task-Id: FN-6607

Fusion-Task-Lineage: 1b1fb1d8-07ca-4a33-84f5-1dab83388c01
2026-06-17 19:52:20 -07:00
gsxdsm
4c3186d0d1 FN-6615: prefer fresh plugin source over stale dist
Plugin entry resolution now avoids stale gitignored dist output in dev worktrees.

- Prefer bundled plugin entries when present, preserving published tarball behavior.
- Choose src/index.ts over dist/index.js when source files are newer than dist output.
- Cover CLI and core plugin loaders with freshness and sync tests.
- Add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6615-prefer-fresh-src.md             |  5 ++
 .../__tests__/bundled-plugin-install.test.ts       | 46 ++++++++---
 .../resolve-plugin-entry-path-sync.test.ts         | 50 ++++++++++--
 packages/cli/src/plugins/bundled-plugin-install.ts | 93 ++++++++++++++++++----
 packages/core/src/__tests__/plugin-loader.test.ts  | 71 ++++++++++++++++-
 packages/core/src/plugin-loader.ts                 | 93 ++++++++++++++++++----
 6 files changed, 313 insertions(+), 45 deletions(-)

Fusion-Task-Id: FN-6615

Fusion-Task-Lineage: 3d9abfa8-a405-47fa-8330-451c26a0ee75
2026-06-17 19:46:47 -07:00
gsxdsm
f150a176b4 FN-6612: add test feedback-loop baseline reporting
Add a weekly baseline workflow for tracking test feedback-loop speed and flake pressure.

- Add a stdlib-only script to record gate and pnpm test timings alongside slowest test files and quarantine counts.
- Publish generated markdown and JSON baseline artifacts for #leads reporting.
- Document the weekly refresh process and add package scripts plus coverage for the baseline helper.

Files changed:
 docs/test-feedback-loop-baseline.md               |  48 ++++++
 docs/test-feedback-loop-baselines.json            | 122 ++++++++++++++
 docs/testing.md                                   |  12 ++
 package.json                                      |   1 +
 scripts/__tests__/test-feedback-baseline.test.mjs |  90 ++++++++++
 scripts/test-feedback-baseline.mjs                | 192 ++++++++++++++++++++++
 6 files changed, 465 insertions(+)

Fusion-Task-Id: FN-6612

Fusion-Task-Lineage: 72bdc070-50e3-4e6b-a07d-3b8aeb9c2e92
2026-06-17 19:25:06 -07:00
gsxdsm
c4878514f9 FN-6600: harden core worker-root teardown retries
Harden the core Vitest worker-root cleanup path and rescue the related broad-suite quarantines.

- Increase bounded retries for transient ENOTEMPTY/EBUSY worker-root cleanup races.
- Add teardown coverage proving transient ENOTEMPTY retries remove the worker root.
- Remove rescued core quarantine entries from the ledger and Vitest exclude list.
- Document the FN-6600 core cleanup rescue pattern in testing guidance.

Files changed:
 docs/testing.md                                    |  2 ++
 .../core/src/__test-utils__/vitest-teardown.ts     |  7 +++++-
 .../vitest-teardown-worker-root-cleanup.test.ts    | 27 ++++++++++++++++++++++
 packages/core/vitest.config.ts                     |  6 +++--
 scripts/lib/test-quarantine.json                   | 15 ------------
 5 files changed, 39 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-6600

Fusion-Task-Lineage: 107fb5cf-82c8-4e65-915d-0ef69725369b
2026-06-17 19:19:05 -07:00
gsxdsm
7f4f611367 FN-6611: clarify engineer backlog auto-claim routing
Clarifies why engineer agents see but do not auto-claim backlog tasks without opt-in.

- Surface actionable project and per-agent opt-in guidance in no-task heartbeat prompts.
- Include eligible backlog candidates in the blocked engineer guidance so routing remains visible.
- Cover disabled engineer auto-claim scenarios with prompt assertions.
- Update agent and settings docs with the visible configuration paths.

Files changed:
 docs/agents.md                                        |  2 +-
 docs/settings-reference.md                            |  2 +-
 .../engine/src/__tests__/heartbeat-executor.test.ts   | 11 +++++++++--
 packages/engine/src/agent-heartbeat.ts                | 19 ++++++++++++++++---
 4 files changed, 27 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6611

Fusion-Task-Lineage: ffcafc50-1664-4807-826c-cccf68d31012
2026-06-17 19:11:31 -07:00
gsxdsm
5c0c162a2b FN-6609: fix command center CSS token hygiene
Command Center styles now rely on canonical muted text and shadow tokens.

- Replace deprecated --text-secondary usages in command center styles with --text-muted.
- Remove the raw rgba fallback from the date range popover shadow token.
- Document the command-center styling token requirements with FNXC comments.

Files changed:
 .../app/components/command-center/CommandCenter.css   | 13 +++++++++----
 .../app/components/command-center/DateRangePicker.css |  8 ++++++--
 .../components/command-center/MissionControlPanel.css | 11 ++++++++---
 .../app/components/command-center/areas/areas.css     | 19 ++++++++++++-------
 .../app/components/command-center/charts/charts.css   | 11 ++++++++---
 5 files changed, 43 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-6609
Fusion-Task-Lineage: 8a02f4a3-a881-4db6-893e-363b74cbfba8
2026-06-17 18:54:24 -07:00
gsxdsm
1bd8f6de6f FN-6603: fix mobile terminal font measurement
Stabilize terminal glyph measurement by keeping monospace text fonts ahead of symbols fallbacks.

- Move the Fusion Terminal Nerd Font Symbols face behind real monospace fonts in the shared xterm font stack and terminal presets.
- Document the mobile WebKit cell-measurement hazard and keep SessionTerminal aligned with the shared preference path.
- Add regression coverage for mobile wide-glyph spacing, preference presets, and terminal input rendering.
- Add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/fn-6603-terminal-render.md              |  5 +++
 .../xterm-symbols-nerd-font-unicode-range.md       | 17 ++++++---
 .../dashboard/app/__tests__/terminal-input.test.ts | 42 ++++++++++++++++++++--
 .../dashboard/app/components/SessionTerminal.tsx   |  3 ++
 .../dashboard/app/components/TerminalModal.css     |  5 ++-
 .../__tests__/SessionTerminal.mobile.test.tsx      | 22 +++++++++++-
 .../components/__tests__/SessionTerminal.test.tsx  | 23 ++++++++++--
 .../dashboard/app/utils/terminalPreferences.ts     | 14 +++++---
 8 files changed, 115 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-6603

Fusion-Task-Lineage: b5d90064-1bfd-4da9-8d89-c95cf6fcec0c
2026-06-17 18:48:53 -07:00
gsxdsm
19aac38c51 FN-6605: load chat skill slash commands
Load dashboard chat slash-command skill requests into model-loop sessions.

- Parse /skill:{name} tokens in main chat, QuickChat, and room responders.
- Merge typed skill requests with existing agent and plugin skill selection while preserving normal filters.
- Strip slash-command tokens from model prompts without mutating persisted chat history.
- Cover slash-command parsing, deduplication, prompt stripping, and room responder skill selection.
- Document dashboard chat skill command behavior and add a published package changeset.

Files changed:
 .changeset/fn-6605-chat-skill-slash-command.md     |   5 +
 docs/agents.md                                     |   1 +
 docs/dashboard-guide.md                            |   1 +
 .../dashboard/src/__tests__/chat-manager.test.ts   | 158 +++++++++++++++++++++
 .../dashboard/src/__tests__/chat.rooms.test.ts     |  46 ++++++
 packages/dashboard/src/chat.ts                     | 100 ++++++++++++-
 6 files changed, 307 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6605

Fusion-Task-Lineage: 4ad2e015-30a5-4608-b69c-e42e46166f0e
2026-06-17 18:37:01 -07:00
gsxdsm
b20def94d2 FN-6592: rescue mission restart integration coverage
Rescue mission integration restart coverage while keeping unrelated core quarantines intact.

- Close reopened TaskStore handles during mission integration restart tests.
- Add restart-fidelity assertions for empty and populated mission hierarchy read paths.
- Document that mission-integration stays out of the core quarantine list.

Files changed:
 .../core/src/__tests__/mission-integration.test.ts | 140 +++++++++++++++++----
 packages/core/vitest.config.ts                     |   4 +-
 2 files changed, 121 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6592

Fusion-Task-Lineage: 292caa5d-eb18-4356-bcaf-a9c1796a7815
2026-06-17 18:25:10 -07:00
gsxdsm
076ab9fed0 FN-6604: increase task chat send icon size
Increase the Task Detail chat send glyph so it is visibly larger on mobile without changing the touch target.

- Switch the task chat send button icon token from space-lg to space-xl for desktop and mobile rules.
- Add CSS token resolution coverage so the task chat send glyph must exceed the default medium icon size.
- Keep desktop and mobile send button touch target sizing unchanged.

Files changed:
 packages/dashboard/app/components/TaskChatTab.css  |  7 ++--
 .../app/components/__tests__/TaskChatTab.test.tsx  | 37 +++++++++++++++++++---
 2 files changed, 38 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6604

Fusion-Task-Lineage: d1708d43-fe1b-4eb2-ab6a-c5954ff00a87
2026-06-17 18:18:56 -07:00
gsxdsm
1d76e9d02c FN-6602: delay scripted terminal input until PTY readiness
Wait for new terminal sessions to become ready before injecting saved-script commands.

- Add PTY readiness tracking with first-output, quiet-window, timeout, and cleanup resolution paths.
- Wait for readiness before messaging script routes write generated command input.
- Cover readiness timing, cleanup behavior, and route-level delayed write behavior with tests.

Files changed:
 .../src/__tests__/scripts-routes.routes.test.ts    |  54 ++++++++
 .../src/__tests__/terminal-service.test.ts         | 143 ++++++++++++++++++++-
 .../src/routes/register-messaging-scripts.ts       |   5 +
 packages/dashboard/src/terminal-service.ts         |  91 +++++++++++++
 4 files changed, 292 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6602

Fusion-Task-Lineage: a38a7222-ecb7-4567-9d47-946678088076
2026-06-17 18:08:55 -07:00
gsxdsm
ca14a12b94 FN-6601: consolidate relative-time bucket formatting
Consolidate dashboard relative-time calculations behind a shared bucket helper while preserving each surface's display behavior.

- Add getRelativeTimeBucket to centralize parsing, boundary math, and bucket metadata.
- Route ActivityFeed, AgentLogViewer, MissionManager, and PlanningModeModal timestamp labels through the shared helper.
- Extend unit coverage for bucket boundaries plus surface-specific just-now and future timestamp behavior.

Files changed:
 packages/dashboard/app/components/ActivityFeed.tsx | 36 ++++++----
 .../dashboard/app/components/AgentLogViewer.tsx    | 36 ++++++----
 .../dashboard/app/components/MissionManager.tsx    | 32 +++++----
 .../dashboard/app/components/PlanningModeModal.tsx | 35 ++++++----
 .../app/components/__tests__/ActivityFeed.test.tsx |  8 +++
 .../components/__tests__/AgentLogViewer.test.tsx   |  8 +++
 .../app/utils/__tests__/relativeTimeAgo.test.ts    | 77 +++++++++++++++++++++-
 packages/dashboard/app/utils/relativeTimeAgo.ts    | 66 +++++++++++++++----
 8 files changed, 236 insertions(+), 62 deletions(-)

Fusion-Task-Id: FN-6601

Fusion-Task-Lineage: 3521afa0-f3ce-49a4-8861-efd4f64f9a69
2026-06-17 17:57:19 -07:00
gsxdsm
5b9ff047d3 FN-6599: preserve chat thread during streaming attach
Keep existing chat history visible when attaching to an in-flight streaming response.

- Commit attach-triggered message loads for the streaming session before active session refs settle.
- Avoid clearing cached main chat messages on attach cache misses while fetching prior thread history.
- Add regression coverage for main chat and QuickChat streaming thread visibility, plus quarantine ledger updates.

Files changed:
 .changeset/fn-6599-chat-streaming-thread.md        |   5 +
 docs/architecture.md                               |   1 +
 docs/dashboard-guide.md                            |   2 +-
 packages/core/vitest.config.ts                     |   1 +
 .../__tests__/ChatView.streaming-thread.test.tsx   | 168 +++++++++++++++++++++
 .../dashboard/app/hooks/__tests__/useChat.test.ts  |  51 +++++++
 .../app/hooks/__tests__/useQuickChat.test.ts       |  39 +++++
 packages/dashboard/app/hooks/useChat.ts            |  37 +++--
 packages/dashboard/app/hooks/useQuickChat.ts       |  27 ++--
 scripts/lib/test-quarantine.json                   |   5 +
 10 files changed, 307 insertions(+), 29 deletions(-)

Fusion-Task-Id: FN-6599

Fusion-Task-Lineage: b2c94391-6a5b-4048-836d-e4bc56e16786
2026-06-17 17:49:20 -07:00
gsxdsm
48da420414 FN-6593: delete unresolved flaky test quarantines
Delete unresolved quarantined flaky tests under the deletion ratchet while preserving newer active quarantines.

- Remove four flaky test files that were not rescued before the ratchet follow-up.
- Drop their matching Vitest excludes and quarantine ledger entries.
- Preserve later sync, work-bridge, and core quarantine records from main.

Files changed:
 .../src/__tests__/github-tracking-hook.test.ts     | 592 ---------------------
 packages/dashboard/vitest.config.ts                |   8 +-
 .../src/__tests__/cli-agent-executor.test.ts       | 404 --------------
 packages/engine/vitest.config.ts                   |   5 +-
 .../src/__tests__/orchestrator-flow.test.ts        | 156 ------
 .../src/__tests__/skill-wiring.test.ts             | 101 ----
 .../vitest.config.ts                               |   6 +-
 scripts/lib/test-quarantine.json                   |  20 -
 8 files changed, 13 insertions(+), 1279 deletions(-)

Fusion-Task-Id: FN-6593

Fusion-Task-Lineage: 1165ba24-894a-4cc9-b678-50ae1625ba6b
2026-06-17 17:37:08 -07:00
gsxdsm
cc793987b2 FN-6596: guard compound engineering debug launches
Guard Compound Engineering debug stage launches against stale stage settings and artifacts.

- Add source-level coverage proving stale enabledStages snapshots do not block registered CE stages, including debug.
- Add dist freshness checks for the disabledStages opt-out launch model so stale compiled plugin artifacts fail fast.
- Mirror newly observed core suite-load flakes in the quarantine ledger and Vitest excludes.

Files changed:
 packages/core/vitest.config.ts                     |  5 ++
 .../src/__tests__/dist-freshness.test.ts           | 38 +++++++++++++++
 .../src/__tests__/stage-launch-guard.test.ts       | 57 ++++++++++++++++++++++
 scripts/lib/test-quarantine.json                   | 10 ++++
 4 files changed, 110 insertions(+)

Fusion-Task-Id: FN-6596

Fusion-Task-Lineage: 3cd75e5f-c6f8-4bde-8202-54eeac82b894
2026-06-17 17:21:22 -07:00
gsxdsm
822d5d1872 fix(FN-6587): stabilize test lanes under production env
Normalize spawned Vitest processes to NODE_ENV=test so React/jsdom lanes do not inherit release-shell production mode. Split the compound-engineering plugin Vitest projects so Node-only setup and teardown only run in Node lanes, and quarantine the remaining broad-lane CE timeout flakes under the deletion ratchet.
2026-06-17 17:13:13 -07:00
gsxdsm
01b80db603 FN-6589: add structured ask-question chat tool
Add a native chat-agent tool for presenting structured questions to dashboard users.

- Register `fn_ask_question` for dashboard chat sessions with prompt guidance to wait for user replies.
- Reuse the existing structured question card parser by recognizing the new tool name.
- Validate ask-question parameters in engine tooling and cover chat/parser behavior with tests.
- Document the dashboard chat question flow and add a patch changeset.

Files changed:
 .changeset/fn-6589-chat-ask-question.md            |  5 ++
 docs/dashboard-guide.md                            |  3 +-
 .../utils/__tests__/parseQuestionToolCall.test.ts  | 19 +++++
 .../dashboard/app/utils/parseQuestionToolCall.ts   |  3 +-
 .../dashboard/src/__tests__/chat-manager.test.ts   | 10 ++-
 packages/dashboard/src/chat.ts                     | 10 ++-
 .../src/__tests__/agent-tools-ask-question.test.ts | 51 ++++++++++++
 packages/engine/src/agent-tools.ts                 | 94 ++++++++++++++++++++++
 packages/engine/src/index.ts                       |  2 +
 9 files changed, 190 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6589
Fusion-Task-Lineage: 3f416010-ed2f-40b3-a899-7a9f4a6ed265
2026-06-17 16:53:29 -07:00
gsxdsm
c261217ac1 FN-6597: add task chat timestamps
Show compact relative timestamps in task chat without adding live polling.

- Add a shared relative-time formatter for chat timestamps.
- Render muted timestamps on user message headers and agent group metadata.
- Cover timestamp formatting and chat header rendering with dashboard tests.
- Document task chat timestamp behavior in the dashboard guide.

Files changed:
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/components/TaskChatTab.css  | 19 +++++
 packages/dashboard/app/components/TaskChatTab.tsx  | 23 ++++-
 .../app/components/__tests__/TaskChatTab.test.tsx  | 97 +++++++++++++++++++++-
 .../app/utils/__tests__/relativeTimeAgo.test.ts    | 32 +++++++
 packages/dashboard/app/utils/relativeTimeAgo.ts    | 23 +++++
 6 files changed, 192 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6597

Fusion-Task-Lineage: 52c54a9e-6d00-4df1-a454-2218a935ebda
2026-06-17 16:21:54 -07:00
gsxdsm
98baddc3b6 FN-6595: fix mobile Command Center scrolling
Keep Command Center content scrollable inside the mobile dashboard shell.

- Let the Command Center fill the flex parent without forcing the page taller than the viewport.
- Make the tab panel the vertical scroll owner while keeping the header and tabs pinned.
- Add regression coverage for the scroll-owner contract across mobile and non-mobile breakpoints.

Files changed:
 .../components/command-center/CommandCenter.css    | 20 ++++++
 .../__tests__/CommandCenter.mobile-scroll.test.tsx | 78 ++++++++++++++++++++++
 2 files changed, 98 insertions(+)

Fusion-Task-Id: FN-6595

Fusion-Task-Lineage: 1d069dff-60af-4756-9ad4-27a48dad0e86
2026-06-17 15:49:06 -07:00
gsxdsm
e48df026c6 FN-6594: classify Codex transcript desync as non-continuable
Recognize Codex transcript replay desync failures so completed tasks can recover instead of wedging.

- Add Codex transcript-desync matching to non-continuable session error detection.
- Cover canonical and symmetric missing function-call-output messages while excluding auth, quota, and ordinary bad-input errors.
- Add self-healing coverage for post-done wedges with Codex envelope and log evidence.

Files changed:
 .../post-done-continuation-no-wedge.test.ts        | 72 ++++++++++++++++++++++
 .../src/__tests__/transient-error-detector.test.ts | 24 +++++++-
 packages/engine/src/transient-error-detector.ts    |  7 ++-
 3 files changed, 101 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6594

Fusion-Task-Lineage: 517f39c8-9bbb-47d2-a4a4-495eaf8c3fca
2026-06-17 15:11:55 -07:00
gsxdsm
e064becba5 FN-6583: reject dangling workflow edges
Workflow validation now rejects unresolved graph endpoints before editor evidence can miss fail-closed gaps.

- Validate every top-level workflow edge source and target against declared nodes.
- Cover dangling source and target endpoints while preserving valid linear and rework-region edges.
- Add desktop compact-graph cycle rejection coverage for the workflow editor toast path.

Files changed:
 packages/core/src/__tests__/workflow-ir.test.ts    | 80 ++++++++++++++++++++++
 packages/core/src/workflow-ir.ts                   | 17 +++++
 .../__tests__/WorkflowNodeEditor.test.tsx          | 22 ++++++
 3 files changed, 119 insertions(+)

Fusion-Task-Id: FN-6583

Fusion-Task-Lineage: 24bcb426-1c98-408d-9a50-562911143231
2026-06-17 14:56:07 -07:00
gsxdsm
167084f19e FN-6585: add workflow restart durability coverage
Add focused store-level coverage for preserving explicit workflow selections across restarts.

- Cover default, custom, built-in, and create-time workflow selection persistence after reopening the disk-backed task store.
- Verify branch progress and foreach step instances survive restarts for selected custom workflows.
- Assert missing custom workflow definitions fail closed without corrupting existing selections.

Files changed:
 .../__tests__/workflow-restart-durability.test.ts  | 288 +++++++++++++++++++++
 1 file changed, 288 insertions(+)

Fusion-Task-Id: FN-6585

Fusion-Task-Lineage: 20ac9893-68e2-48bf-98f7-cd7dd963d2ed
2026-06-17 14:52:56 -07:00
gsxdsm
403bd9d716 FN-6582: enforce workflow gate artifact verdicts
Enforce custom workflow terminal gates for required artifacts and malformed pre-merge verdicts.

- Add runtime validation that declared workflow artifacts exist before reporting workflow success.
- Treat malformed pre-merge gate output as a blocking failure instead of a skipped success.
- Cover required-artifact and malformed-verdict gate behavior with focused engine tests.
- Document the required-artifact gate and add a patch changeset for the published CLI package.

Files changed:
 .changeset/fn-6582-workflow-gates.md               |   5 +
 docs/workflow-steps.md                             |   5 +-
 .../workflow-malformed-verdict-gate.test.ts        | 114 +++++++++++++++++++
 .../workflow-required-artifact-gate.test.ts        | 123 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |  63 +++++++----
 packages/engine/src/workflow-task-runtime.ts       |  41 ++++++-
 6 files changed, 326 insertions(+), 25 deletions(-)

Fusion-Task-Id: FN-6582

Fusion-Task-Lineage: 6f59fc33-dd35-4e28-bf6b-85b709c77453
2026-06-17 14:52:56 -07:00
gsxdsm
0cc557121c FN-6590: inject task-detail chat into active step sessions
Ensure task-detail comments are delivered to live executor threads and preserved for the next step prompt when no step session is active.

- Forward steering comments through legacy, step-session, and workflow-step executor targets with delivery status logging.
- Keep step-session task details updated and include pending steering comments in full and reduced step prompts.
- Track delivered steering comment IDs so comments are injected or queued exactly once across active and subsequent step sessions.
- Update step-session executor tests for live steering, queued prompt fallback, and reduced prompt behavior.

Files changed:
 .../src/__tests__/executor-step-session.test.ts    | 467 ++++++---------------
 .../src/__tests__/step-session-executor.test.ts    |  63 ++-
 packages/engine/src/executor.ts                    |  34 +-
 packages/engine/src/step-session-executor.ts       |  69 ++-
 4 files changed, 283 insertions(+), 350 deletions(-)

Fusion-Task-Id: FN-6590

Fusion-Task-Lineage: 18fffd41-7632-4f29-8721-daaf3c239a74
2026-06-17 14:52:56 -07:00
gsxdsm
556ddd4491 FN-6591: stabilize dist task-list barrel tests
Stabilize the @fusion/core task-list dist barrel guard without weakening its coverage.

- Load the built dist core barrel once in beforeAll when dist artifacts exist.
- Reuse the cached runtime module across dist export and fn_task_list surface assertions.
- Keep the source barrel and real runtime export path coverage intact while reducing duplicate dynamic import pressure.

Files changed:
 .../core/src/__tests__/task-list-format.test.ts    | 33 ++++++++++++++--------
 1 file changed, 21 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-6591

Fusion-Task-Lineage: 4de45ab8-fdb3-4ed0-bf21-afcc2fb49902
2026-06-17 14:52:56 -07:00
gsxdsm
d8b80d0bfe FN-6587: quarantine compound-engineering timeout flakes
Quarantine compound-engineering timeout flakes from the broad test workflow.

- Add the compound-engineering orchestrator and skill-wiring tests to the quarantine ledger.
- Exclude the quarantined tests from the compound-engineering node Vitest project without changing timeouts or retries.
- Document the quarantine requirement next to the Vitest excludes.

Files changed:
 .../fusion-plugin-compound-engineering/vitest.config.ts   | 15 ++++++++++++++-
 scripts/lib/test-quarantine.json                          | 10 ++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6587

Fusion-Task-Lineage: 5aeb0202-8330-4a93-bdab-675c81b9cb54
2026-06-17 14:52:56 -07:00
gsxdsm
9eff4d424e FN-6574: repair TaskDetailModal definition test lanes
Repair TaskDetailModal tests so Definition-surface assertions remain valid after Chat became the default tab.

- Add regression coverage for explicitly opening the Definition tab while the default tab remains Chat.
- Set definition-focused TaskDetailModal test renders to use initialTab="definition" across the split dashboard lanes.
- Document why Definition-only assertions opt into the Definition tab after the Chat-default-tab change.

Files changed:
 .../TaskDetailModal.attachments-and-tabs.test.tsx  | 33 +++++++++
 ...TaskDetailModal.github-tracking-header.test.tsx |  5 ++
 .../TaskDetailModal.github-tracking-stale.test.tsx | 11 +++
 ...lModal.inline-editing-and-integrations.test.tsx | 83 ++++++++++++++++++++++
 ...skDetailModal.models-progress-workflow.test.tsx | 33 +++++++++
 .../__tests__/TaskDetailModal.rendering.test.tsx   | 73 +++++++++++++++++++
 ...etailModal.responsive-and-dependencies.test.tsx | 37 ++++++++++
 .../components/__tests__/TaskDetailModal.test.tsx  | 17 +++++
 8 files changed, 292 insertions(+)

Fusion-Task-Id: FN-6574

Fusion-Task-Lineage: f8d5e038-058a-4d12-8384-2ef603988e3a
2026-06-17 14:52:56 -07:00
gsxdsm
bbceb16d66 FN-6586: fix WhatsApp connection test mock constructor
Make the WhatsApp chat test double constructable under Vitest 4.

- Replace the arrow-backed WhatsAppConnection vi.fn mock with a named function implementation usable with new.
- Document the Vitest constructor-mock requirement near the test double.

Files changed:
 plugins/fusion-plugin-whatsapp-chat/src/__tests__/index.test.ts | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6586

Fusion-Task-Lineage: 54ed6d1a-c42a-430b-846e-251f8a27e188
2026-06-17 14:52:56 -07:00
gsxdsm
c94fb194c4 FN-6584: keep title summarizer out of workflow lanes
Clarify that title summarization remains project/global-scoped instead of a workflow model lane.

- Remove title summarizer entries from the workflow model lane catalog and display grouping.
- Add regression coverage for dashboard workflow settings and core built-in workflow setting parity.
- Update settings documentation to point title summarizer configuration at Project Models.

Files changed:
 docs/settings-reference.md                         | 29 +++++++++++++--------
 .../core/src/__tests__/settings-parity.test.ts     |  6 +++++
 .../app/components/WorkflowSettingsPanel.tsx       | 22 +++++-----------
 .../__tests__/WorkflowSettingsPanel.test.tsx       | 30 +++++++++++++++++++++-
 .../__tests__/workflow-setting-display.test.ts     | 24 +++++++++++++++++
 .../app/components/workflow-setting-display.ts     | 12 +++------
 6 files changed, 87 insertions(+), 36 deletions(-)

Fusion-Task-Id: FN-6584
Fusion-Task-Lineage: 2246213d-8775-4074-ae8e-04b9afe28f96
2026-06-17 14:52:56 -07:00
gsxdsm
484f016334 FN-6576: align chat send touch dedupe
Align the direct and room chat mobile send controls around the same pointer/touch dedupe contract.

- Add a per-gesture touch action latch separate from the trailing synthetic-click latch.
- Apply the two-latch handling to direct send, room send, and send-to-stop transitions.
- Cover repeated iOS taps, pointer/touch/click dedupe, and stop-button swap behavior in ChatView tests.
- Document the shared mobile send dedupe behavior for direct and room chat.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/ChatView.tsx     |  70 ++++++++---
 .../components/__tests__/ChatView.rooms.test.tsx   |  30 +++++
 .../app/components/__tests__/ChatView.test.tsx     | 132 +++++++++++++++++++++
 4 files changed, 215 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-6576

Fusion-Task-Lineage: b8ef427f-99f0-48d8-8cb8-d72ac352bdeb
2026-06-17 14:52:55 -07:00
gsxdsm
05fe6e5e0c FN-6575: make CE stage gating opt-out
Make Compound Engineering stage launch gating opt-out so registered stages like debug remain launchable by default.

- Replace enabledStages settings schema with disabledStages defaults and docs.
- Derive launchable stages from the live registry minus explicit disabled opt-outs.
- Update orchestrator gating, exports, tests, and plugin docs for the new setting.
- Add a patch changeset for the Compound Engineering plugin behavior fix.

Files changed:
 .changeset/fn-6575-ce-stage-optout.md              |  5 ++++
 docs/plugins/compound-engineering.md               |  4 +--
 .../fusion-plugin-compound-engineering/README.md   |  9 ++++--
 .../manifest.json                                  |  8 +++---
 .../src/__tests__/manifest.test.ts                 |  2 +-
 .../src/__tests__/settings.test.ts                 | 33 +++++++++++++---------
 .../src/__tests__/skill-wiring.test.ts             | 21 +++++++++++++-
 .../src/index.ts                                   |  1 +
 .../src/session/orchestrator.ts                    |  9 ++++--
 .../src/settings.ts                                | 33 ++++++++++++++--------
 10 files changed, 87 insertions(+), 38 deletions(-)

Fusion-Task-Id: FN-6575

Fusion-Task-Lineage: 903732d7-4ffb-4c8f-ba3e-e517d88bc644
2026-06-17 14:52:55 -07:00
gsxdsm
9cfa6d8176 FN-6578: keep sent chat messages at transcript tail
Ensure task-detail chat places newly sent user steering immediately after current transcript output and before later agent replies.

- Clamp optimistic user message timestamps after the latest transcript entry to handle client/server clock skew.
- Preserve the clamped display timestamp when reconciling persisted steering comments to avoid jumps or duplicates.
- Cover in-progress, in-review, done/refinement, desktop, mobile, and persisted reconciliation chat ordering cases.

Files changed:
 packages/dashboard/app/components/TaskChatTab.tsx  |  28 +++--
 .../app/components/__tests__/TaskChatTab.test.tsx  | 117 +++++++++++++++++++++
 2 files changed, 138 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-6578

Fusion-Task-Lineage: d9ba03c7-e151-41b6-9b00-87d5732f2fab
2026-06-17 14:52:55 -07:00
gsxdsm
593ebac85c FN-6573: guard task-list formatter resolution
Make fn_task_list surfaces tolerate stale core runtimes without crashing.

- Resolve formatTaskListText from the runtime @fusion/core namespace with a typeof guard.
- Add bounded inline fallback formatting for CLI, dashboard planning-board, and engine triage task-list tools.
- Cover missing formatter exports with regression tests and add a published package changeset.

Files changed:
 .changeset/fn-6573-task-list-format-resolve-fix.md |  5 +++
 packages/cli/src/__tests__/extension.test.ts       | 25 +++++++++------
 packages/cli/src/extension.ts                      | 36 ++++++++++++++++++++--
 .../src/__tests__/planning-board-tools.test.ts     | 27 +++++++++++++++-
 packages/dashboard/src/planning-board-tools.ts     | 36 ++++++++++++++++++++--
 packages/engine/src/__tests__/triage.test.ts       | 25 +++++++++++++++
 packages/engine/src/triage.ts                      | 36 ++++++++++++++++++++--
 7 files changed, 174 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-6573

Fusion-Task-Lineage: 64577f09-5ca5-426e-a453-a91e6c2c3aee
2026-06-17 14:52:55 -07:00
gsxdsm
265d9ec4d3 FN-6572: refresh boards after workflow changes
Workflow changes now notify open task views to re-home cards across workflow lanes promptly.

- Emit workflow update SSE events when selecting or clearing a task workflow.
- Refresh task detail board data for any workflow reconciliation result, including preserved columns.
- Cover board, list, route, and workflow results behavior with regression tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/FN-6572-workflow-switch-lane-move.md    |  5 ++
 .../app/components/WorkflowResultsTab.tsx          | 14 ++--
 .../app/components/__tests__/Board.test.tsx        | 50 ++++++++++++++
 .../app/components/__tests__/ListView.test.tsx     | 62 ++++++++++++++++++
 .../__tests__/WorkflowResultsTab.test.tsx          | 72 +++++++++++++++-----
 .../src/__tests__/workflow-routes.test.ts          | 76 +++++++++++++++++++++-
 .../src/routes/register-workflow-routes.ts         |  8 ++-
 7 files changed, 260 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-6572
Fusion-Task-Lineage: c2a9d5a8-6aba-4bce-991f-4a36b941a56f
2026-06-17 14:52:55 -07:00
gsxdsm
f16a57a466 Merge pull request #1683 from Runfusion/feature/factory-view
feat: Command Center dashboard + SDLC gap-fill (16 units)
2026-06-18 05:44:43 +08:00
gsxdsm
8037ef15a3 Merge main into feature/factory-view: reconcile lazy-view inventory to 23
Resolves conflicts in the lazy-loaded heavy-views inventory. main independently
grew the curated list to 22 (adding AppModals lazy modals); this branch added the
Command Center view. Combined count is 23 — updated the AGENTS.md prose/inventory
and the lazy-loaded-views-docs test contract (count + length assertions) to 23,
keeping main's richer "App-level and AppModals" wording.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 11:46:31 -07:00
gsxdsm
a84a8e1793 FN-6570: guard task list formatting fallback
Prevent fn_task_list surfaces from crashing when the runtime core namespace lacks the clamp export.

- Add a shared defensive task-list formatter with a bounded fallback clamp.
- Route CLI, dashboard planning-board, and engine triage fn_task_list output through the formatter.
- Cover missing, throwing, and non-string clamp behavior in core and CLI tests.
- Document the resilient task-list formatting behavior and add a patch changeset.

Files changed:
 .changeset/fn-6570-task-list-resolve-fix.md        |  5 ++
 docs/cli-reference.md                              |  2 +-
 packages/cli/src/__tests__/extension.test.ts       | 57 +++++++++++++++++++++-
 packages/cli/src/extension.ts                      |  8 ++-
 .../core/src/__tests__/task-list-format.test.ts    | 49 ++++++++++++++++++-
 packages/core/src/index.ts                         |  2 +-
 packages/core/src/task-list-format.ts              | 35 +++++++++++++
 packages/dashboard/src/planning-board-tools.ts     |  8 ++-
 packages/engine/src/triage.ts                      |  8 ++-
 9 files changed, 164 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-6570

Fusion-Task-Lineage: 455f38a8-5e4f-4643-a3ce-088ef0c92b01
2026-06-17 06:14:10 -07:00
gsxdsm
5403a774de FN-6571: define custom workflow reliability acceptance map
Document the reliability bar for custom workflow authoring, selection, execution, recovery, and restart durability.

- Add a docs index entry for the custom workflow reliability acceptance map.
- Define MVP/blocking versus enhancement acceptance areas for custom workflow reliability.
- Catalog critical journeys, measurable success signals, known deferred gaps, non-goals, and release checks.

Files changed:
 docs/README.md                                     |   1 +
 docs/custom-workflow-reliability-acceptance-map.md | 125 +++++++++++++++++++++
 2 files changed, 126 insertions(+)

Fusion-Task-Id: FN-6571
Fusion-Task-Lineage: 81760c46-8dc4-4828-8784-e734c406c996
2026-06-17 05:53:09 -07:00
gsxdsm
e2a3a37b26 FN-6569: make auto-merge retry cap configurable
Adds a project setting that controls how many auto-merge conflict retries run before recovery paths give up.

- Add maxAutoMergeRetries to project settings defaults, schema, types, and dashboard controls.
- Resolve the retry cap in engine merge handling, self-healing recovery, stall detection, and blocker fanout logic.
- Cover custom retry caps with core, dashboard, and engine regression tests.

Files changed:
 .changeset/fn-6569-max-auto-merge-retries.md       |  5 ++
 docs/architecture.md                               |  2 +-
 docs/settings-reference.md                         |  1 +
 .../core/src/__tests__/settings-defaults.test.ts   | 12 ++++
 packages/core/src/in-review-stall.ts               | 16 ++++-
 packages/core/src/index.ts                         |  1 +
 packages/core/src/settings-schema.ts               |  6 ++
 packages/core/src/task-priority.ts                 |  4 +-
 packages/core/src/types.ts                         |  8 +++
 .../dashboard/app/components/SettingsModal.tsx     |  8 +++
 .../components/settings/sections/MergeSection.tsx  | 26 +++++++
 .../app/hooks/__tests__/useBlockerFanout.test.ts   |  5 +-
 packages/dashboard/app/hooks/useBlockerFanout.ts   |  3 +-
 .../auto-merge-retry-cap-settings.test.ts          | 79 ++++++++++++++++++++++
 packages/engine/src/project-engine.ts              | 77 +++++++++++++--------
 packages/engine/src/self-healing.ts                | 30 +++++---
 16 files changed, 236 insertions(+), 47 deletions(-)

Fusion-Task-Id: FN-6569
Fusion-Task-Lineage: 42242d6a-68bc-41f1-b2d9-af2e6f168eed
2026-06-17 04:51:31 -07:00
gsxdsm
6ced5d73de FN-6568: route merge-seam graph aborts to retry
Classify merge-seam abort provenance so non-paused merge graph failures retry instead of parking as pauses.

- Track paused-abort provenance separately from the legacy pause-abort bit.
- Route merge and requestMerge graph failures through bounded auto-merge retry when they are not genuine pauses.
- Preserve user/global pause parking behavior with regression coverage and document the lifecycle invariant.

Files changed:
 .../fn-6568-merge-seam-abort-classification.md     |   5 +
 docs/architecture.md                               |   1 +
 .../engine/src/__tests__/executor-recovery.test.ts | 131 ++++++++++++++++++++-
 packages/engine/src/executor.ts                    | 122 +++++++++++++------
 4 files changed, 221 insertions(+), 38 deletions(-)

Fusion-Task-Id: FN-6568

Fusion-Task-Lineage: 5d9ee4f8-0336-4fb9-aa95-beb65e6c1ed9
2026-06-17 04:16:10 -07:00
gsxdsm
4f5c83e09b FN-6526: add start node entry column inspector
Expose the workflow start node's editable entry column through the node inspector.

- Allow the workflow editor inspector to open for start nodes while keeping end nodes structural-only.
- Add a localized entry-column selector and explanatory copy for start nodes.
- Cover start-node inspector behavior and IR column mapping with regression tests.
- Update dashboard workflow editor documentation for start-node editing.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 .../app/components/WorkflowNodeEditor.tsx          |  57 ++++++++---
 .../__tests__/WorkflowNodeEditor.test.tsx          | 106 ++++++++++++++++++++-
 .../__tests__/workflow-flow-mapping.test.ts        |  13 +++
 packages/i18n/locales/en/app.json                  |   3 +
 packages/i18n/locales/es/app.json                  |   3 +
 packages/i18n/locales/fr/app.json                  |   3 +
 packages/i18n/locales/ko/app.json                  |   3 +
 packages/i18n/locales/zh-CN/app.json               |   3 +
 packages/i18n/locales/zh-TW/app.json               |   3 +
 10 files changed, 178 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-6526
Fusion-Task-Lineage: 0195e29b-9cd2-4663-8ad4-30805313ac5f
2026-06-17 03:53:51 -07:00
gsxdsm
257f636642 FN-6537: launch quick scripts in dedicated tabs
Quick script runs now open isolated terminal sessions before executing commands.

- Track quick-script invocation generations so rerunning the same command dispatches again.
- Create a fresh terminal tab for every initial command instead of reusing the active shell.
- Cover fresh-open, already-open, same-command rerun, multi-tab, and reopen flows with tests.
- Document that saved scripts launch in dedicated terminal tabs.

Files changed:
 packages/dashboard/README.md                       |   4 +-
 packages/dashboard/app/components/AppModals.tsx    |   1 +
 .../dashboard/app/components/TerminalModal.tsx     |  46 ++-
 .../app/components/__tests__/AppModals.test.tsx    |   1 +
 .../components/__tests__/TerminalModal.test.tsx    | 339 +++++++++++++++++----
 .../app/hooks/__tests__/useModalManager.test.ts    |   9 +
 packages/dashboard/app/hooks/useModalManager.ts    |   4 +
 7 files changed, 321 insertions(+), 83 deletions(-)

Fusion-Task-Id: FN-6537

Fusion-Task-Lineage: 7abd60f9-626d-4867-a846-04a444e6d415
2026-06-17 03:47:42 -07:00
gsxdsm
8e9b7b75a4 FN-6534: track docs screenshots
Restore the screenshot assets that published docs reference so rendered documentation no longer shows broken images.

- Keep docs/screenshots trackable by removing the blanket ignore rule.
- Add the referenced screenshot PNG assets under docs/screenshots.
- Add a regression test that verifies screenshot Markdown links resolve to tracked files.

Files changed:
 .gitignore                                         |   2 +-
 docs/screenshots/agents-view.png                   | Bin 0 -> 88902 bytes
 docs/screenshots/chat-view.png                     | Bin 0 -> 74669 bytes
 docs/screenshots/dashboard-overview.png            | Bin 0 -> 209599 bytes
 docs/screenshots/documents-view.png                | Bin 0 -> 37607 bytes
 docs/screenshots/git-manager.png                   | Bin 0 -> 135486 bytes
 docs/screenshots/list-view.png                     | Bin 0 -> 108702 bytes
 docs/screenshots/mailbox-view.png                  | Bin 0 -> 72370 bytes
 docs/screenshots/memory-view.png                   | Bin 0 -> 118122 bytes
 docs/screenshots/mission-manager.png               | Bin 0 -> 80643 bytes
 docs/screenshots/nodes-view.png                    | Bin 0 -> 59576 bytes
 docs/screenshots/roadmaps-view.png                 | Bin 0 -> 37828 bytes
 docs/screenshots/settings.png                      | Bin 0 -> 131052 bytes
 docs/screenshots/skills-view.png                   | Bin 0 -> 92259 bytes
 docs/screenshots/task-detail.png                   | Bin 0 -> 171502 bytes
 docs/screenshots/terminal.png                      | Bin 0 -> 70273 bytes
 docs/screenshots/workflow-steps.png                | Bin 0 -> 179100 bytes
 .../src/__tests__/docs-screenshot-links.test.ts    |  96 +++++++++++++++++++++
 18 files changed, 97 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6534

Fusion-Task-Lineage: a0840905-8eb5-4da0-8c52-56904ac82e04
2026-06-17 03:42:03 -07:00
gsxdsm
89171e0f16 FN-6531: polish Compound Engineering dashboard UI
Align the bundled Compound Engineering plugin with Fusion dashboard spacing, radius, and control conventions.

- Apply shared dashboard card, button, icon button, and input classes to CE panels and controls.
- Replace ad-hoc CE layout spacing and radius values with dashboard design tokens across desktop and mobile surfaces.
- Document the plugin's theme consistency expectations and add tests that guard representative spacing, radius, and textarea token usage.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-6531-compound-engineering-ui.md      |   5 +
 docs/plugins/compound-engineering.md               |   5 +
 .../src/dashboard/CeFlow.tsx                       |  10 +-
 .../src/dashboard/CompoundEngineeringView.css      | 203 ++++++++++++++-------
 .../src/dashboard/CompoundEngineeringView.tsx      |  11 +-
 .../src/dashboard/__tests__/theme-tokens.test.ts   |  46 +++++
 6 files changed, 215 insertions(+), 65 deletions(-)

Fusion-Task-Id: FN-6531

Fusion-Task-Lineage: be99bbaa-0842-4598-b0a1-4f41816b032b
2026-06-17 03:36:14 -07:00
gsxdsm
4bfb6b46ad FN-6528: add selection comments for new tasks
Adds a text-selection comment flow that opens New Task with source context.

- Add a reusable selection comment hook and popover for editor/document text selections.
- Thread selected-file and line-range context into the New Task modal.
- Enable comment-on-selection entry points in file editor, browser, documents, and memory surfaces.
- Cover the selection flow with focused component and hook tests, plus docs and copy updates.

Files changed:
 docs/dashboard-guide.md                            |   6 +-
 packages/dashboard/app/App.tsx                     |   7 +-
 packages/dashboard/app/components/AppModals.tsx    |   2 +
 .../dashboard/app/components/DocumentsView.tsx     |  25 ++-
 .../dashboard/app/components/FileBrowserModal.tsx  |   3 +
 packages/dashboard/app/components/FileEditor.tsx   |  35 +++-
 packages/dashboard/app/components/MemoryView.tsx   |   5 +-
 packages/dashboard/app/components/NewTaskModal.tsx |  15 +-
 .../app/components/SelectionCommentPopover.css     |  73 +++++++++
 .../app/components/SelectionCommentPopover.tsx     | 181 +++++++++++++++++++++
 .../components/__tests__/DocumentsView.test.tsx    |  59 +++++++
 .../components/__tests__/FileBrowserModal.test.tsx |  79 +++++++++
 .../app/components/__tests__/FileEditor.test.tsx   |  60 +++++++
 .../app/components/__tests__/MemoryView.test.tsx   |  48 +++++-
 .../app/components/__tests__/NewTaskModal.test.tsx |  17 ++
 .../__tests__/SelectionCommentPopover.test.tsx     |  75 +++++++++
 .../app/hooks/__tests__/useModalManager.test.ts    |  29 ++++
 .../hooks/__tests__/useSelectionComment.test.ts    | 140 ++++++++++++++++
 packages/dashboard/app/hooks/useModalManager.ts    |  19 ++-
 .../dashboard/app/hooks/useSelectionComment.ts     |  95 +++++++++++
 packages/i18n/locales/en/app.json                  |  11 ++
 21 files changed, 973 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-6528

Fusion-Task-Lineage: ef79e450-e69f-497b-97cd-f82d3c832fdf
2026-06-17 03:29:39 -07:00
gsxdsm
66be2624fd FN-6563: align room send tap dedupe
Align the chat room composer send button with direct chat's mobile tap handling.

- Dispatch room sends from touch pointer/touchstart paths when mobile browsers suppress click events.
- Consume duplicate synthetic click events so touch gestures send exactly once while desktop clicks still work.
- Cover iOS, Android, desktop, and room-to-direct routing parity in room chat tests.
- Document the mobile room composer send-button dedupe contract.

Files changed:
 docs/dashboard-guide.md                            |  1 +
 packages/dashboard/app/components/ChatView.tsx     | 21 +++--
 .../components/__tests__/ChatView.rooms.test.tsx   | 90 ++++++++++++++++++++++
 3 files changed, 104 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-6563
Fusion-Task-Lineage: 9abd1e29-1b25-4105-9326-5e479f5cb5e5
2026-06-17 03:23:47 -07:00
gsxdsm
7b3c628fba FN-6524: add simple editor step reordering
Enable custom workflow authors to reorder simple editor steps from the mobile graph outline.

- Add move up/down controls for editable outline rows while keeping built-in workflows read-only.
- Swap sibling React Flow positions within columns or template parents so persisted order follows existing graph ordering.
- Cover reorder availability, behavior, styling, and documentation updates.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 .../app/components/MobileWorkflowGraphView.css     |  17 ++-
 .../app/components/MobileWorkflowGraphView.tsx     | 134 +++++++++++++++------
 .../app/components/WorkflowNodeEditor.tsx          |  20 ++-
 .../__tests__/MobileWorkflowGraphView.css.test.ts  |   8 +-
 .../__tests__/MobileWorkflowGraphView.test.tsx     | 123 ++++++++++++++++++-
 .../__tests__/workflow-mobile-graph.test.ts        |  75 +++++++++++-
 .../app/components/workflow-mobile-graph.ts        |  41 +++++++
 8 files changed, 372 insertions(+), 48 deletions(-)

Fusion-Task-Id: FN-6524

Fusion-Task-Lineage: 25ffa5aa-bdfb-4ee3-9365-07029f5bbbf6
2026-06-17 03:12:16 -07:00
gsxdsm
550715d10c FN-6518: focus Quick Chat composer on open
Quick Chat now places keyboard focus in the composer whenever the panel opens without stealing existing external focus.

- Focus the Quick Chat composer after open on both desktop and mobile viewports.
- Preserve the existing mobile stealth-input handoff while letting desktop use the ready-state focus path.
- Add regression coverage for desktop, delayed session readiness, mobile handoff, and external focus preservation.
- Document the updated Quick Chat focus behavior and add a patch changeset.

Files changed:
 .changeset/fn-6518-quick-chat-focus.md             |   5 +
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/QuickChatFAB.tsx |   6 +-
 .../app/components/__tests__/QuickChatFAB.test.tsx | 102 +++++++++++++++++++++
 4 files changed, 113 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6518
Fusion-Task-Lineage: 9fdaba17-e3f4-4269-91d9-aaad152c2ab1
2026-06-17 03:07:05 -07:00
gsxdsm
d17a6dbd74 FN-6535: harden task list dist runtime coverage
Add regression coverage that exercises fn_task_list through the built @fusion/core dist exports.

- Expand core task-list formatting tests from export checks to a runtime-shaped fn_task_list execution path.
- Add a CLI extension regression test that mocks @fusion/core to the built dist barrel before executing fn_task_list.
- Cover broad and filtered task-list truncation paths with dependency rendering to catch missing clampTaskListText exports.

Files changed:
 packages/cli/src/__tests__/extension.test.ts       |  82 ++++++++++++++-
 .../core/src/__tests__/task-list-format.test.ts    | 110 ++++++++++++++++++++-
 2 files changed, 190 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6535

Fusion-Task-Lineage: dd405811-5655-406d-92e6-53f0e35ac217
2026-06-17 02:50:29 -07:00