Commit Graph

1552 Commits

Author SHA1 Message Date
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
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
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
4a9fe9957d FN-6504: allow attachment-only chat sends
Allow chat composers and API routes to deliver attachment-only messages without placeholder text.

- Permit main chat sends when staged attachments exist even if the textarea is blank.
- Accept upload-backed and referenced attachment-only payloads in chat and room message routes while still rejecting fully empty messages.
- Add UI/API regression coverage, documentation, and a patch changeset for attachment-only chat sends.

Files changed:
 .changeset/fn-6504-attachment-only-send.md         |  5 ++
 docs/dashboard-guide.md                            |  1 +
 packages/dashboard/app/components/ChatView.tsx     | 72 ++++++++++++++++++++--
 .../app/components/__tests__/ChatView.test.tsx     | 39 ++++++++++++
 .../src/__tests__/chat-attachment-routes.test.ts   | 24 +++++++-
 .../src/__tests__/chat-routes.rooms.test.ts        | 62 +++++++++++++------
 .../src/routes/register-chat-room-routes.ts        | 13 +++-
 .../dashboard/src/routes/register-chat-routes.ts   | 21 ++++---
 8 files changed, 205 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-6504

Fusion-Task-Lineage: f64f7874-4e32-4ae5-a5b1-d8c4b78e23dd
2026-06-17 02:39:36 -07:00
gsxdsm
a998f63242 FN-6523: add mobile workflow connection picker
Adds a touch-friendly path for creating workflow edges from the mobile editor.

- Add mobile node Connect controls with a target picker that delegates to the existing edge validation path.\n- Surface duplicate-edge feedback and select newly created mobile edges for editing.\n- Document the mobile connection flow, add regression coverage, register locale strings, and add the required changeset.\n\nFiles changed:\n .changeset/fn-6523-mobile-workflow-connect.md      |   5 +\n docs/workflow-editor.md                            |   2 +-\n .../app/components/MobileWorkflowGraphView.css     |  67 ++++++++++--\n .../app/components/MobileWorkflowGraphView.tsx     |  76 ++++++++++++--\n .../app/components/WorkflowNodeEditor.tsx          |  69 +++++++++++--\n .../__tests__/WorkflowNodeEditor.test.tsx          | 114 +++++++++++++++++++++\n .../app/components/workflow-mobile-graph.ts        |   7 ++\n packages/i18n/locales/en/app.json                  |   4 +\n packages/i18n/locales/es/app.json                  |   4 +\n packages/i18n/locales/fr/app.json                  |   4 +\n packages/i18n/locales/ko/app.json                  |   4 +\n packages/i18n/locales/zh-CN/app.json               |   4 +\n packages/i18n/locales/zh-TW/app.json               |   4 +\n 13 files changed, 342 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-6523

Fusion-Task-Lineage: 23b32826-278f-4230-a49c-22755ee700cc
2026-06-17 02:06:32 -07:00
gsxdsm
4e47c87c43 FN-6510: preserve last opened quick chat session
Quick Chat now restores the persisted session id without same-target auto-init replacing it.

- Wait for persisted session lookup before auto-initializing the selected quick chat target.
- Skip the first same-target switch after restoring an existing session so the restored id remains authoritative.
- Prefer message activity over metadata-only updates when falling back from stale persisted sessions.
- Cover model, agent, and mobile restoration paths plus hook-level same-target replay behavior.
- Document the quick chat last-session restoration regression and invariant.

Files changed:
 docs/solutions/ui-bugs/quick-chat-last-opened-session-restore.md      |  60 ++++++++++
 packages/dashboard/app/components/QuickChatFAB.tsx                   |  23 +++-
 packages/dashboard/app/components/__tests__/QuickChatFAB.test.tsx    | 130 ++++++++++++++++++++-
 packages/dashboard/app/hooks/__tests__/useQuickChat.test.ts          |  38 ++++++
 4 files changed, 246 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-6510
Fusion-Task-Lineage: 135807dd-30f3-4032-9de8-f34927e5c44d
2026-06-17 01:22:21 -07:00
gsxdsm
bd328f2282 FN-6536: apply terminal preferences to sessions
Extend embedded session terminals to reuse the saved TerminalModal preferences while preserving replay safety.

- Apply shared font, font size, cursor style, cursor blink, and renderer preferences when SessionTerminal initializes.
- Live-apply font and cursor preference changes from storage events without remounting the terminal.
- Keep cursor blink disabled for read-only, idle, and ended sessions, and skip WebGL on mobile viewports.
- Add desktop and mobile tests plus dashboard documentation for embedded session preference behavior.

Files changed:
 docs/dashboard-guide.md                            |   1 +
 .../dashboard/app/components/SessionTerminal.tsx   |  96 +++++++++---
 .../__tests__/SessionTerminal.mobile.test.tsx      |  53 ++++++-
 .../components/__tests__/SessionTerminal.test.tsx  | 166 +++++++++++++++++++--
 4 files changed, 286 insertions(+), 30 deletions(-)

Fusion-Task-Id: FN-6536

Fusion-Task-Lineage: 836eafd7-923d-45b7-9cf6-e1236af8f168
2026-06-17 01:15:20 -07:00
gsxdsm
e923b5e84d FN-6527: add terminal shortcuts and preferences
Adds persistent terminal customization and keyboard-less navigation controls to the dashboard terminal.

- Add arrow shortcut buttons that send ANSI cursor sequences alongside existing Ctrl/Alt helpers.
- Add localStorage-backed terminal preferences for font family, size, cursor style, blink, and renderer with legacy font-size migration.
- Apply font and cursor preferences live, document renderer behavior, and cover preference parsing and modal controls with tests.

Files changed:
 docs/dashboard-guide.md                            |   3 +
 .../dashboard/app/components/TerminalModal.css     |  57 ++++-
 .../dashboard/app/components/TerminalModal.tsx     | 271 ++++++++++++++++-----
 .../components/__tests__/TerminalModal.test.tsx    | 135 +++++++++-
 .../utils/__tests__/terminalPreferences.test.ts    |  90 +++++++
 .../dashboard/app/utils/terminalPreferences.ts     | 197 +++++++++++++++
 6 files changed, 690 insertions(+), 63 deletions(-)

Fusion-Task-Id: FN-6527
Fusion-Task-Lineage: bc863486-9d2c-41d5-84a4-7b697e81a298
2026-06-17 00:06:24 -07:00
gsxdsm
0fb6757100 FN-6521: refresh workflow documentation
Refresh the public docs to describe current workflow selection, editor, chat, and feature surfaces.

- Add a top-level README workflow overview with built-in workflow IDs and editor links.
- Update localized READMEs and docs index entries for workflows, chat, plugins, research, and remote access.
- Expand Getting Started, Dashboard Guide, and Workflow Steps with workflow selection and authoring guidance.

Files changed:
 README.es.md            | 71 ++++++++++++++++++++++++++++++++-----------------
 README.fr.md            | 67 +++++++++++++++++++++++++++++++---------------
 README.ko.md            | 71 ++++++++++++++++++++++++++++++++-----------------
 README.md               | 65 +++++++++++++++++++++++++++++---------------
 README.zh-CN.md         | 71 ++++++++++++++++++++++++++++++++-----------------
 README.zh-TW.md         | 71 ++++++++++++++++++++++++++++++++-----------------
 docs/README.md          | 11 ++++----
 docs/dashboard-guide.md | 11 +++++---
 docs/getting-started.md | 18 ++++++++++---
 docs/workflow-steps.md  | 34 +++++++++++++++++++++++
 10 files changed, 339 insertions(+), 151 deletions(-)

Fusion-Task-Id: FN-6521

Fusion-Task-Lineage: 6f8683fe-4a7c-4d41-bcf6-e6e5db9b100f
2026-06-16 23:38:50 -07:00
gsxdsm
177cce4059 FN-6515: guard task list formatting exports
Add regression coverage for task-list formatter exports and broad list clamping.\n\n- Verify @fusion/core source and built dist barrels expose task-list formatting helpers.\n- Cover broad fn_task_list output clamping as one plain-text block.\n- Document the built-dist guard expectation for runtime-consumed core exports.\n\nFiles changed:\n docs/testing.md                                    |  2 ++\n packages/cli/src/__tests__/extension.test.ts       | 35 ++++++++++++++++++++++\n .../core/src/__tests__/task-list-format.test.ts    | 32 ++++++++++++++++++++\n 3 files changed, 69 insertions(+)

Fusion-Task-Id: FN-6515

Fusion-Task-Lineage: b19dd616-6b5a-4b8a-8909-f368459fdc53
2026-06-16 23:32:38 -07:00
gsxdsm
f14f9b2e45 FN-6516: preserve tablet chat sidebar width during typing
Keep tablet chat sidebars visible at the persisted width while the software keyboard is open.

- Preserve the non-mobile sidebar inline width instead of forcing tablet keyboard sessions to the minimum width.\n- Extend ChatView tablet viewport tests for default, persisted custom, and collapsed-sidebar keyboard states.\n- Document the FN-6516 refinement in the tablet keyboard viewport solution note.\n\nFiles changed:\n .../ui-bugs/tablet-keyboard-viewport-mode-flip.md  |  2 +\n packages/dashboard/app/components/ChatView.tsx     |  9 ++--\n .../__tests__/ChatView.mobile-render.test.tsx      | 55 ++++++++++++++++++----\n 3 files changed, 53 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6516

Fusion-Task-Lineage: 51927ebb-3a9e-4dc5-827a-33c76a142335
2026-06-16 23:21:14 -07:00
gsxdsm
c073fdc85c FN-6522: load earlier task chat messages
Preserve task-detail chat reading position while paging older agent log entries.

- Add top-of-transcript pagination with an explicit Load previous messages control and loading state.
- Preserve scroll anchoring when earlier log entries are prepended while keeping live bottom-follow behavior for new output.
- Cover scroll-to-top loading and manual loading with regression tests and document the behavior.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/TaskChatTab.css  |  28 ++++
 packages/dashboard/app/components/TaskChatTab.tsx  |  82 ++++++++++-
 .../app/components/__tests__/TaskChatTab.test.tsx  | 163 ++++++++++++++++++++-
 4 files changed, 269 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-6522

Fusion-Task-Lineage: b93464cf-0b9a-4a73-b4f5-4f3a5e34cc89
2026-06-16 23:04:45 -07:00
gsxdsm
cc5c5eb7bd FN-6520: document workflow editor
Add a canonical dashboard workflow editor guide and connect it from related docs.

- Add a new Workflow Editor guide covering entry points, canvas anatomy, authoring panels, settings values, templates, AI design, import/export, and mobile behavior.
- Link the guide from the docs index, settings reference, and Workflow IR overview.
- Require the workflow editor guide in the docs README index coverage test.

Files changed:
 docs/README.md                                     |   1 +
 docs/settings-reference.md                         |   2 +-
 docs/workflow-editor.md                            | 158 +++++++++++++++++++++
 docs/workflow-steps.md                             |   2 +-
 .../cli/src/__tests__/docs-readme-index.test.ts    |   1 +
 5 files changed, 162 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6520

Fusion-Task-Lineage: 9a2525a5-6ff8-48de-ae13-a7c7c5844f99
2026-06-16 22:52:00 -07:00
gsxdsm
def4bd9464 FN-6499: add chat session rename controls
Adds regular Chat and Quick Chat rename flows backed by optimistic session title updates.

- Add rename actions to the regular Chat desktop context menu and mobile session switcher.
- Add Quick Chat session-row rename controls and show custom active titles in the panel header.
- Share PATCH title updates through chat hooks with null titles clearing custom names.
- Cover rename success, clearing, and rollback behavior in hook and component tests.
- Document the rename behavior and add a patch changeset for the published CLI bundle.

Files changed:
 .changeset/chat-session-rename.md                  |   5 +
 docs/dashboard-guide.md                            |   2 +
 packages/dashboard/app/api/legacy.ts               |   2 +-
 packages/dashboard/app/components/ChatView.css     |  44 ++++++++
 packages/dashboard/app/components/ChatView.tsx     | 111 +++++++++++++++++--
 packages/dashboard/app/components/QuickChatFAB.css |  69 ++++++++++++
 packages/dashboard/app/components/QuickChatFAB.tsx | 117 ++++++++++++++++++---
 .../app/components/__tests__/ChatView.test.tsx     | 108 +++++++++++++++++++
 .../app/components/__tests__/QuickChatFAB.test.tsx |  25 +++++
 .../dashboard/app/hooks/__tests__/useChat.test.ts  | 108 +++++++++++++++++++
 .../app/hooks/__tests__/useQuickChat.test.ts       | 109 +++++++++++++++++++
 packages/dashboard/app/hooks/useChat.ts            |  48 +++++++++
 packages/dashboard/app/hooks/useQuickChat.ts       |  50 +++++++++
 13 files changed, 773 insertions(+), 25 deletions(-)

Fusion-Task-Id: FN-6499
Fusion-Task-Lineage: f9f15b02-1590-46f4-b6f5-140a9ade30eb
2026-06-16 22:44:16 -07:00
gsxdsm
d35f93e1ef FN-6512: refresh mobile PWA icons
Refresh the dashboard launcher artwork so installed mobile PWAs use the Fusion brand mark.

- Generate 192px and 512px dashboard PWA icons from the canonical logo in the desktop icon generator.
- Bump the service-worker cache name so installed PWAs refresh cached icon assets.
- Strengthen PWA tests to validate icon wiring, PNG dimensions, opacity, and non-blank brand content.
- Document the PWA icon regeneration workflow and add a patch changeset.

Files changed:
 .changeset/fn-6512-dashboard-pwa-icons.md        |   5 +
 docs/dashboard-guide.md                          |   4 +
 packages/dashboard/app/__tests__/pwa.test.ts     | 178 ++++++++++++++++++++---
 packages/dashboard/app/public/icons/icon-192.png | Bin 5466 -> 4634 bytes
 packages/dashboard/app/public/icons/icon-512.png | Bin 17687 -> 14826 bytes
 packages/dashboard/app/public/sw.js              |   2 +-
 packages/desktop/scripts/generate-icons.ts       |  75 +++++++---
 7 files changed, 227 insertions(+), 37 deletions(-)

Fusion-Task-Id: FN-6512

Fusion-Task-Lineage: a7a46e0d-fa7d-4ca1-b49c-f083aed92b17
2026-06-16 22:29:07 -07:00
gsxdsm
669b106548 FN-6514: restore QuickEntryBox test isolation
Rescues the QuickEntryBox suite by restoring jsdom globals instead of keeping it quarantined.

- Snapshot and restore QuickEntryBox viewport, visibility, matchMedia, and object URL descriptors after each test.
- Add a guard test that proves mutated jsdom globals return to their original descriptors.
- Remove the QuickEntryBox quarantine entries while documenting the rescue pattern.

Files changed:
 docs/testing.md                                    |  2 +
 .../components/__tests__/QuickEntryBox.test.tsx    | 50 ++++++++++++++++++++++
 packages/dashboard/vitest.config.ts                |  7 ++-
 scripts/lib/test-quarantine.json                   |  5 ---
 4 files changed, 55 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-6514

Fusion-Task-Lineage: 12f20ad8-19ee-4168-91a9-33193b1ab5f7
2026-06-16 22:13:46 -07:00
gsxdsm
1c3a4df255 FN-6509: show resumable subtask progress
Subtask breakdowns now show live progress immediately and remain resumable after closing.

- Add startup and reconnecting progress states with empty-thinking feedback.
- Preserve generating and editing subtask sessions for background resume instead of canceling on close.
- Cover mobile, desktop, running, awaiting-input, and completed resume flows in modal tests.
- Document resumable subtask generation behavior and add localized strings.

Files changed:
 docs/task-management.md                            |   2 +
 .../app/components/SubtaskBreakdownModal.tsx       |  80 ++++++++---
 .../__tests__/SubtaskBreakdownModal.test.tsx       | 156 ++++++++++++++++++---
 packages/i18n/locales/en/app.json                  |   5 +
 packages/i18n/src/resources.d.ts                   |   5 +
 5 files changed, 209 insertions(+), 39 deletions(-)

Fusion-Task-Id: FN-6509

Fusion-Task-Lineage: 3bc143fa-a00f-42b6-afd4-ba4fb65b4b63
2026-06-16 21:37:32 -07:00
gsxdsm
602fefff19 FN-6498: smooth mobile quick chat viewport tracking
Keep the mobile Quick Chat sheet aligned with visualViewport changes without redundant layout writes.

- Dedupe repeated mobile visualViewport samples before updating sheet CSS variables.
- Reset viewport tracking state and CSS variables on close/unmount to prevent stale reopen sizing.
- Add regression coverage for mobile tracking, reopen behavior, desktop bypass, and missing visualViewport fallback.
- Document the viewport-smoothing pitfall alongside the keyboard board-shift solution.

Files changed:
 .../quick-chat-mobile-keyboard-board-shift.md      |   4 +
 packages/dashboard/app/components/QuickChatFAB.tsx |  25 +++-
 .../app/components/__tests__/QuickChatFAB.test.tsx | 141 +++++++++++++++++++++
 3 files changed, 167 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-6498

Fusion-Task-Lineage: 23c17843-778a-4337-aeed-c80793615738
2026-06-16 21:25:39 -07:00
gsxdsm
cc022867be FN-6505: inline chat attachment contents for agents
Chat agents now receive readable attachment content when responding to user prompts.

- Add shared attachment loading and formatting for session and room chat surfaces.
- Inline supported text attachments and forward image attachments through prompt options.
- Cover session and room attachment handling with regression tests and document the behavior.

Files changed:
 .changeset/fuzzy-chat-attachments.md               |   5 +
 docs/dashboard-guide.md                            |   2 +
 .../src/__tests__/chat-attachment-content.test.ts  | 139 ++++++++++++++++++
 .../dashboard/src/__tests__/chat-manager.test.ts   | 123 ++++++++++++++++
 packages/dashboard/src/chat-attachment-content.ts  | 163 +++++++++++++++++++++
 packages/dashboard/src/chat.ts                     |  43 +++++-
 6 files changed, 470 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-6505

Fusion-Task-Lineage: 9bc7a65c-2516-42a4-8d3c-2bc53ea1c895
2026-06-16 21:09:20 -07:00
gsxdsm
a89804ec5f FN-6508: expose fallback workflow model lanes
Expose declared fallback model lanes in project Settings while preserving workflow-scoped persistence.

- Load the default workflow definition before rendering Project Models lane controls.\n- Show fallback model dropdowns only when the workflow declares matching provider/model settings.\n- Persist and reset fallback lane edits through the Settings modal primary Save action.\n- Update settings documentation for default-workflow and global fallback model placement.

Files changed:\n docs/settings-reference.md                         |  40 +++---\n .../components/__tests__/SettingsModal.test.tsx    | 135 ++++++++++++++++++++-\n .../settings/sections/ProjectModelsSection.tsx     |  52 +++++++-\n 3 files changed, 204 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-6508

Fusion-Task-Lineage: 18dba2f9-658a-4b82-850f-3bbeb70341d3
2026-06-16 20:59:30 -07:00
gsxdsm
a4537167ab FN-6501: render chat question response controls
Render structured assistant question prompts directly in chat surfaces.

- Add parser and formatter support for question tool calls.
- Add reusable question response UI for select, multi-select, text, and confirm prompts.
- Wire regular chat and quick chat to show live and answered question states.
- Cover parsing and chat response behavior with dashboard tests and localized labels.

Files changed:
 .changeset/fn-6501-chat-question-response.md       |   5 +
 docs/dashboard-guide.md                            |   2 +
 .../app/components/ChatQuestionResponse.css        | 194 ++++++++++++++++
 .../app/components/ChatQuestionResponse.tsx        | 247 +++++++++++++++++++++
 packages/dashboard/app/components/ChatView.tsx     |  85 ++++++-
 packages/dashboard/app/components/QuickChatFAB.tsx |  84 ++++++-
 .../__tests__/ChatQuestionResponse.test.tsx        |  52 +++++
 .../app/components/__tests__/ChatView.test.tsx     |  51 +++++
 .../app/components/__tests__/QuickChatFAB.test.tsx |  64 ++++++
 .../utils/__tests__/parseQuestionToolCall.test.ts  |  82 +++++++
 .../dashboard/app/utils/parseQuestionToolCall.ts   | 240 ++++++++++++++++++++
 packages/i18n/locales/en/app.json                  |  10 +
 12 files changed, 1105 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-6501
Fusion-Task-Lineage: 1fd4a3aa-b2d7-4157-a196-852fdeda680d
2026-06-16 20:13:13 -07:00
gsxdsm
21c4d3e5ca FN-6495: load chat session skills
Enable dashboard chat sessions to request the same agent and plugin skills used by execution lanes.

- Pass enabled plugin-contributed skills through the dashboard chat plugin runner contract.
- Add skill selection for bound-agent chat, model-only QuickChat, and room responder sessions.
- Cover regular chat, QuickChat, no-metadata fallback, legacy runner, and room responder skill requests.
- Document dashboard chat skill behavior and add a minor changeset for the published CLI package.

Files changed:
 .changeset/fn-6495-chat-skill-selection.md         |   5 +
 docs/agents.md                                     |   1 +
 .../dashboard/src/__tests__/chat-manager.test.ts   | 125 +++++++++++++++++++++
 .../dashboard/src/__tests__/chat.rooms.test.ts     |  45 ++++++++
 packages/dashboard/src/chat.ts                     |  35 ++++++
 packages/dashboard/src/server.ts                   |   5 +
 packages/engine/src/index.ts                       |   6 +
 7 files changed, 222 insertions(+)

Fusion-Task-Id: FN-6495

Fusion-Task-Lineage: 0b8998e2-848c-4c79-b93a-16c0b3c3d8a3
2026-06-16 19:40:56 -07:00
gsxdsm
7852c34a9f FN-6493: update lazy view inventory guard
Keep the lazy-loaded dashboard inventory aligned with AppModals imports.\n\n- Document SettingsModal and WorkflowNodeEditor alongside other lazy-loaded dashboard views.\n- Update the dashboard guide inventory count and modal lazy-load note.\n- Extend the docs guard test to scan AppModals lazy imports and assert the 22-view inventory.\n\nFiles changed:\n AGENTS.md                                          |  6 ++--\n docs/dashboard-guide.md                            |  5 ++-\n .../app/__tests__/lazy-loaded-views-docs.test.ts   | 40 +++++++++++++++++++---\n 3 files changed, 43 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-6493

Fusion-Task-Lineage: d2b4de05-fb3c-4965-921e-4f8551e3e96a
2026-06-16 18:22:28 -07:00
gsxdsm
b85d02add0 Merge pull request #1682 from Runfusion/feature/acp-route-a-followups
feat(acp): Route A follow-ups — token usage, opt-in headless auth, status tests + bridge-auth learning
2026-06-17 06:12:06 +08:00
gsxdsm
963362cd43 FN-6490: add mission-goal linking controls
Add bidirectional mission-goal linking in the dashboard with route support and tests.

- Add Goals view controls to list, link, unlink, and navigate linked missions.
- Add Mission detail controls to link active goals and unlink existing goal chips while refreshing summaries.
- Expose goal-to-mission lookup through the goals API and cover route and UI behavior.
- Update mission and dashboard docs for cross-linking flows.

Files changed:
 docs/dashboard-guide.md                            |   4 +-
 docs/missions.md                                   |   8 +-
 packages/dashboard/app/App.tsx                     |   2 +-
 packages/dashboard/app/components/GoalsView.css    |  90 +++++++++-
 packages/dashboard/app/components/GoalsView.tsx    | 191 ++++++++++++++++++++-
 .../dashboard/app/components/MissionManager.css    |  38 +++-
 .../dashboard/app/components/MissionManager.tsx    | 125 +++++++++++++-
 .../app/components/__tests__/GoalsView.test.tsx    | 149 ++++++++++++++--
 .../__tests__/MissionManager.goal-links.test.tsx   | 140 +++++++++++++++
 .../dashboard/src/__tests__/goals-routes.test.ts   |  70 +++++++-
 packages/dashboard/src/goals-routes.ts             |  37 +++-
 11 files changed, 821 insertions(+), 33 deletions(-)

Fusion-Task-Id: FN-6490

Fusion-Task-Lineage: aa51e053-04c5-4124-90a0-bc421c8f979f
2026-06-16 15:08:24 -07:00
gsxdsm
222b5cedf3 FN-6489: replace dashboard rgba tokens with color-mix
Replace raw dashboard RGB alpha colors with color-mix token expressions and guard the global CSS surface.

- Converted global theme shadow, state, mission, event, and theme-data alpha colors from raw rgba() to color-mix() expressions.
- Added CSS fixture loading for theme-data.css and a regression test banning raw rgb/rgba outside var() fallbacks across global app CSS.
- Documented the stricter dashboard styling rule for global and theme token CSS.

Files changed:
 docs/dashboard-guide.md                            |   2 +-
 .../__tests__/global-theme-css-no-raw-rgba.test.ts |  68 +++
 packages/dashboard/app/public/theme-data.css       | 573 +++++++++++----------
 packages/dashboard/app/styles.css                  |  49 +-
 packages/dashboard/app/test/cssFixture.ts          |   7 +
 5 files changed, 389 insertions(+), 310 deletions(-)

Fusion-Task-Id: FN-6489

Fusion-Task-Lineage: 7c466971-d15c-4382-a24b-1b32eea71974
2026-06-16 15:08:24 -07:00
gsxdsm
a38752c6bb FN-6486: rescue quarantined flaky tests
Rescue the same-day core and CLI flaky quarantines by fixing their fixture seams instead of appeasing timeouts.

- Make the core concurrent-write lock helper release synchronously inside its child process so package load cannot delay the transient lock release.
- Close real CLI TaskStore fixtures before removing temp roots and switch mock cleanup to non-hoisted unmocking.
- Remove both test files from package quarantine excludes and clear the quarantine ledger while documenting the rescue pattern.

Files changed:
 docs/testing.md                                         |  2 ++
 packages/cli/src/__tests__/extension-task-tools.test.ts | 17 +++++++++++++----
 packages/cli/vitest.config.ts                           |  4 +++-
 .../core/src/__tests__/store-concurrent-writes.test.ts  |  8 +++++++-
 packages/core/vitest.config.ts                          |  4 +++-
 scripts/lib/test-quarantine.json                        | 13 +------------
 6 files changed, 29 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-6486

Fusion-Task-Lineage: c90358c4-0549-4c68-8d17-2e2a336433b5
2026-06-16 15:08:24 -07:00
gsxdsm
0093678ee6 FN-6481: require release triage authorization
Block release-class tasks from automatic triage dispatch unless they come from a user-authored source with explicit authorization.

- Add release intent classification and authorization-marker enforcement before final triage transitions.
- Record activity/log details when release tasks are parked awaiting manual approval.
- Surface the new release-authorization activity in dashboard activity views.
- Cover release gating behavior with engine tests and document the architecture pattern.
- Add a changeset for the published CLI package.

Files changed:
 .changeset/fn-6481-release-triage-authorization.md |   5 +
 .../release-triage-requires-user-authorization.md  |  33 +++++
 packages/core/src/types.ts                         |   2 +
 packages/core/vitest.config.ts                     |   4 +
 packages/dashboard/app/components/ActivityFeed.tsx |   5 +
 .../dashboard/app/components/ActivityLogModal.tsx  |   6 +
 .../__tests__/triage-release-authorization.test.ts | 158 +++++++++++++++++++++
 .../engine/src/triage-release-authorization.ts     | 100 +++++++++++++
 packages/engine/src/triage.ts                      |  51 +++++++
 scripts/lib/test-quarantine.json                   |   8 +-
 10 files changed, 371 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6481
Fusion-Task-Lineage: 0bddb77a-87e5-4fa5-b31a-e773bdae7a29
2026-06-16 15:08:24 -07:00
gsxdsm
601a85b7c9 FN-6474: clarify plugin tarball install docs
Clarifies packaged external plugin proof-point docs so tarballs are extracted before installation.

- Document that fn plugin install accepts built plugin directories or installed package names, not raw .tgz archives.
- Update external plugin proof-point and authoring guidance to extract pnpm pack output and install ./package.
- Add a static regression test guarding the runbook and authoring guide against raw tarball install instructions.

Files changed:
 docs/cli-reference.md                              |  1 +
 docs/plugins/external-authoring.md                 |  2 +-
 docs/plugins/external-proof-point-runbook.md       | 10 +++++-
 .../external-proof-point-runbook-install.test.ts   | 40 ++++++++++++++++++++++
 4 files changed, 51 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-6474

Fusion-Task-Lineage: 744d43ff-ed98-43a1-9cb9-e25f96225ab7
2026-06-16 15:08:24 -07:00
gsxdsm
8051e89e74 docs(plan): Command Center dashboard + SDLC gap-fill plan 2026-06-15 19:05:15 -07:00
gsxdsm
65c49585d1 fix(review): address PR #1682 re-review (reuse concurrency + auth hardening)
- P1 (Greptile): a tool-use break-early turn released the warm connection
  (inUse=false) while conn.prompt() was still pending, letting the next turn
  launch a concurrent prompt on the same ACP session (protocol corruption).
  keepWarm now requires !sawToolCall, so a tool-use turn tears the connection
  down like the non-reuse path; only a clean stop turn (prompt fully resolved
  before finish) keeps it warm. + test.
- buildBridgeEnv: treat a whitespace-only auth var as absent (v.trim()), so a
  blank higher-preference token can't shadow a real lower-preference one and we
  never forward a useless blank token. + test.
- Auth-forwarding tests: clear ambient auth vars in beforeEach so a runner-env
  token can't shadow the case under test (CodeRabbit).
- Doc: clarify the allow-list never carries API keys by default; the single
  FUSION_CLAUDE_ACP_FORWARD_AUTH opt-in (default OFF) is the only exception.

348/348 pass, tsc clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 14:52:58 -07:00
gsxdsm
799e590e3e Merge pull request #1580 from Runfusion/feature/workflow-owned-merge-s07-completion-handoff-merge-work
refactor(workflow): S07 completion handoff creates merge work
2026-06-16 04:30:22 +08:00
gsxdsm
1b5b8708a6 Merge pull request #1579 from Runfusion/feature/workflow-owned-merge-s06-git-merge-capabilities
refactor(workflow): S06 git and merge capability extraction
2026-06-16 04:28:26 +08:00
gsxdsm
ffef0aad6a docs(solutions): ACP bridge 'Not logged in' — thin spawn env + keychain session isolation
Compound learning: the claude-code-cli-acp bridge returned 'Not logged in'
despite a working claude -p, due to (1) a too-thin spawn env (needs XDG_*/USER/
SHELL beyond HOME/PATH) and (2) macOS login-Keychain session isolation for
detached/headless processes. Six headless tasks misdiagnosed it as an upstream
gap. Cross-linked from the ACP runtime integration pattern doc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 13:15:38 -07:00
gsxdsm
2bffad1784 Merge remote-tracking branch 'origin/main' into fix/test-timeout-failures
# Conflicts:
#	scripts/test-changed.mjs
2026-06-15 12:13:40 -07:00
gsxdsm
642780220e chore(acp): apply subagent-review follow-ups (changeset, KTD10 tests, docs)
Two-reviewer pass (security + architecture) on KTD10 + the full Route A
increment: no code defects, no P0, merge-ready as a dormant increment. Applying
the P1 follow-ups:

- Add the feature changeset (@runfusion/fusion minor) — the one convention gap.
- KTD10 tests: fail-closed (bridge not resolved -> env stays unset -> -p) and
  idempotency (second onLoad keeps the first published path).
- Document the two intentional, parallel MCP-forwarding paths (U10 engine-adapter
  vs U11 provider-driver) so nobody double-forwards, and the known
  ACP-path-token-usage=0 residual so U12 doesn't treat it as a bug.

Reviewers confirmed: dormancy invariant holds end-to-end (nothing sets
FUSION_CLAUDE_ACP=1; both flag+path required; -p is the default); OAuth pi path
untouched. 206/206 plugin tests, 333/333 pi-claude-cli tests, typecheck clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:40:06 -07:00
gsxdsm
239bec74c4 docs(acp): record U11 tool-flow verification PASS — enablement gate cleared
Live run: forwarded MCP tools and native Bash both refuse to execute when we
return cancelled to session/request_permission (no TOCTOU). streamViaAcp's
deny-by-default + break-early is verified safe. Env allow-list (incl. XDG/USER)
validated as required for the bridged claude to authenticate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:21:43 -07:00
gsxdsm
03d12b6289 docs(acp): record U11 implementation design (ready to execute)
Reverse-engineered the streamViaCli contract and locked the U11 build plan:
AssistantMessageEventStream shape to match, the kill-switch branch point in
streamSimple, the KTD10 injection seam (pi-claude-cli adds @agentclientprotocol/sdk;
bridge path injected like mcpConfigPath), MCP-server construction reusing
ensureMcpConfig, full-history prompting (R13), ACP->pi event translation
paralleling event-bridge.ts, and live-bridge verification via the U9 harness.

No transport change yet — the live `claude -p` path is untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 05:56:47 -07:00