Commit Graph

898 Commits

Author SHA1 Message Date
gsxdsm
9d1bd393d8 FN-9202: Unify dashboard banner styling
Standardize dashboard notices on a shared, token-driven banner shell.

- Add a reusable Banner primitive with consistent tones, layouts, actions, and dismissal behavior.
- Migrate dashboard notification banners away from bespoke shells and left accent borders.
- Document and test banner styling invariants, including token-only CSS lengths and colors.
- Add a patch changeset for the published dashboard bundle.

Files changed:
 .changeset/fn-9202-banner-style-unification.md     |   7 ++
 docs/dashboard-guide.md                            |   4 +
 .../app/__tests__/banner-style-consistency.test.ts |  25 ++++
 .../app/components/ApprovalNotificationBanner.css  |  10 --
 .../app/components/ApprovalNotificationBanner.tsx  |   5 +-
 packages/dashboard/app/components/Banner.css       |  81 ++++++++++++
 packages/dashboard/app/components/Banner.tsx       |  78 ++++++++++++
 .../app/components/CapacityRiskBanner.css          |  50 +-------
 .../app/components/CapacityRiskBanner.tsx          |  39 +++---
 .../app/components/CliBinaryInstallBanner.css      | 126 ++-----------------
 .../app/components/CliBinaryInstallBanner.tsx      |  14 +--
 .../app/components/DbCorruptionBanner.css          |  18 +--
 .../app/components/DbCorruptionBanner.tsx          |   5 +-
 .../app/components/EngineStatusBanner.css          |  94 ++------------
 .../app/components/EngineStatusBanner.tsx          |  48 +++----
 .../app/components/EngineUnavailableBanner.css     |  42 +------
 .../app/components/EngineUnavailableBanner.tsx     |  21 ++--
 .../app/components/MergeAdvanceNotice.css          | 129 +++----------------
 .../app/components/MergeAdvanceNotice.tsx          |  36 +++---
 .../app/components/MigrationInProgressBanner.css   |  25 ----
 .../app/components/MigrationInProgressBanner.tsx   |  19 +--
 .../app/components/OAuthReloginBanner.css          |  53 +-------
 .../app/components/OAuthReloginBanner.tsx          |  26 +---
 .../app/components/SessionNotificationBanner.css   |  16 +--
 .../app/components/SessionNotificationBanner.tsx   |   5 +-
 .../app/components/SetupWarningBanner.css          | 106 +---------------
 .../app/components/SetupWarningBanner.tsx          |  31 +----
 .../app/components/SqliteMigrationBanner.css       |  40 +-----
 .../app/components/SqliteMigrationBanner.tsx       |  33 ++---
 .../app/components/TaskIdIntegrityBanner.css       |  18 +--
 .../app/components/TaskIdIntegrityBanner.tsx       |   5 +-
 .../dashboard/app/components/TestModeBanner.css    |  18 ---
 .../dashboard/app/components/TestModeBanner.tsx    |  12 +-
 .../app/components/UpdateAvailableBanner.css       | 139 +++------------------
 .../app/components/UpdateAvailableBanner.tsx       |  22 ++--
 .../app/components/__tests__/Banner.test.tsx       |  48 +++++++
 36 files changed, 450 insertions(+), 998 deletions(-)

Fusion-Task-Id: FN-9202

Fusion-Task-Lineage: 14762201-55e5-4124-a897-9667c3a1ab84

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-23 16:00:53 -07:00
gsxdsm
3d37cfa7db FN-9201: Prevent mobile nav lift when the iOS keyboard opens
Keep mobile bottom chrome pinned or hidden during keyboard focus transitions, including landscape phone layouts.

- track keyboard-focus intent before visual viewport metrics settle
- clamp focused iOS viewport offsets so fixed bars remain behind the keyboard
- cover runtime bootstrap, landscape integration, nav, focus, and offset behavior
- document the mobile keyboard layout contract and add a patch changeset

Files changed:
 .changeset/fn-9201-mobile-nav-keyboard-lift.md     |  7 ++
 docs/dashboard-guide.md                            |  4 +-
 packages/dashboard/app/App.tsx                     | 43 ++++++++--
 ...ile-nav-keyboard-landscape.integration.test.tsx | 91 ++++++++++++++++++++
 .../__tests__/icb-inline-script.runtime.test.ts    | 74 ++++++++++++++++
 .../mobile-bottom-bars-keyboard-layout.test.ts     | 15 +++-
 .../viewport-compensation-keyboard.test.ts         |  5 +-
 .../__tests__/MobileNavBar.keyboard-lift.test.tsx  | 65 ++++++++++++++
 .../__tests__/useKeyboardFocusPending.test.tsx     | 99 ++++++++++++++++++++++
 .../dashboard/app/hooks/useKeyboardFocusPending.ts | 43 ++++++++++
 packages/dashboard/app/index.html                  | 12 ++-
 .../utils/__tests__/mobileBarKeyboardFlags.test.ts | 22 +++++
 .../app/utils/__tests__/viewportOffset.test.ts     | 32 +++++++
 .../dashboard/app/utils/mobileBarKeyboardFlags.ts  | 10 ++-
 packages/dashboard/app/utils/viewportOffset.ts     |  8 ++
 15 files changed, 510 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-9201

Fusion-Task-Lineage: 4b3b01d3-8968-432b-9537-a63ee6bbde31

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-23 11:40:06 -07:00
gsxdsm
52d124bde2 FN-9195: Keep the chat composer visible above iOS keyboards
Keep Chat input reachable across software-keyboard viewport changes.

- Track visual viewport changes across phones, tablets, compact docks, and narrow floating Chat hosts.
- Clamp thread height using the measured host offset while preserving iOS focus behavior.
- Add regression coverage, shared viewport test helpers, operator documentation, and a patch changeset.

Files changed:
 .changeset/fn-9195-chat-ios-keyboard-composer.md   |   7 +
 docs/dashboard-guide.md                            |   2 +-
 packages/dashboard/app/components/ChatView.css     |  44 +--
 packages/dashboard/app/components/ChatView.tsx     |  43 ++-
 .../__tests__/ChatView.ios-keyboard.test.tsx       | 335 +++++++++++++++++++++
 .../components/__tests__/ChatView.test-harness.tsx | 103 ++++++-
 6 files changed, 506 insertions(+), 28 deletions(-)

Fusion-Task-Id: FN-9195

Fusion-Task-Lineage: cdada0cc-af6c-4cf8-8ffd-0940d280b07a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-23 09:55:53 -07:00
gsxdsm
3857e0dc14 FN-9198: Fix narrow chat switcher dropdown rendering
Anchor the direct-conversation switcher to the visible thread header across narrow Chat surfaces.

- position narrow-host switcher menus relative to the thread header
- cover mobile, compact dock, floating, desktop, and empty-menu states
- add the shared 2px spacing token and document the corrected behavior
- add a patch changeset for the published Fusion package

Files changed:
 .../fn-9198-chat-title-switcher-menu-anchor.md     |   7 +
 docs/dashboard-guide.md                            |   2 +-
 .../app/components/ChatThreadTitleSwitcher.css     |  11 +-
 .../__tests__/ChatView.title-switcher.test.tsx     | 144 ++++++++++++++++++++-
 packages/dashboard/app/styles.css                  |   2 +
 5 files changed, 160 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-9198

Fusion-Task-Lineage: 9a1132d2-9b1a-4150-918a-085b42b22e02

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-23 09:21:10 -07:00
gsxdsm
3f448f7292 FN-9194: fix mailbox task ID interpolation
Show concrete destination IDs in mailbox task links instead of leaking untranslated placeholders.

- Pass the catalog's `id` variable to visible and accessible task-link labels.
- Cover shared links and all mailbox host, viewport, and conversation-layout surfaces with the shipping catalog.
- Document the task-link label and add a patch changeset.

Files changed:
 .changeset/fn-9194-mailbox-task-link-id.md         |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 .../app/components/MailboxRelatedWorkLink.tsx      |   9 +-
 .../__tests__/MailboxRelatedWorkLink.test.tsx      |  50 ++++++++
 .../MailboxTaskLinkInterpolation.surfaces.test.tsx | 128 +++++++++++++++++++++
 5 files changed, 193 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-9194

Fusion-Task-Lineage: d7afd16a-c951-40c4-aa12-d7b56f9cba7e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-23 01:16:35 -07:00
gsxdsm
eaa1d47cf0 FN-9193: add docked chat conversation sidebar
Add a persistent, resizable conversation sidebar to non-floating chat on tablet and desktop layouts.

- Keep conversation lists visible beside selected direct and room threads on eligible viewports.
- Persist sidebar visibility and width while preserving mobile, compact, and floating one-pane behavior.
- Add responsive styling, operator documentation, a release changeset, and focused regression coverage.

Files changed:
 .changeset/fn-9193-chat-docked-sidebar.md          |   7 ++
 docs/dashboard-guide.md                            |  12 +-
 packages/dashboard/app/components/ChatView.css     |  58 +++++++++-
 packages/dashboard/app/components/ChatView.tsx     | 120 ++++++++++++++++---
 .../__tests__/ChatView.docked-sidebar.test.tsx     | 128 +++++++++++++++++++++
 .../__tests__/ChatView.sessions-rooms.test.tsx     |  29 ++---
 .../components/__tests__/ChatView.test-harness.tsx |  41 ++++++-
 7 files changed, 360 insertions(+), 35 deletions(-)

Fusion-Task-Id: FN-9193

Fusion-Task-Lineage: 58266e56-9d09-4472-98f4-f9d1d80635a7

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-22 21:13:02 -07:00
gsxdsm
0fc2c23f24 FN-9192: add direct chat title switcher
Make Direct conversation titles open an in-place, keyboard-accessible chat switcher.

- Add a responsive title dropdown with pinned, recent, unread, and active conversation states.
- Reuse existing session-selection and back-navigation paths from ChatView.
- Cover interaction, ordering, limits, keyboard behavior, and Room-title exclusions.
- Document the switcher and add a minor release changeset.

Files changed:
 .changeset/fn-9192-chat-title-switcher.md          |   7 +
 docs/dashboard-guide.md                            |   4 +
 .../app/components/ChatThreadTitleSwitcher.css     | 139 +++++++++++++++
 .../app/components/ChatThreadTitleSwitcher.tsx     | 191 +++++++++++++++++++++
 packages/dashboard/app/components/ChatView.tsx     |  17 +-
 .../__tests__/ChatView.title-switcher.test.tsx     | 171 ++++++++++++++++++
 6 files changed, 528 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-9192

Fusion-Task-Lineage: 1e499595-6d82-4ba3-8599-2470d2e89429

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-22 20:37:46 -07:00
gsxdsm
3af54418cf FN-9191: add the Iceberg dashboard theme
Add a persisted Iceberg palette across dashboard and desktop theme surfaces.

- Define coordinated dark and light Iceberg color tokens and selector swatches.
- Register Iceberg in shared persistence, theme selectors, and first-paint validation.
- Add registry coverage, documentation, visual references, and a release changeset.

Files changed:
 .changeset/fn-9191-iceberg-theme.md                |   6 ++
 docs/dashboard-guide.md                            |   5 +-
 docs/settings-reference.md                         |   4 +-
 packages/core/src/types/ui/execution-and-ui.ts     |   2 +
 .../dashboard/app/__tests__/iceberg-theme.test.ts  | 102 +++++++++++++++++++++
 .../dashboard/app/components/ThemeSelector.css     |  15 +++
 .../components/__tests__/ThemeDropdown.test.tsx    |   3 +-
 .../components/__tests__/ThemeSelector.test.tsx    |   3 +-
 .../__tests__/CommandCenterControls.test.tsx       |   3 +-
 packages/dashboard/app/components/themeOptions.ts  |   2 +
 packages/dashboard/app/index.html                  |   3 +-
 packages/dashboard/app/public/theme-data.css       |  85 +++++++++++++++++
 packages/desktop/src/renderer/index.html           |   2 +
 screenshots/fn-9191-iceberg-theme-dark.png         |   3 +
 screenshots/fn-9191-iceberg-theme-light.png        |   3 +
 15 files changed, 234 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-9191

Fusion-Task-Lineage: a8b441c6-763a-4c38-a682-bffab1fdd293

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-22 19:43:45 -07:00
Fusion Agent
9d8c14b4e8 FN-165: use session context usage for chat indicator
Use provider-reported pi session context usage to drive the Chat context indicator.

- Track measured and pending session context usage in the dashboard.
- Expose bounded context metadata from chat sessions and update token estimation.
- Add regression coverage, localized labels, documentation, and a changeset.

Files changed:
 .changeset/fn-165-chat-context-usage.md            |  7 ++
 docs/dashboard-guide.md                            |  4 +-
 packages/dashboard/app/components/ChatView.tsx     | 49 ++++++++----
 .../__tests__/ChatView.context-window.test.tsx     | 84 +++++++++++++++++++-
 .../app/utils/__tests__/chatContextUsage.test.ts   | 66 ++++++++++++++++
 .../app/utils/__tests__/estimateChatTokens.test.ts | 10 +++
 packages/dashboard/app/utils/chatContextUsage.ts   | 73 ++++++++++++++++++
 packages/dashboard/app/utils/estimateChatTokens.ts | 39 ++++++++--
 .../dashboard/src/__tests__/chat-manager.test.ts   | 89 +++++++++++++++++++++
 packages/dashboard/src/chat.ts                     | 65 +++++++++++++---
 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/pt-BR/app.json               |  3 +
 packages/i18n/locales/zh-CN/app.json               |  3 +
 packages/i18n/locales/zh-TW/app.json               |  3 +
 packages/i18n/src/resources.d.ts                   | 19 +++--
 18 files changed, 483 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-165

Fusion-Task-Lineage: a95a9c7f-80aa-41be-8807-1fbd383f0f1d

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:37:58 +00:00
Fusion Agent
c1818ea819 FN-151: make task reset always complete
Make reset a reliable description-only fresh start by fencing active planning work and cleaning discarded execution state.

- Add reset lifecycle disposal for planning sessions, locks, artifacts, and reset worktrees.
- Preserve operator-provided descriptions while clearing stale execution and planning projections.
- Expose reset routes and add core, dashboard, and engine regression coverage.

Files changed:
 .changeset/fn-151-task-reset-always-completes.md   |   7 +
 docs/architecture.md                               |   3 +
 docs/dashboard-guide.md                            |   6 +-
 .../postgres/task-reset-publication.pg.test.ts     |  71 +++++++++-
 .../core/src/__tests__/task-move-disposer.test.ts  |  38 ++++++
 packages/core/src/index.gate.ts                    |   2 +
 packages/core/src/index.ts                         |   2 +
 packages/core/src/task-store/reset-lifecycle.ts    |  38 +++++-
 packages/core/src/tasks/task-move-disposer.ts      |  36 +++++-
 .../src/__tests__/task-reset-lifecycle.test.ts     | 110 +++++++++++++++-
 .../src/routes/register-task-workflow-routes.ts    |  29 +++--
 .../src/__tests__/agent-document-tools.test.ts     |  49 +++++++
 .../src/__tests__/reset-worktree-removal.test.ts   |  77 +++++++++++
 .../__tests__/triage-reset-planning-fence.test.ts  | 118 +++++++++++++++++
 packages/engine/src/agent-tools.ts                 |  60 +++++++--
 packages/engine/src/agents/planning-liveness.ts    |  19 +++
 packages/engine/src/index.ts                       |   4 +
 packages/engine/src/plan-artifact-writeback.ts     |  27 +++-
 packages/engine/src/planning-reset-fence.ts        |  26 +++
 packages/engine/src/triage.ts                      | 143 +++++++++++++++++++--
 packages/engine/src/worktree/remove-reset-worktree.ts   |  65 ++++++++++
 21 files changed, 882 insertions(+), 48 deletions(-)

Fusion-Task-Id: FN-151

Fusion-Task-Lineage: 1c25d58e-2d23-4340-a489-51f3e2d8a7f4

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:32 +00:00
Fusion Agent
a786c45bb9 FN-149: converge review cycles before human escalation
Add bounded review convergence so disputed review gates can resolve independently before requiring operator intervention.

- Add staged remediation, arbitration, dispute tooling, and stale-attempt fencing.
- Preserve review history and findings while exposing convergence state in core, dashboard, and audit paths.
- Add migration, configuration, documentation, changeset, and regression coverage.

Files changed:
 .changeset/fn-149-review-convergence.md            |   7 +
 AGENTS.md                                          |   2 +
 docs/architecture.md                               |   4 +
 docs/dashboard-guide.md                            |   4 +
 docs/run-audit.md                                  |   4 +
 docs/settings-reference.md                         |   4 +
 docs/workflow-steps.md                             |   8 +
 .../src/__tests__/default-workflow-hooks.test.ts   |  13 +
 packages/core/src/__tests__/plan-approval.test.ts  |  21 ++
 .../src/__tests__/reopen-semantics-by-role.test.ts |  25 ++
 packages/core/src/__tests__/review-severity-gate.test.ts     |  18 +-
 packages/core/src/__tests__/workflow-step-results.test.ts    |  52 +++-
 packages/core/src/config/settings-schema.ts        |   6 +
 packages/core/src/index.gate.ts                    |   9 +
 packages/core/src/index.ts                         |   9 +
 packages/core/src/planner/plan-approval.ts         |  27 +-
 .../0065_fn_149_review_convergence_stage.sql       |   3 +
 packages/core/src/postgres/schema-applier.ts       |  10 +
 packages/core/src/postgres/schema/project.ts       |   2 +
 packages/core/src/store.ts                         |   2 +-
 packages/core/src/task-store/persistence.ts        |   4 +
 packages/core/src/task-store/reset-lifecycle.ts    |   2 +
 packages/core/src/task-store/serialization.ts      |   2 +
 packages/core/src/task-store/task-mutation-ops.ts  |   2 +-
 packages/core/src/task-store/task-row-mappers.ts   |   2 +-
 packages/core/src/task-store/task-update.ts        |   4 +
 packages/core/src/tasks/in-review-stall.ts         |  21 ++
 packages/core/src/tasks/manual-retry-reset.ts      |   2 +
 packages/core/src/types/settings/settings-scope.ts |   7 +
 packages/core/src/types/task/task-core.ts          |   3 +
 packages/core/src/types/task/task-review.ts        |   2 +-
 packages/core/src/types/workflow/workflow-steps.ts |  24 +-
 .../src/workflows/builtin-workflow-settings.ts     |  43 +++
 .../core/src/workflows/default-workflow-hooks.ts   |  10 +-
 .../core/src/workflows/workflow-step-results.ts    | 185 ++++++++++++-
 .../dashboard/app/components/TaskReviewTab.tsx     |   6 +-
 .../components/__tests__/TaskReviewTab.test.tsx    |   6 +-
 .../dashboard/src/__tests__/routes-tasks.test.ts   |   7 +
 .../src/routes/register-task-workflow-routes.ts    |   4 +-
 .../__tests__/review-arbitration-release.test.ts   |  46 ++++
 .../src/__tests__/review-arbitration.test.ts       |  57 ++++
 .../__tests__/review-convergence-context.test.ts   |  95 +++++++
 .../review-convergence-escalation.test.ts          | 135 +++++++++
 .../src/__tests__/review-dispute-tool.test.ts      | 113 +++++++
 .../__tests__/review-finding-supersession.test.ts  |  55 ++-
 .../review-findings-injection.test.ts              |  19 +-
 .../__tests__/review-history-preservation.test.ts  | 186 +++++++++++++
 .../__tests__/review-ladder-entry-points.test.ts   | 304 +++++++++++++++++++++
 ...un-audit-sink-health-review-convergence.test.ts | 251 +++++++++++++++++
 .../workflow-graph-optional-step-fix.test.ts       |  59 ++--
 packages/engine/src/execution/replan-target.ts     |   6 +-
 .../clear-terminal-step-failures-for-retry.ts      |   8 +-
 .../src/executor/create-review-dispute-tool.ts     | 126 +++++++++
 packages/engine/src/executor/deps-bags.ts          |   2 +-
 .../engine/src/executor/execute-workflow-graph.ts  |  71 ++++-
 packages/engine/src/executor/execute-workflow-step.ts   |  16 +-
 packages/engine/src/executor/free-reexports.ts     |   1 +
 packages/engine/src/executor/impl-bindings.ts      |   1 +
 .../engine/src/executor/optional-step-revision.ts  |  33 ++-
 .../src/executor/recover-failed-pre-merge-step.ts  |  43 ++-
 .../request-pre-merge-optional-step-fix.ts         |  85 +++---
 packages/engine/src/executor/review-arbitration.ts | 233 +++++++++++++++
 .../src/executor/review-convergence-ladder.ts      | 237 +++++++++++++++
 .../route-graph-failure-to-execution-resume.ts     |  16 +-
 .../route-retryable-remediation.ts                 |   9 +-
 .../engine/src/executor/run-graph-custom-node.ts   |   1 +
 packages/engine/src/executor/run-implementation.ts |   2 +
 .../src/executor/task-executor-session-facades.ts  |   3 +-
 .../engine/src/executor/workflow-rerun-bounce.ts   |  13 +-
 .../executor/workflow-step-failure-injection.ts    |  23 +-
 .../engine/src/executor/workflow-step-failures.ts  |  16 +-
 .../engine/src/executor/workflow-step-verdict.ts   |   2 +
 packages/engine/src/self-healing.ts                |   5 +-
 packages/engine/src/util/run-audit.ts              |   9 +-
 .../src/workflows/workflow-graph-executor.ts       |   8 +-
 .../engine/src/worktree/review-diff-fingerprint.ts |  21 +++
 .../src/worktree/workspace-review-evidence.ts      |   9 +-
 77 files changed, 2719 insertions(+), 166 deletions(-)

Fusion-Task-Id: FN-149
Fusion-Task-Lineage: 9330df9d-5086-4b40-8daa-66f0ea31cf3e
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:32 +00:00
Fusion Agent
e67403cd6a FN-155: add expandable thinking traces to transcripts
Add a reusable expandable thinking trace across chat and agent transcript surfaces.

- Add the ThinkingTrace component, styling, localized labels, and documentation.
- Render trace sections across chat, planning, mission, milestone, workflow, and agent log views.
- Preserve streaming trace data and add regression and surface coverage.

Files changed:
 .changeset/fn-155-thinking-trace.md                |   7 ++
 docs/dashboard-guide.md                            |   4 +
 .../dashboard/app/components/AgentLogViewer.tsx    |  11 +-
 packages/dashboard/app/components/ChatView.css     |  10 +-
 .../app/components/ConversationHistory.tsx         |   3 +-
 .../components/MilestoneSliceInterviewModal.tsx    |   3 +-
 .../app/components/MissionInterviewModal.tsx       |   3 +-
 .../dashboard/app/components/PlanningModeModal.tsx |   9 +-
 .../app/components/StandardChatSurface.tsx         |  21 ++--
 packages/dashboard/app/components/TaskChatTab.tsx  |  17 +--
 .../dashboard/app/components/ThinkingTrace.css     |   7 ++
 .../dashboard/app/components/ThinkingTrace.tsx     |  99 ++++++++++++++++++
 .../app/components/WorkflowResultsTab.tsx          |   4 +
 .../__tests__/ChatView.core-interactions.test.tsx  |  25 +++++
 .../MilestoneSliceInterviewModal.test.tsx          |  15 ++-
 .../__tests__/MissionInterviewModal.test.tsx       |  15 ++-
 .../PlanningModeModal.planning-flow.test.tsx       |  33 +++++-
 .../app/components/__tests__/TaskChatTab.test.tsx  |  16 +++
 .../__tests__/ThinkingTrace.surfaces.test.tsx      |  70 +++++++++++++
 .../components/__tests__/ThinkingTrace.test.tsx    | 115 +++++++++++++++++++++
 .../dashboard/src/__tests__/chat-manager.test.ts   |  11 ++
 packages/engine/src/__tests__/agent-logger.test.ts |  15 +++
 packages/engine/src/__tests__/streaming-delta.test.ts   |  13 +++
 packages/engine/src/execution/streaming-delta.ts   |   4 +
 packages/i18n/locales/en/app.json                  |   8 ++
 packages/i18n/locales/es/app.json                  |   8 ++
 packages/i18n/locales/fr/app.json                  |   8 ++
 packages/i18n/locales/ko/app.json                  |   8 ++
 packages/i18n/locales/pt-BR/app.json               |   8 ++
 packages/i18n/locales/zh-CN/app.json               |   8 ++
 packages/i18n/locales/zh-TW/app.json               |   8 ++
 packages/i18n/src/resources.d.ts                   |   8 ++
 32 files changed, 539 insertions(+), 55 deletions(-)

Fusion-Task-Id: FN-155

Fusion-Task-Lineage: 2aafff54-2146-4480-874b-393dc991d52b

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:13 +00:00
Fusion Agent
8b681775ae FN-122: fix local workspace integration across repositories
Make multi-repository workspace merges resolve and land against the correct local integration targets.

- Add local integration-target resolution and durable merge-dispatch leasing.
- Harden workspace merge fencing, failure handling, audit logging, and CLI/dashboard controls.
- Document the workflow and add regression coverage for workspace integration and task-log deduplication.
- Complete the CLI engine mock for the new public lease export.

Files changed:
 .changeset/fn-122-local-workspace-integration.md   |   7 +
 docs/architecture.md                               |   1 +
 docs/dashboard-guide.md                            |   4 +
 docs/settings-reference.md                         |   4 +-
 docs/testing.md                                    |  10 ++
 .../task-command-github-import-tracking.test.ts    |   2 +
 packages/cli/src/commands/__tests__/task.test.ts   |   1 +
 packages/cli/src/commands/dashboard.ts             |  15 +-
 packages/cli/src/commands/task.ts                  |  14 +-
 .../__tests__/postgres/task-log-dedupe.pg.test.ts  |  30 ++++
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/store.ts                         |   5 +-
 packages/core/src/task-store/audit-ops.ts          |  38 ++++
 packages/core/src/types.ts                         |   2 +
 packages/core/src/types/task/task-core.ts          |  16 +-
 packages/core/src/types/task/task-log.ts           |   2 +
 .../app/components/WorkspaceWorktreesSummary.tsx   |  15 +-
 .../settings/sections/WorktreesSection.tsx         |   3 +-
 .../engine/src/__tests__/workspace-e2e.test.ts     | 198 ++++++++++++++++-----
 .../__tests__/workspace-integration-target.test.ts |  75 ++++++++
 .../src/__tests__/workspace-merger-lease.test.ts   |  42 ++++-
 packages/engine/src/index.ts                       |   6 +
 packages/engine/src/merge/merger-ai.ts             | 152 +++++++++++-----
 packages/engine/src/merge/workspace-fence-ref.ts   |  17 +-
 .../src/merge/workspace-integration-target.ts      |  87 +++++++++
 .../engine/src/merge/workspace-land-failure.ts     |   6 +-
 .../src/merge/workspace-merge-dispatch-lease.ts    |  54 ++++++
 packages/engine/src/project-engine.ts              |  25 +++
 28 files changed, 715 insertions(+), 118 deletions(-)

Fusion-Task-Id: FN-122
Fusion-Task-Lineage: 9364bba4-cebc-44e7-b2ae-60967fbc025c
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:12 +00:00
Fusion Agent
0b4dbd219b FN-125: prevent workflow agents from creating tasks
Stop workflow executor agents from creating ordinary tasks while preserving explicit self-spawned dependency handling.

- Gate task creation by session identity and execution context.
- Add self-spawned dependency support, validation, and persistence coverage.
- Update agent prompts, tools, documentation, and CLI integration.
- Add a published-package changeset.

Files changed:
 .changeset/fn-125-removal.md                       |  7 +++
 docs/agents.md                                     |  2 +-
 docs/dashboard-guide.md                            |  2 +-
 docs/settings-reference.md                         |  6 +-
 .../cli/skill/fusion/references/engine-tools.md    | 10 ++--
 .../extension-task-execution-task-creation.test.ts | 70 ++++++++++++++++++++++
 packages/cli/src/extension.ts                      | 49 +++++++++++++--
 .../postgres/store-self-spawned-dep.pg.test.ts     | 56 +++++++++++++++++
 .../src/__tests__/self-spawned-dependency.test.ts  | 18 ++++++
 .../__tests__/session-identity-registry.test.ts    | 14 ++++-
 packages/core/src/agents/agent-prompts.ts          | 27 ++++-----
 .../src/agents/task-execution-task-creation.ts     | 19 ++++++
 packages/core/src/index.ts                         |  7 +++
 packages/core/src/session-identity-registry.ts     |  7 +++
 packages/core/src/store.ts                         |  2 +
 packages/core/src/task-store/errors.ts             | 21 +++++++
 packages/core/src/task-store/task-update.ts        | 10 +++-
 packages/core/src/task-store/update-task-deps.ts   | 12 +++-
 .../__tests__/ephemeral-task-create-gate.test.ts   | 18 +++---
 .../src/__tests__/executor-review-verdicts.test.ts |  3 +-
 packages/engine/src/agent-tools.ts                 |  4 ++
 packages/engine/src/agents/agent-runtime.ts        |  2 +
 .../engine/src/execution/step-session-executor.ts  | 15 ++---
 .../executor/attempt-executor-verification-fix.ts  |  1 +
 .../engine/src/executor/create-spawn-agent-tool.ts |  1 +
 .../engine/src/executor/create-task-done-tool.ts   | 18 +++++-
 .../engine/src/executor/create-task-update-tool.ts | 12 +++-
 .../engine/src/executor/execute-workflow-step.ts   |  1 +
 packages/engine/src/executor/run-implementation.ts | 18 +++---
 packages/engine/src/executor/system-prompt.ts      | 21 +++----
 packages/engine/src/executor/task-add-dep-tool.ts  | 14 ++++-
 packages/engine/src/pi.ts                          | 15 ++++-
 32 files changed, 401 insertions(+), 81 deletions(-)

Fusion-Task-Id: FN-125

Fusion-Task-Lineage: da3d69f6-c9cb-45fd-8691-3dfaf7007514
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:12 +00:00
Fusion Agent
35f0247028 FN-115: restore task-card detail clicks
Restore native task-card activation while preserving intentional board panning.

- Start board panning only after horizontal intent is established.
- Preserve stationary card clicks and add regression coverage for detail locators and touch resizing.
- Document the restored interaction behavior and publish a patch changeset.

Files changed:
 .changeset/fn-115-restore-board-card-click.md      |   7 ++
 docs/dashboard-guide.md                            |   8 +-
 packages/dashboard/app/components/Board.tsx        |   9 +-
 .../app/components/__tests__/Board.test.tsx        |  47 ++++++---
 .../__tests__/board-card-detail-locators.test.tsx  | 108 +++++++++++++++++++++
 .../app/hooks/__tests__/useBoardMousePan.test.tsx  |  75 ++++++++++++++
 packages/dashboard/app/hooks/useBoardMousePan.ts   |  39 ++++++--
 .../app/task-modal-touch-resize-e2e-fixture.tsx    |  20 +++-
 .../task-modal-touch-resize-browser.test.ts        |  75 +++++++++++++-
 9 files changed, 354 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-115

Fusion-Task-Lineage: 158de270-2a5c-4590-8347-a3c4d6a5db03

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:12 +00:00
Fusion Agent
c47d555123 FN-116: open multiple Quick Chats from conversations
Add in-app Quick Chat windows that open exact Direct conversation snapshots without disturbing the source chat.

- Add pop-out window state, rendering, and close controls for multiple Quick Chats.
- Add context-menu launching and isolated session/preferences handling.
- Add localized labels, dashboard documentation, regression tests, and a release changeset.

Files changed:
 .changeset/fn-116-multiple-quick-chats.md          |  7 +++
 docs/dashboard-guide.md                            |  2 +
 packages/dashboard/app/App.tsx                     | 34 ++++++++++++--
 packages/dashboard/app/components/ChatView.tsx     | 36 +++++++++++++--
 .../app/components/PoppedOutChatWindows.tsx        | 53 ++++++++++++++++++++++
 .../__tests__/ChatView.core-contracts.test.tsx     | 15 ++++++
 .../__tests__/PoppedOutChatWindows.test.tsx        | 25 +++++++++
 .../app/components/dashboard/MainContent.tsx       |  2 +
 .../dashboard/app/components/dashboard/types.ts    |  2 +
 .../app/components/overflowViewRegistry.tsx        |  3 ++
 .../app/components/useRightDockController.tsx      |  3 ++
 .../app/hooks/__tests__/usePoppedOutChats.test.ts  | 24 +++++++++
 packages/dashboard/app/hooks/useChat.ts            | 42 ++++++++++++++--
 packages/dashboard/app/hooks/usePoppedOutChats.ts  | 42 +++++++++++++++++
 packages/i18n/locales/en/app.json                  |  1 +
 packages/i18n/locales/es/app.json                  |  1 +
 packages/i18n/locales/fr/app.json                  |  1 +
 packages/i18n/locales/ko/app.json                  |  1 +
 packages/i18n/locales/pt-BR/app.json               |  1 +
 packages/i18n/locales/zh-CN/app.json               |  1 +
 packages/i18n/locales/zh-TW/app.json               |  1 +
 packages/i18n/src/resources.d.ts                   | 38 ++++++++++++++---
 22 files changed, 313 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-116

Fusion-Task-Lineage: 486e3092-c4db-4e50-a9df-f2adfeb6fddf

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:35:06 +00:00
Fusion Agent
294e826ea0 FN-110: integrate Ctrl+F search into chat lists and conversations
Add keyboard-driven search across chat navigation and conversation content.

- Add Ctrl+F search controls for chat lists and conversation messages.
- Support result navigation, highlighting, and localized labels across all dashboard locales.
- Update chat surfaces, documentation, changeset metadata, and regression coverage.

Files changed:
 .changeset/fn-110-chat-find.md                     |   7 +
 docs/dashboard-guide.md                            |   5 +
 packages/dashboard/app/App.tsx                     |   1 +
 packages/dashboard/app/components/ChatView.css     |  41 +++++
 packages/dashboard/app/components/ChatView.tsx     | 162 +++++++++++++++--
 .../dashboard/app/components/CliChatSurface.tsx    |   5 +-
 .../dashboard/app/components/StandardChatSurface.tsx |  14 +-
 .../__tests__/ChatView.content-search.test.tsx     | 197 ++++++++++++++++++++-
 packages/dashboard/vitest.config.ts                |   1 +
 packages/i18n/locales/en/app.json                  |   7 +
 packages/i18n/locales/es/app.json                  |   7 +
 packages/i18n/locales/fr/app.json                  |   7 +
 packages/i18n/locales/ko/app.json                  |   7 +
 packages/i18n/locales/pt-BR/app.json               |   7 +
 packages/i18n/locales/zh-CN/app.json               |   7 +
 packages/i18n/locales/zh-TW/app.json               |   7 +
 packages/i18n/src/resources.d.ts                   |   7 +
 17 files changed, 467 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-110

Fusion-Task-Lineage: 33ef1888-d250-489a-80b8-f3c5069da532

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:35:06 +00:00
Fusion Agent
eab7635f83 FN-109: enable task-card board panning
Allow users to pan the desktop and tablet board from noninteractive task-card surfaces without disrupting controls or mobile scrolling.

- Start horizontal panning from eligible task-card bodies and text while preserving native controls and editing behavior.
- Wire board pan state and cursor styling across live board roots while keeping mobile snap and touch scrolling unchanged.
- Add regression coverage, documentation updates, and a patch changeset.

Files changed:
 .changeset/fn-109-board-card-pan.md                |  7 ++
 docs/dashboard-guide.md                            |  5 +-
 docs/task-management.md                            |  4 +-
 packages/dashboard/app/components/Board.css        |  7 +-
 packages/dashboard/app/components/Board.tsx        |  8 +-
 .../app/components/__tests__/Board.test.tsx        | 98 ++++++++++++++++------
 .../app/hooks/__tests__/useBoardMousePan.test.tsx  | 47 ++++++++++-
 packages/dashboard/app/hooks/useBoardMousePan.ts   | 12 +--
 8 files changed, 146 insertions(+), 42 deletions(-)

Fusion-Task-Id: FN-109

Fusion-Task-Lineage: 456bd9d3-9767-4b82-9f99-f191abc44b18

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:35:06 +00:00
gsxdsm
a010dc42bf FN-9185: enforce effective task concurrency limits
Unify task concurrency around authoritative project settings and expose the effective admission ceiling.

- Resolve maxConcurrent and maxWorktrees through a shared core capacity model with consistent defaults.
- Apply the effective limit across scheduler, engine, runtime, CLI, API, and project-manager admission paths.
- Surface configured and binding concurrency values in dashboard controls, status views, diagnostics, and documentation.
- Add regression coverage for settings persistence, routing, scheduling, UI surfaces, and worktree-bound capacity.

Files changed:
 .../fn-9185-max-concurrent-effective-limit.md      |   7 +
 docs/architecture.md                               |   8 +-
 docs/cli-reference.md                              |   1 +
 docs/dashboard-guide.md                            |   4 +
 docs/settings-reference.md                         |   4 +-
 .../dashboard-concurrency-settings.test.ts         | 166 +++++++++++++++++++++
 packages/cli/src/commands/dashboard.ts             |  28 ++--
 packages/cli/src/commands/onboard.ts               |   4 +-
 packages/cli/src/project-resolver.ts               |  27 +++-
 .../concurrency-capacity-resolver.test.ts          |  46 ++++++
 .../src/__tests__/worktree-capacity-limit.test.ts  |  51 +++++--
 packages/core/src/index.gate.ts                    |   2 +-
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/workflows/workflow-capacity.ts   |  61 ++++++--
 packages/dashboard/app/App.tsx                     |   2 +
 .../app/__tests__/concurrency-ui-surfaces.test.tsx | 155 +++++++++++++++++++
 .../scheduling-effective-concurrency.test.tsx      |  48 ++++++
 packages/dashboard/app/api/projects/projects.ts    |  10 +-
 packages/dashboard/app/api/settings/settings.ts    |  14 +-
 packages/dashboard/app/components/Board.tsx        |   7 +-
 packages/dashboard/app/components/Column.tsx       |  13 +-
 .../dashboard/app/components/EngineControlMenu.tsx |  17 ++-
 .../command-center/CommandCenterControls.tsx       |  17 ++-
 .../components/command-center/areas/TeamArea.tsx   |  10 +-
 .../app/components/dashboard/MainContent.tsx       |   3 +
 .../dashboard/app/components/dashboard/types.ts    |   2 +
 .../settings/sections/SchedulingSection.tsx        |  12 +-
 packages/dashboard/app/hooks/useAppSettings.ts     |   9 +-
 packages/dashboard/app/hooks/useExecutorStats.ts   |  10 +-
 .../app/utils/__tests__/worktreeGrouping.test.ts   |  12 +-
 packages/dashboard/app/utils/worktreeGrouping.ts   |   8 +-
 packages/dashboard/src/routes.ts                   |   6 +-
 ...concurrency-authoritative-source-routes.test.ts |  90 +++++++++++
 .../register-config-mcp-pi-settings-routes.test.ts |  29 +++-
 .../register-config-mcp-pi-settings-routes.ts      |  17 ++-
 .../src/routes/register-project-routes.ts          |  14 +-
 .../concurrency-effective-limit-surfaces.test.ts   |  34 +++++
 .../src/__tests__/project-engine-manager.test.ts   |  19 +++
 .../__tests__/scheduler-workflow-cutover.test.ts   |   6 +-
 packages/engine/src/concurrency/concurrency.ts     |  23 ++-
 packages/engine/src/concurrency/hybrid-executor.ts |  35 ++++-
 .../engine/src/executor/create-spawn-agent-tool.ts |   8 +-
 packages/engine/src/project-engine-manager.ts      |  50 +++++--
 packages/engine/src/project-engine.ts              |  12 +-
 packages/engine/src/project/project-manager.ts     |  26 +++-
 packages/engine/src/runtimes/in-process-runtime.ts |  12 +-
 packages/engine/src/scheduler.ts                   |  31 ++--
 packages/engine/src/triage.ts                      |  15 +-
 48 files changed, 1028 insertions(+), 159 deletions(-)

Fusion-Task-Id: FN-9185
Fusion-Task-Lineage: 6294456c-d417-40a5-a5fa-2035c6b964a6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-21 10:57:44 -07:00
gsxdsm
74dacd0758 FN-9188: respect externally managed updates
Managed deployments can now suppress self-update offers while unsupported installs receive actionable guidance.

- Add an install-level environment policy for externally managed updates across CLI, server, and dashboard surfaces.
- Detect missing npm shell failures and replace raw stderr with deployment-aware remediation.
- Document managed-update behavior and add regression coverage for checks, installs, automation, and UI actions.

Files changed:
 .changeset/fn-9188-managed-updates.md              |  7 +++
 docs/architecture.md                               |  6 +--
 docs/cli-reference.md                              |  2 +-
 docs/dashboard-guide.md                            |  2 +-
 docs/settings-reference.md                         |  4 +-
 packages/cli/src/__tests__/update-cache.test.ts    | 11 ++++-
 .../update-command-externally-managed.test.ts      | 39 +++++++++++++++
 packages/cli/src/commands/update.ts                | 42 +++++++++++-----
 packages/cli/src/update-cache.ts                   |  3 +-
 .../core/src/__tests__/update-management.test.ts   | 15 ++++++
 packages/core/src/config/update-management.ts      | 21 ++++++++
 packages/core/src/index.gate.ts                    |  5 ++
 packages/core/src/index.ts                         |  5 ++
 packages/dashboard/app/api/client/health.ts        |  3 ++
 .../dashboard/app/components/SettingsModal.tsx     |  4 ++
 .../__tests__/SettingsModal.general.test.tsx       | 20 ++++++++
 .../__tests__/UpdateAvailableBanner.test.tsx       | 26 ++++++++++
 .../components/__tests__/settings-mobile.test.tsx  | 24 +++++++++-
 .../__tests__/SystemControlsArea.test.tsx          | 20 ++++++++
 .../command-center/areas/SystemControlsArea.tsx    |  6 +++
 .../app/hooks/__tests__/useUpdateCheck.test.ts     |  1 +
 packages/dashboard/app/hooks/useUpdateCheck.ts     |  3 +-
 .../dashboard/src/__tests__/auto-update.test.ts    | 10 ++++
 .../dashboard/src/__tests__/update-check.test.ts   | 56 ++++++++++++++++++++++
 packages/dashboard/src/auto-update.ts              |  9 +++-
 .../__tests__/register-update-check-routes.test.ts | 24 +++++++++-
 .../src/routes/register-update-check-routes.ts     | 47 +++++++++++++++++-
 packages/dashboard/src/update-check.ts             | 50 ++++++++++++++++---
 28 files changed, 433 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-9188

Fusion-Task-Lineage: 60b114b9-8bf7-434f-9d26-0c954aea45ba

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-21 10:18:45 -07:00
Fusion Agent
b2125aeb2d FN-104: preserve update restart state
Preserve a pending update across Settings reopen while coordinating installation and restart behavior.

- Add pending-update install state and coordinator flows across dashboard and system controls.
- Expose health/settings update APIs and retain restart state through modal reopen.
- Cover desktop/mobile UX, route behavior, coordinator logic, and document the update flow.

Files changed:
 .changeset/fn-104-pending-update-restart.md        |   7 ++
 docs/architecture.md                               |   3 +
 docs/assets/fn-104-pending-update-desktop.png      | Bin 0 -> 10926 bytes
 docs/assets/fn-104-pending-update-mobile.png       | Bin 0 -> 6101 bytes
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   2 +-
 packages/core/src/task-store/task-creation.ts      |   1 -
 packages/dashboard/app/api/client/health.ts        |  12 ++++
 packages/dashboard/app/api/settings/settings.ts    |   3 +
 .../dashboard/app/components/SettingsModal.tsx     |  46 ++++++++-----
 .../app/components/UpdateAvailableBanner.tsx       |  20 ++++--
 .../__tests__/SettingsModal.general.test.tsx       |   6 ++
 .../__tests__/SettingsModal.models-auth.test.tsx   |  72 +++++++++++++++++++
 .../__tests__/UpdateAvailableBanner.test.tsx       |   2 +
 .../components/__tests__/settings-mobile.test.tsx  |   3 +
 .../command-center/areas/SystemControlsArea.tsx    |  18 +++--
 .../__tests__/usePendingUpdateInstall.test.ts      |  44 ++++++++++++
 .../dashboard/app/hooks/usePendingUpdateInstall.ts |  76 +++++++++++++++++++++
 packages/dashboard/app/hooks/useUpdateCheck.ts     |   8 +++
 .../dashboard/src/__tests__/auto-update.test.ts    |  18 +++++
 .../__tests__/update-install-coordinator.test.ts   |  36 ++++++++++
 packages/dashboard/src/auto-update.ts              |  14 +++-
 .../__tests__/register-update-check-routes.test.ts |  14 ++++
 .../src/routes/register-update-check-routes.ts     |  31 ++++++++-
 .../dashboard/src/update-install-coordinator.ts    |  23 +++++++
 25 files changed, 425 insertions(+), 36 deletions(-)

Fusion-Task-Id: FN-104
Fusion-Task-Lineage: c754b258-654d-4efe-9b12-1addc7ed190b
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 14:41:37 +00:00
Fusion Agent
c21f628174 FN-101: separate update installation and restart automation
Separate automatic update installation from restart recovery so dashboard reloads only after the replacement host is healthy.

- Add scoped update automation settings and localized descriptions.
- Coordinate update installation, restart recovery, timeout handling, and manual refresh guidance.
- Update settings UI, banner behavior, API routes, documentation, screenshots, and regression coverage.

Files changed:
 .changeset/fn-101-update-restart-lifecycle.md      |   7 ++
 docs/assets/fn-101-update-automation-desktop.png   | Bin 0 -> 17744 bytes
 docs/assets/fn-101-update-automation-mobile.png    | Bin 0 -> 11367 bytes
 docs/dashboard-guide.md                            |   6 +-
 docs/settings-reference.md                         |  12 ++-
 packages/core/src/config/settings-schema.ts        |   9 ++
 packages/core/src/config/update-automation.ts      |  17 +++
 packages/core/src/index.gate.ts                    |   1 +
 packages/core/src/index.ts                         |   1 +
 packages/core/src/types/settings/settings-scope.ts |   8 ++
 packages/dashboard/app/api/settings/settings.ts    |   4 +
 .../dashboard/app/components/SettingsModal.tsx     |  38 +++++--
 .../app/components/UpdateAvailableBanner.tsx       |  33 +++++-
 .../__tests__/SettingsModal.general.test.tsx       |  39 +++++++
 .../__tests__/UpdateAvailableBanner.test.tsx       |  59 ++++++++++-
 .../app/components/settings/save-split.ts          |   5 +-
 .../sections/GlobalGeneralSection.search.ts        |  22 ++--
 .../settings/sections/GlobalGeneralSection.tsx     |  29 +++--
 .../settings-default-descriptions.test.tsx         |   2 +
 .../__tests__/useSystemRestartRecovery.test.ts     | 118 +++++++++++++++++++++
 .../app/hooks/useSystemRestartRecovery.ts          | 118 +++++++++++++++++++++
 packages/dashboard/src/auto-update.ts              |  22 +++-
 .../src/routes/register-update-check-routes.ts     |  24 +++-
 .../dashboard/src/update-install-coordinator.ts    |  37 +++++++
 packages/i18n/locales/en/app.json                  |   4 +
 packages/i18n/locales/es/app.json                  |   4 +
 packages/i18n/locales/fr/app.json                  |   4 +
 packages/i18n/locales/ko/app.json                  |   4 +
 packages/i18n/locales/pt-BR/app.json               |   8 ++
 packages/i18n/locales/zh-CN/app.json               |   4 +
 packages/i18n/locales/zh-TW/app.json               |   4 +
 packages/i18n/src/resources.d.ts                   |   4 +
 32 files changed, 602 insertions(+), 45 deletions(-)

Fusion-Task-Id: FN-101

Fusion-Task-Lineage: 2d00e84e-a01d-4d19-bb02-aa87a818165b

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:36:21 +00:00
Fusion Agent
bbca7a1ffc FN-094: add mono- and multi-repository lifecycle parity
Extend workspace lifecycle behavior so mono-repository and multi-repository tasks share the same durable scope, workflow, review, and merge semantics.

- Add repository-scope persistence, migrations, serialization, and task mutation support.
- Align dashboard task creation, detail, and workspace worktree views with repository-aware lifecycle state.
- Extend executor, reviewer, merger, triage, and self-healing paths with parity coverage and tests.
- Document the lifecycle contract and publish the operator-facing changeset.

Files changed:
 .changeset/fn-094-multi-repository-lifecycle.md    |   7 +
 docs/agents.md                                     |   8 +
 docs/architecture.md                               |   6 +
 docs/dashboard-guide.md                            |   4 +
 docs/multi-project.md                              |   6 +
 docs/settings-reference.md                         |   2 +-
 docs/testing.md                                    |  12 ++
 docs/workspaces.md                                 |   6 +
 ...workspace-worktrees-concurrent-merge.pg.test.ts |  19 +++
 packages/core/src/index.ts                         |   2 +-
 .../core/src/postgres/migrations/0000_initial.sql  |   1 +
 .../0064_fn_094_task_repository_scope.sql          |   2 +
 packages/core/src/postgres/schema-applier.ts       |  13 +-
 packages/core/src/postgres/schema/project.ts       |   2 +
 packages/core/src/store.ts                         |  21 ++-
 .../core/src/task-store/branch-and-pr-entities.ts  |   2 +-
 packages/core/src/task-store/persistence.ts        |   4 +-
 packages/core/src/task-store/serialization.ts      |   2 +
 packages/core/src/task-store/task-creation.ts      |  31 ++++
 packages/core/src/task-store/task-mutation-ops.ts  | 131 +++++++++++++++-
 packages/core/src/task-store/task-row-mappers.ts   |   2 +-
 packages/core/src/task-store/task-update.ts        |  55 +++++--
 packages/core/src/tasks/repository-scope.ts        |  29 ++++
 packages/core/src/types.ts                         |   4 +
 packages/core/src/types/task/task-core.ts          |  35 ++++-
 packages/core/src/types/workflow/workflow-steps.ts |  21 +++
 packages/dashboard/app/api/tasks/tasks.ts          |  14 ++
 packages/dashboard/app/components/NewTaskModal.tsx |  16 +-
 .../dashboard/app/components/TaskDetailModal.css   |  27 ++++
 .../dashboard/app/components/TaskDetailModal.tsx   |  15 +-
 .../app/components/WorkspaceWorktreesSummary.tsx   |  68 ++++++++-
 .../app/components/__tests__/NewTaskModal.test.tsx |   1 +
 .../__tests__/WorkspaceWorktreesSummary.test.tsx   |  27 +++-
 .../src/routes/register-task-workflow-routes.ts    |  48 ++++++
 .../__tests__/executor-workspace-taskdone.test.ts  |  20 +++
 .../src/__tests__/reviewer-workspace.test.ts       | 170 ++++++++++++++++++++-
 .../src/__tests__/self-healing-workspace.test.ts   |   4 +
 .../workflow-graph-optional-group.test.ts          |  32 ++++
 .../workflow-graph-optional-step-fix.test.ts       |  58 +++++++
 .../engine/src/__tests__/workspace-e2e.test.ts     |  91 ++++++++++-
 .../__tests__/workspace-lifecycle-parity.test.ts   |  61 ++++++++
 .../src/__tests__/workspace-merger-lease.test.ts   |  25 +++
 .../__tests__/workspace-merger-scope-gates.test.ts |  58 +++++++
 .../engine/src/__tests__/workspace-merger.test.ts  |  59 ++++++-
 packages/engine/src/agent-tools.ts                 |  92 ++++++++++-
 packages/engine/src/execution/reviewer.ts          |  10 +-
 .../create-authoritative-workflow-seams.ts         |  95 ++++++++++--
 .../engine/src/executor/execute-workflow-graph.ts  |  37 ++++-
 .../request-pre-merge-optional-step-fix.ts         |  70 +++++++++
 .../engine/src/executor/run-graph-custom-node.ts   | 124 ++++++++++-----
 .../engine/src/executor/workflow-step-verdict.ts   |   6 +-
 .../src/executor/workspace-review-per-repo.ts      | 118 +++++++++++++-
 .../src/executor/worktree-task-done-scope-leak.ts  | 109 ++++++++++++-
 packages/engine/src/merge/merger-ai.ts             |  88 ++++++++++-
 packages/engine/src/self-healing.ts                |  19 ++-
 packages/engine/src/triage.ts                      |   9 ++
 .../src/workflows/workflow-graph-executor.ts       |  73 +++++++--
 .../engine/src/workflows/workflow-node-handlers.ts |  12 +-
 58 files changed, 1962 insertions(+), 121 deletions(-)

Fusion-Task-Id: FN-094

Fusion-Task-Lineage: 483f958f-cc67-474e-9383-26856c329543

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:35:58 +00:00
Fusion Agent
3066123516 FN-100: prevent false interrupted-response save errors on new chats
Make starting or clearing an idle chat a successful cancellation no-op while preserving durable cancellation barriers for active responses.

- Return success for idle generation cancellation instead of showing a false save warning.
- Await cancellation and reconciliation from the chat hook before queue/session transitions.
- Update chat API, route handling, documentation, regression tests, and the published fix changeset.

Files changed:
 .changeset/fn-100-chat-new-cancel.md               |  7 +++
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/api/chat/chat.ts            |  5 +-
 packages/dashboard/app/components/ChatView.tsx     | 25 +++++----
 .../__tests__/ChatView.streaming-thread.test.tsx   | 59 ++++++++++++++++++++++
 .../dashboard/app/hooks/__tests__/useChat.test.ts  | 37 ++++++++++++++
 packages/dashboard/app/hooks/useChat.ts            | 14 ++---
 .../dashboard/src/__tests__/chat-manager.test.ts   | 11 +++-
 .../src/__tests__/routes-chat-cancellation.test.ts |  7 +--
 packages/dashboard/src/chat.ts                     |  8 ++-
 .../dashboard/src/routes/register-chat-routes.ts   |  6 +--
 11 files changed, 153 insertions(+), 28 deletions(-)

Fusion-Task-Id: FN-100

Fusion-Task-Lineage: caa5fe20-4abd-4884-ba1d-f9473c12b52f

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:34:43 +00:00
Fusion Agent
b5e366da62 FN-099: match task Chat model menu width to Direct Chat
Match the task Chat model selector to Direct Chat sizing so provider and model names remain readable across desktop and mobile.

- Apply the shared readable, viewport-clamped dropdown width to Task Chat.
- Add regression coverage and desktop/mobile screenshots.
- Document the behavior and publish a patch changeset.

Files changed:
 .changeset/fn-099-task-chat-model-menu-width.md    |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 .../app/components/TaskPlannerChatTab.tsx          |   5 ++
 .../ChatThinkingLevelControl.portal.test.tsx       |   3 +-
 .../__tests__/TaskPlannerChatTab.test.tsx           |  92 ++++++++++++++++++++-
 .../fn-099-task-chat-model-menu-desktop.png         | Bin 0 -> 9534 bytes
 screenshots/fn-099-task-chat-model-menu-mobile.png  | Bin 0 -> 7240 bytes
 7 files changed, 105 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-099

Fusion-Task-Lineage: fec67d58-9ca9-4878-8a0a-ac83984a3766

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:34:43 +00:00
Fusion Agent
3903d3c383 FN-096: add New Chat to active conversation headers
Expose the shared New Chat action wherever an active conversation is open.

- Keep New Chat available in list and selected-detail headers across Chat hosts.
- Reset room launches to a persisted Direct session and preserve existing navigation behavior.
- Update responsive styling, documentation, regression coverage, screenshots, and release metadata.

Files changed:
 .changeset/fn-096-chat-header-new-chat.md          |   7 +++
 docs/dashboard-guide.md                            |   6 +--
 packages/dashboard/app/components/ChatView.css     |   3 ++
 packages/dashboard/app/components/ChatView.tsx     |  23 +++++----
 .../components/__tests__/ChatView.mobile.test.tsx  |  15 +++++-
 .../__tests__/ChatView.new-chat-default.test.tsx   |  53 +++++++++++++++++++--
 .../__tests__/ChatView.sessions-rooms.test.tsx     |  36 +++++++++++---
 screenshots/fn-096-chat-header-new-desktop.png      | Bin 0 -> 7476 bytes
 screenshots/fn-096-chat-header-new-mobile.png       | Bin 0 -> 4881 bytes
 9 files changed, 120 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-096

Fusion-Task-Lineage: b63ddd12-87bb-470e-9cc9-a80817270257

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:34:43 +00:00
Fusion Agent
89427dab11 FN-076: disable chat textarea mouse resizing
Disable mouse-driven composer resizing while preserving automatic five-line sizing across chat surfaces.

- Remove pointer-based manual resize handling and related CSS affordances.
- Apply consistent autosizing and shrink-to-minimum behavior to all chat composers.
- Update regression coverage, documentation, and the published package changeset.

Files changed:
 .changeset/fn-076-removal.md                       |   7 ++
 docs/dashboard-guide.md                            |   6 +-
 .../app/components/ChatQuestionResponse.css        |   4 +-
 .../app/components/ChatQuestionResponse.tsx        |  23 ++--
 packages/dashboard/app/components/ChatView.css     |   8 +-
 packages/dashboard/app/components/ChatView.tsx     |  18 +--
 .../dashboard/app/components/ComposeChatPanel.css  |   4 +-
 .../dashboard/app/components/ComposeChatPanel.tsx  |  20 +++-
 .../app/components/StandardChatSurface.tsx         |  20 +++-
 packages/dashboard/app/components/TaskChatTab.css  |   4 +-
 packages/dashboard/app/components/TaskChatTab.tsx  |  12 +-
 .../app/components/TaskPlannerChatTab.css          |   4 +-
 .../app/components/TaskPlannerChatTab.tsx          |   8 +-
 .../__tests__/ChatQuestionResponse.test.tsx        |  38 ++++++
 .../__tests__/ChatView.autosize.test.tsx           |  26 ++--
 .../ChatView.chat-input-autosize.test.tsx          |  61 ++--------
 .../__tests__/ChatView.message-edit.test.tsx       |  10 ++
 .../components/__tests__/ComposeChatPanel.test.tsx |  25 ++++
 .../app/components/__tests__/TaskChatTab.test.tsx  |  13 +-
 .../__tests__/TaskPlannerChatTab.test.tsx          |  13 +-
 packages/dashboard/app/utils/chatInputAutosize.ts  | 132 ++-------------------
 21 files changed, 195 insertions(+), 261 deletions(-)

Fusion-Task-Id: FN-076
Fusion-Task-Lineage: d4580427-640b-41c1-b5d1-837da43c7438
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:53 +00:00
Fusion Agent
eb3eeb887a FN-074: remove task splitting and parent deletion
Remove complex-task splitting and parent-deletion behavior across core, dashboard, and engine.

- Remove subtask splitting, breakdown UI, and related API routes and lifecycle handling.
- Add the migration and prompt/documentation updates that enforce the simplified task model.
- Update affected tests and integrations for the removed behavior.

Files changed:
 .changeset/fn-074-removal.md                       |    7 +
 docs/dashboard-guide.md                            |   17 +-
 docs/gitlab-parity-inventory.md                    |    7 +-
 docs/mcp.md                                        |    6 +-
 docs/settings-reference.md                         |   16 +-
 docs/task-management.md                            |   31 +-
 docs/workflow-steps.md                             |   10 +-
 .../cli/skill/fusion/references/task-structure.md  |    2 +-
 .../cli/skill/fusion/workflows/specifications.md   |    4 +-
 packages/core/src/__tests__/agent-prompts.test.ts  |   19 +-
 .../builtin-workflow-settings-triage.test.ts       |   32 +-
 .../src/__tests__/postgres/schema-applier.test.ts  |    2 +-
 .../core/src/__tests__/prompt-overrides.test.ts    |    3 +-
 ...-deleted-observed-dispatch-side-effects.test.ts |    3 -
 .../task-deleted-outbox-consumer-backoff.test.ts   |    1 -
 packages/core/src/agents/agent-prompts.ts          |   56 +-
 packages/core/src/index.ts                         |    2 +-
 .../0062_remove_task_subtask_splitting.sql         |    2 +
 packages/core/src/postgres/schema-applier.ts       |   14 +-
 packages/core/src/postgres/schema/project.ts       |    1 -
 packages/core/src/store.ts                         |   12 +-
 packages/core/src/task-delete-attribution.ts       |   20 +-
 packages/core/src/task-delete-notice.ts            |    7 +-
 .../__tests__/lifecycle-outbox-writer.test.ts      |    4 +-
 .../core/src/task-store/archive-lifecycle-2.ts     |   13 +-
 packages/core/src/task-store/archive-lifecycle.ts  |    6 +-
 packages/core/src/task-store/lifecycle-outbox.ts   |    2 -
 packages/core/src/task-store/persistence.ts        |    2 -
 packages/core/src/task-store/serialization.ts      |    2 -
 packages/core/src/task-store/task-creation.ts      |    2 -
 .../src/task-store/task-deleted-outbox-consumer.ts |    4 -
 packages/core/src/task-store/task-mutation-ops.ts  |    2 +-
 packages/core/src/task-store/task-row-mappers.ts   |    2 +-
 packages/core/src/tasks/prompt-overrides.ts        |   35 -
 packages/core/src/types.ts                         |   12 -
 packages/core/src/types/mesh/archive-planning.ts   |    1 -
 packages/core/src/types/task/task-core.ts          |    3 -
 .../src/workflows/builtin-workflow-settings.ts     |   86 --
 packages/dashboard/app/App.tsx                     |   15 -
 .../mission-planning-modals-mobile.test.ts         |   15 -
 packages/dashboard/app/api/legacy.ts               |   18 +-
 packages/dashboard/app/api/planning/ai-text.ts     |  171 +---
 packages/dashboard/app/api/planning/planning.ts    |   46 -
 packages/dashboard/app/api/tasks/tasks.ts          |    4 +-
 packages/dashboard/app/components/AppModals.tsx    |   39 +-
 packages/dashboard/app/components/Board.tsx        |   10 +-
 packages/dashboard/app/components/Column.tsx       |    9 +-
 .../dashboard/app/components/InlineCreateCard.tsx  |   63 +-
 packages/dashboard/app/components/Lane.tsx         |    3 +-
 packages/dashboard/app/components/ListView.tsx     |   10 +-
 packages/dashboard/app/components/NewTaskModal.tsx |    8 +-
 .../dashboard/app/components/PlanningModeModal.css |  128 ---
 .../dashboard/app/components/PlanningModeModal.tsx |  566 +----------
 .../dashboard/app/components/QuickEntryBox.tsx     |   43 +-
 .../dashboard/app/components/SettingsModal.tsx     |    2 -
 .../app/components/SubtaskBreakdownModal.tsx       |  932 -----------------
 packages/dashboard/app/components/TaskCard.tsx     |    1 -
 packages/dashboard/app/components/TaskForm.tsx     |   23 +-
 .../__tests__/AgentPromptsManager.test.tsx         |    1 -
 .../app/components/__tests__/AppModals.test.tsx    |   92 +-
 .../app/components/__tests__/Board.test.tsx        |   69 +-
 .../components/__tests__/InlineCreateCard.test.tsx |  170 ----
 .../app/components/__tests__/ListView.test.tsx     |   38 -
 .../app/components/__tests__/NewTaskModal.test.tsx |   48 -
 .../components/__tests__/QuickEntryBox.test.tsx    |  293 +-----
 .../__tests__/SubtaskBreakdownModal.test.tsx       |  933 -----------------
 ...skDetail.mobile-transition.board-panel.test.tsx |    1 -
 .../__tests__/TaskDetail.swipe-back.test.tsx       |    1 -
 .../app/components/__tests__/TaskForm.test.tsx     |   67 --
 .../__tests__/WorkflowSettingsPanel.test.tsx       |   51 -
 .../app/components/__tests__/board-mobile.test.tsx |   20 -
 .../composer-settings-read-isolation.test.tsx      |   30 -
 .../components/__tests__/migratedModalFixtures.tsx |    2 -
 .../app/components/dashboard/MainContent.tsx       |    5 -
 .../dashboard/__tests__/DashboardBanners.test.tsx  |    1 -
 .../__tests__/MainContent.graph-popout.test.tsx    |    1 -
 .../dashboard/app/components/dashboard/types.ts    |    2 -
 .../app/components/workflow-setting-display.ts     |   10 -
 ...ckgroundSessions.resume-instrumentation.test.ts |    1 -
 .../hooks/__tests__/useBackgroundSessions.test.ts  |   25 +-
 .../app/hooks/__tests__/useModalManager.test.ts    |    3 -
 packages/dashboard/app/hooks/modalPersistence.ts   |   14 -
 .../dashboard/app/hooks/useBackgroundSessions.ts   |    9 +-
 packages/dashboard/app/hooks/useModalManager.ts    |   58 +-
 packages/dashboard/app/hooks/useProjectActions.ts  |    2 +-
 packages/dashboard/app/hooks/useTaskHandlers.ts    |    9 -
 packages/dashboard/app/utils/builtinPrompts.ts     |    7 -
 packages/dashboard/app/utils/projectStorage.ts     |    1 -
 .../src/__tests__/ai-session-diagnostics.test.ts   |    5 +-
 .../src/__tests__/github-tracking-state.test.ts    |   97 --
 .../src/__tests__/gitlab-delete-close.test.ts      |    6 +-
 .../gitlab-parity-inventory-documentation.test.ts  |    1 -
 .../src/__tests__/gitlab-split-close.test.ts       |  125 ---
 .../planning-flow-diagnostics-guardrail.test.ts    |    1 -
 .../src/__tests__/process-lifecycle.test.ts        |    1 -
 .../dashboard/src/__tests__/routes-auth.test.ts    |    2 -
 .../src/__tests__/routes-automation.test.ts        |    2 -
 .../dashboard/src/__tests__/routes-git.test.ts     |    2 -
 .../dashboard/src/__tests__/routes-github.test.ts  |   92 --
 .../src/__tests__/routes-planning-tracking.test.ts |  130 ---
 .../src/__tests__/routes-planning.test.ts          | 1062 +-------------------
 .../dashboard/src/__tests__/routes-system.test.ts  |    2 -
 .../dashboard/src/__tests__/routes-tasks.test.ts   |  902 -----------------
 .../shared-branch-group-entry-points.test.ts       |   93 --
 packages/dashboard/src/ai-session-diagnostics.ts   |    3 +-
 packages/dashboard/src/ai-session-store.ts         |    6 +-
 packages/dashboard/src/ai-session-timeout.ts       |    3 +-
 packages/dashboard/src/github-tracking-state.ts    |   43 +-
 packages/dashboard/src/gitlab-delete-close.ts      |    7 +-
 packages/dashboard/src/gitlab-lifecycle.ts         |    4 +-
 packages/dashboard/src/gitlab-split-close.ts       |  103 --
 packages/dashboard/src/gitlab-tracking-state.ts    |    2 +-
 packages/dashboard/src/index.ts                    |    1 -
 packages/dashboard/src/planning.ts                 |  171 ----
 packages/dashboard/src/routes.ts                   |    6 -
 ...er-planning-subtask-routes.parent-close.test.ts |  120 ---
 .../dashboard/src/routes/register-git-github.ts    |    6 -
 .../src/routes/register-planning-subtask-routes.ts |  773 +-------------
 .../src/routes/register-task-workflow-routes.ts    |    6 +-
 packages/dashboard/src/server.ts                   |    8 -
 packages/dashboard/src/subtask-breakdown.ts        |  833 ---------------
 packages/dashboard/src/triage-trait.ts             |   93 +-
 .../src/__tests__/agent-task-read-tools.test.ts    |    1 -
 .../triage-duplicate-search-regression.test.ts     |    3 -
 .../triage-split-into-subtasks-delete.test.ts      |  222 ----
 packages/engine/src/__tests__/triage.test.ts       |  519 +---------
 packages/engine/src/triage.ts                      |  239 +----
 127 files changed, 214 insertions(+), 10001 deletions(-)

Fusion-Task-Id: FN-074

Fusion-Task-Lineage: 23207799-4ec4-4ec7-bcd7-83cba4d98f53

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:53 +00:00
Fusion Agent
0b71e9f55e FN-070: streamline mobile navigation and task creation
Refine mobile project navigation so task creation and view switching remain accessible without redundant header controls.

- Add a Header New Task action backed by the existing full task form.
- Move mobile Board/List destinations to the bottom navigation and preserve Planning quick entry.
- Update responsive documentation, changeset metadata, and regression coverage.

Files changed:
 .changeset/fn-070-mobile-navigation.md             |  7 ++++
 docs/dashboard-guide.md                            |  2 +-
 packages/dashboard/app/App.tsx                     |  1 +
 packages/dashboard/app/__tests__/mobile-feature-access-regression.test.tsx      | 25 +++++++------
 packages/dashboard/app/components/Board.tsx        |  9 ++++-
 packages/dashboard/app/components/Header.tsx       | 43 ++++++++++-------------
 packages/dashboard/app/components/ListView.tsx     |  2 +-
 packages/dashboard/app/components/MobileNavBar.tsx | 20 ++++++++--
 .../app/components/__tests__/App.test.tsx          | 14 ++++---
 .../app/components/__tests__/Board.test.tsx        | 17 +++++++++
 .../app/components/__tests__/Header.test.tsx       | 16 +++++++-
 .../app/components/__tests__/ListView.test.tsx     |  5 ++-
 .../app/components/__tests__/MobileNavBar.test.tsx | 24 +++++++-----
 13 files changed, 123 insertions(+), 62 deletions(-)

Fusion-Task-Id: FN-070
Fusion-Task-Lineage: 17bdd4fe-a2ef-481e-9083-6fb1c2d6425f
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:52 +00:00
Fusion Agent
0fce621729 FN-071: delete tasks when descriptions are cleared
Clear a saved Task Detail description through the existing confirmed deletion lifecycle.

- Detect blanking a populated description during autosave and explicit save.
- Reuse destructive-action confirmation preferences and guard against stale drafts or duplicate deletion requests.
- Add regression coverage, operator documentation, and a patch changeset.

Files changed:
 .changeset/fn-071-clear-description-delete.md      |   7 ++
 docs/dashboard-guide.md                            |   1 +
 .../dashboard/app/components/TaskDetailModal.tsx   |  65 +++++++++--
 ...lModal.inline-editing-and-integrations.test.tsx | 126 +++++++++++++++++++++
 4 files changed, 189 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-071

Fusion-Task-Lineage: bec428c4-8c08-47c5-b7c5-09692e101a26

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:52 +00:00
Fusion Agent
b8a70a544d FN-068: repair floating Chat HUD and conversation navigation
Repair floating Chat HUD controls and keep conversation navigation consistent across Chat hosts.\n\n- Remove redundant Quick Chat minimize behavior and retain clear Close/Open in Chat actions.\n- Move the Back action beside saved conversation titles across direct and room threads.\n- Preserve model metadata as secondary identity and document the updated responsive navigation.\n\nFiles changed:\n docs/dashboard-guide.md                            | 13 +++--
 packages/dashboard/app/App.tsx                     |  7 +--
 packages/dashboard/app/components/ChatView.css     | 22 ++++---
 packages/dashboard/app/components/ChatView.tsx     | 60 +++++++++----------
 .../__tests__/ChatView.core-interactions.test.tsx  | 67 ++++++++++++++++++++--
 .../components/__tests__/ChatView.mobile.test.tsx  | 11 +++-
 .../__tests__/ChatView.sessions-rooms.test.tsx     | 17 +++---
 .../__tests__/overflowViewRegistry.chat.test.tsx   |  4 +-
 8 files changed, 133 insertions(+), 68 deletions(-)

Fusion-Task-Id: FN-068

Fusion-Task-Lineage: 4cb32c6b-77c6-4f7f-9d75-741692a149aa

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:52 +00:00
Fusion Agent
d9a4d36c1a FN-067: restore desktop Board drag navigation
Restore safe Board panning for desktop and tablet without changing mobile touch behavior.

- Restore primary-mouse dragging from safe noninteractive Board surfaces, including empty-column text.
- Keep cards, controls, editable content, native draggables, and mobile scrolling native.
- Preserve no edge auto-scroll behavior and document the updated navigation contract.

Files changed:
 .changeset/fn-067-board-safe-surface-pan.md        |   7 +
 docs/dashboard-guide.md                            |   4 +-
 packages/dashboard/app/components/Board.css        |   6 +-
 packages/dashboard/app/components/Board.tsx        |  12 +-
 .../app/components/__tests__/Board.test.tsx        |  73 +++++----
 .../app/components/__tests__/board-mobile.test.tsx |   4 +-
 .../app/hooks/__tests__/useBoardMousePan.test.tsx  | 163 +++++++++++----------
 packages/dashboard/app/hooks/useBoardMousePan.ts   |  37 +++--
 8 files changed, 172 insertions(+), 134 deletions(-)

Fusion-Task-Id: FN-067

Fusion-Task-Lineage: 410d3401-1d41-40f1-b025-26248ecd37ff

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:52 +00:00
Fusion Agent
29010e0b0a FN-064: preserve bounded Board mouse panning
Keep Board dragging within safe viewport bounds while preserving usable mobile interactions.

- Add a reusable bounded mouse-pan hook and wire it into the Board.
- Preserve Board transforms and cursor behavior through responsive CSS updates.
- Expand desktop and mobile regression coverage and document the interaction.
- Add the published-package changeset for the Board fix.

Files changed:
 .changeset/fn-064-board-safe-mouse-pan.md          |   7 +
 docs/dashboard-guide.md                            |   4 +-
 packages/dashboard/app/components/Board.css        |  10 ++
 packages/dashboard/app/components/Board.tsx        |  17 ++-
 .../app/components/__tests__/Board.test.tsx        |  40 ++++-
 .../app/components/__tests__/board-mobile.test.tsx |  13 +-
 .../app/hooks/__tests__/useBoardMousePan.test.tsx   | 163 +++++++++++++++++++++
 packages/dashboard/app/hooks/useBoardMousePan.ts   | 141 ++++++++++++++++++
 8 files changed, 374 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-064

Fusion-Task-Lineage: 22e9dfeb-b565-414b-89cf-eb10725490a8

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:39 +00:00
Fusion Agent
07125886b7 FN-061: refine medieval theme typography
Refine the medieval dashboard theme so its typography and responsive presentation are more balanced.

- Reduce oversized theme typography and tune responsive layout styling.
- Load Pixelify Sans and update theme tokens, documentation, and changesets.
- Expand theme and hook coverage with desktop and mobile visual references.

Files changed:
 .changeset/fn-058-medieval-theme.md                |   2 +-
 .changeset/fn-061-medieval-theme-refinement.md     |   7 +
 docs/dashboard-guide.md                            |   4 +-
 docs/settings-reference.md                         |   2 +-
 .../dashboard/app/__tests__/medieval-theme.test.ts | 172 +++++++++++++++++++--
 .../dashboard/app/hooks/__tests__/useTheme.test.ts |  14 ++
 packages/dashboard/app/main.tsx                    |   2 +-
 packages/dashboard/app/public/theme-data.css       |  22 ++-
 packages/dashboard/app/styles.css                  |  46 +++++-
 packages/dashboard/package.json                    |   2 +-
 pnpm-lock.yaml                                     |   8 +-
 screenshots/fn-061-medieval-desktop.png            | Bin 0 -> 753177 bytes
 screenshots/fn-061-medieval-mobile.png             | Bin 0 -> 208805 bytes
 13 files changed, 244 insertions(+), 37 deletions(-)

Fusion-Task-Id: FN-061

Fusion-Task-Lineage: fe95f1d1-7db4-4098-965f-f4c0aa8860e0

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
4d74560ae0 FN-054: add list-first chat conversation navigation
Move chat conversations to list-first navigation with explicit detail entry and back navigation.

- Replace room-switcher dropdown contracts with list-to-detail coverage.
- Update room composer, thread, gesture, and scroll tests for explicit detail selection.
- Remove obsolete room-switcher UI and refresh dashboard documentation and release metadata.

Files changed:
 .changeset/fn-054-removal.md                       |    7 +
 docs/dashboard-guide.md                            |   22 +-
 packages/dashboard/app/App.tsx                     |    2 +-
 packages/dashboard/app/components/ChatView.css     |  365 +--
 packages/dashboard/app/components/ChatView.tsx     |  446 +---
 .../__tests__/ChatView.context-window.test.tsx     |   19 +-
 .../__tests__/ChatView.core-contracts.test.tsx     |  158 +-
 .../__tests__/ChatView.mobile-render.test.tsx      |  251 +-
 .../components/__tests__/ChatView.mobile.test.tsx  | 2567 +-------------------
 .../__tests__/ChatView.new-chat-default.test.tsx   |   20 +-
 .../components/__tests__/ChatView.rooms.test.tsx   |  346 +--
 .../__tests__/ChatView.sessions-rooms.test.tsx     |  163 +-
 .../__tests__/ChatView.swipe-back.test.tsx         |   27 +-
 .../components/__tests__/ChatView.test-harness.tsx |    5 +-
 .../app/components/overflowViewRegistry.tsx        |    2 +-
 packages/dashboard/vitest.config.ts                |   12 +-
 16 files changed, 419 insertions(+), 3993 deletions(-)

Fusion-Task-Id: FN-054

Fusion-Task-Lineage: 6b139504-ecf3-4b29-ab72-34a4d593676c

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
2c16a7e9ba FN-058: add Medieval appearance theme
Add a bundled pixel-font Medieval theme with parchment and wood visual styling across dashboard and desktop surfaces.

- Add Medieval theme tokens, swatches, first-paint persistence, and selector integration.\n- Bundle Press Start 2P typography with responsive modal styling and documentation.\n- Add theme behavior tests, screenshots, and a published-package changeset.\n\nFiles changed:\n .changeset/fn-058-medieval-theme.md                |   7 ++\n docs/dashboard-guide.md                            |   5 +-\n docs/settings-reference.md                         |   2 +-\n packages/core/src/types/ui/execution-and-ui.ts     |   5 ++\n .../dashboard/app/__tests__/medieval-theme.test.ts |  71 +++++++++++++++++\n .../dashboard/app/components/ThemeSelector.css     |  15 +++\n .../components/__tests__/ThemeDropdown.test.tsx    |   2 +-\n .../components/__tests__/ThemeSelector.test.tsx    |  14 ++--\n .../__tests__/CommandCenterControls.test.tsx       |  10 ++-\n packages/dashboard/app/components/themeOptions.ts  |   1 +\n .../dashboard/app/hooks/__tests__/useTheme.test.ts |  28 +++++++\n packages/dashboard/app/index.html                  |   4 +-\n packages/dashboard/app/main.tsx                    |   1 +\n packages/dashboard/app/public/theme-data.css       |  86 +++++++++++++++++++++\n packages/dashboard/app/styles.css                  |  24 ++++++\n packages/dashboard/package.json                    |   1 +\n packages/desktop/src/renderer/index.html           |   3 +-\n pnpm-lock.yaml                                     |   8 ++\n screenshots/fn-058-medieval-theme-desktop.png      | Bin 0 -> 19898 bytes\n screenshots/fn-058-medieval-theme-mobile.png       | Bin 0 -> 14996 bytes\n 20 files changed, 269 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-058

Fusion-Task-Lineage: b7ce1b83-59ba-4516-8073-c1e8c46bb181

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
b533220716 FN-052: remove Board mouse-drag panning
Remove scripted desktop Board panning while retaining native scrolling and mobile snapping.

- Remove the Board mouse-pan hook and its cursor styling.
- Update Board interaction tests and mobile coverage for browser-owned scrolling.
- Document the revised navigation behavior and publish a patch changeset.

Files changed:
 .changeset/fn-052-remove-board-mouse-pan.md        |   7 +
 docs/dashboard-guide.md                            |   4 +-
 packages/dashboard/app/components/Board.css        |  11 --
 packages/dashboard/app/components/Board.tsx        |  17 +--
 .../app/components/__tests__/Board.test.tsx        |  47 +++---
 .../app/components/__tests__/board-mobile.test.tsx |   8 +-
 .../app/hooks/__tests__/useBoardMousePan.test.tsx  | 164 ---------------------
 packages/dashboard/app/hooks/useBoardMousePan.ts   | 151 -------------------
 8 files changed, 39 insertions(+), 370 deletions(-)

Fusion-Task-Id: FN-052

Fusion-Task-Lineage: 7cd4c22f-09cf-4e09-8e24-729b5dd8d3fb

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
3fd4bdbc69 FN-051: disable native task dragging
Remove native task drag-and-drop while preserving board panning and task actions.

- Remove draggable task movement and drop handling from board, columns, lanes, lists, and cards.
- Add task context-menu movement actions and update related documentation and release metadata.
- Update component tests to cover non-draggable cards and board-pan exclusions.

Files changed:
 .changeset/fn-051-task-card-moves.md               |   7 +
 docs/dashboard-guide.md                            |   5 +-
 docs/task-management.md                            |   6 +
 packages/dashboard/app/components/Board.tsx        |  63 +-----
 packages/dashboard/app/components/Column.tsx       | 140 +-------------
 packages/dashboard/app/components/DockTaskList.tsx |   3 +-
 packages/dashboard/app/components/Lane.tsx         |   9 -
 packages/dashboard/app/components/ListView.css     |  12 +-
 packages/dashboard/app/components/ListView.tsx     | 132 ++-----------
 packages/dashboard/app/components/TaskCard.css     |   8 -
 packages/dashboard/app/components/TaskCard.tsx     |  58 ++----
 .../dashboard/app/components/TaskContextMenu.css   |  37 ++++
 .../dashboard/app/components/TaskContextMenu.tsx   | 145 ++++++++++++--
 .../__tests__/Board.canDropTask.test.tsx           | 212 ---------------------
 .../app/components/__tests__/Board.test.tsx        |   8 +-
 .../app/components/__tests__/Column.test.tsx       | 101 +---------
 .../app/components/__tests__/DockTaskList.test.tsx |   5 +-
 .../app/components/__tests__/Lane.test.tsx         |  26 ---
 .../app/components/__tests__/ListView.test.tsx     | 178 +----------------
 .../app/components/__tests__/TaskCard.test.tsx     |  60 ++----
 .../components/__tests__/TaskContextMenu.test.tsx  |  55 +++++-
 .../dashboard/app/components/boardCanDropTask.ts   |  56 -----
 .../app/components/dashboard/MainContent.tsx       |   1 -
 .../app/components/useRightDockController.tsx      |   1 -
 packages/dashboard/app/styles.css                  |  14 --
 25 files changed, 297 insertions(+), 1045 deletions(-)

Fusion-Task-Id: FN-051

Fusion-Task-Lineage: b5614cb1-75f3-4307-a595-123f903adc99

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
a736843cd2 FN-017: add authenticated image artifact viewer
Protect dashboard image artifacts while providing a dedicated preview experience.

- Fetch image media with header authentication and render revocable blob URLs.
- Add desktop and mobile viewer behavior across gallery, documents, task, and mailbox surfaces.
- Cover viewer, blob-loading, and updated artifact-surface behavior with tests and documentation.

Files changed:
 docs/dashboard-guide.md                            |   1 +
 .../app/components/ArtifactImageViewer.css         |   9 ++
 .../app/components/ArtifactImageViewer.tsx         | 100 ++++++++++++++++++
 .../dashboard/app/components/ArtifactMedia.tsx     |   8 +-
 .../dashboard/app/components/ArtifactsGallery.tsx  |  10 +-
 .../dashboard/app/components/DocumentsView.tsx     |   4 +-
 .../app/components/MailboxArtifactAttachment.tsx   |  29 +++---
 .../dashboard/app/components/TaskDocumentsTab.tsx  | 114 ++-------------------
 .../__tests__/ArtifactImageViewer.test.tsx         |  48 +++++++++
 .../__tests__/ArtifactsGallery.swipe-back.test.tsx |   7 +-
 .../components/__tests__/DocumentsView.test.tsx    |   9 +-
 .../__tests__/MailboxArtifactAttachment.test.tsx   |  34 ++++--
 .../components/__tests__/TaskDocumentsTab.test.tsx |  22 ++--
 .../hooks/__tests__/useArtifactImageBlob.test.tsx  |  92 +++++++++++++++++
 .../dashboard/app/hooks/useArtifactImageBlob.ts    |  59 +++++++++++
 15 files changed, 387 insertions(+), 159 deletions(-)

Fusion-Task-Id: FN-017
Fusion-Task-Lineage: 893c5a50-536a-4f54-a9a4-cba33ea111b5
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
ef22fa478a FN-047: preserve project-scoped Chat context
Keep task Chat bound to the selected project even when its engine is unavailable.

- Resolve request-scoped TaskStore and ChatStore pairs without falling back to the default project.
- Apply the project-safe resolution to task planner and room chat routes.
- Add regression coverage and document the selected-project context guarantee.

Files changed:
 .../fn-047-task-chat-context-project-scope.md      |  7 ++
 docs/dashboard-guide.md                            |  2 +-
 .../dashboard/src/__tests__/chat-manager.test.ts   | 49 +++++++-----
 .../src/__tests__/chat-project-services.test.ts    | 18 +++++
 .../src/__tests__/routes-chat-cancellation.test.ts |  2 +-
 packages/dashboard/src/chat-project-services.ts    | 20 ++++-
 .../src/routes/register-chat-room-routes.ts        |  7 ++
 .../dashboard/src/routes/register-chat-routes.ts   | 86 +++++++++++++---------
 8 files changed, 135 insertions(+), 56 deletions(-)

Fusion-Task-Id: FN-047

Fusion-Task-Lineage: 008eefad-e495-40ba-9243-d46ec913c9db

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
e80fef3fe0 FN-040: fix chat source-link integrity and contrast
Harden chat source links across streaming providers while improving new-tab behavior and visual contrast.

- Preserve source-link metadata through streamed delta and event bridges.
- Open chat source links safely in new tabs across desktop and mobile surfaces.
- Improve source-link contrast and add regression coverage plus user-facing guidance.

Files changed:
 .changeset/fn-040-chat-source-links.md             |  7 +++
 docs/dashboard-guide.md                            |  3 +
 .../ui-bugs/chat-streamed-source-link-integrity.md | 53 ++++++++++++++++
 packages/dashboard/app/components/ChatView.css     | 24 ++++++++
 .../app/components/StandardChatSurface.tsx         |  8 ++-
 .../components/__tests__/ChatView.core.test.tsx    | 38 ++++++++++++
 .../components/__tests__/ChatView.mobile.test.tsx  | 70 ++++++++++++++++++++--
 .../__tests__/ChatView.sessions-rooms.test.tsx     | 49 +++++++++++++++
 ...andardChatSurface.nativeStructureEmbed.test.tsx | 52 +++++++++++++++-
 .../__tests__/TaskPlannerChatTab.test.tsx          | 48 +++++++++++++++
 .../engine/src/__tests__/streaming-delta.test.ts   | 36 +++++++++++
 packages/engine/src/execution/streaming-delta.ts   | 17 +++++-
 .../src/__tests__/event-bridge.test.ts             | 30 +++++++++-
 packages/pi-claude-cli/src/event-bridge.ts         | 14 +++--
 .../src/__tests__/event-bridge.test.ts             | 42 +++++++++++++
 .../fusion-plugin-acp-runtime/src/event-bridge.ts  |  8 ++-
 .../src/__tests__/provider.test.ts                 | 34 +++++++++++
 .../src/acp/event-bridge.ts                        |  8 ++-
 .../src/__tests__/event-bridge.test.ts             | 28 +++++++++
 .../src/event-bridge.ts                            | 14 +++--
 .../src/__tests__/provider.test.ts                 | 34 +++++++++++
 .../src/acp/event-bridge.ts                        |  8 ++-
 .../src/__tests__/runtime-adapter.test.ts          | 34 +++++++++++
 .../src/acp/event-bridge.ts                        |  8 ++-
 24 files changed, 642 insertions(+), 25 deletions(-)

Fusion-Task-Id: FN-040

Fusion-Task-Lineage: 364ad678-df3e-4fb2-b19c-29eb44d8a429

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
bcc77c9608 FN-035: require automatic task recommendations
Require task recommendations to be explicitly enabled and consistently surfaced across execution and settings.

- Add the automatic task recommendations setting, persistence, validation, and localized UI copy.
- Gate executor recommendation prompts and completion-tool behavior on the setting.
- Update dashboard/API coverage, documentation, and regression tests.

Files changed:
 .changeset/fn-035-required-task-recommendations.md |  7 +++
 docs/dashboard-guide.md                            |  3 +-
 docs/settings-reference.md                         |  2 +
 .../postgres/settings-persistence.pg.test.ts       | 18 +++++++
 .../core/src/__tests__/settings-parity.test.ts     |  3 ++
 packages/core/src/config/settings-schema.ts        |  2 +
 packages/core/src/task-store/settings-ops.ts       | 16 ++++--
 packages/core/src/types/settings/settings-scope.ts |  8 +++
 .../app/__tests__/settings-save-split.test.ts      | 16 ++++++
 .../__tests__/SettingsModal.general.test.tsx       | 36 +++++++++++++
 .../app/components/settings/section-keys.ts        |  1 +
 .../settings/sections/GeneralSection.search.ts     | 10 ++++
 .../settings/sections/GeneralSection.tsx           | 15 +++++-
 .../settings-default-descriptions.test.tsx         |  2 +
 .../register-settings-memory-worktrunk.test.ts     | 28 ++++++++++
 .../src/routes/register-settings-memory-routes.ts  |  5 ++
 ...cutor-prompt-completion-recommendations.test.ts | 31 +++++++++++
 .../executor-task-recommendations.test.ts          | 61 ++++++++++++++++++++--
 .../engine/src/executor/create-task-done-tool.ts   | 18 +++++--
 packages/engine/src/executor/system-prompt.ts      | 20 +++++--
 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/pt-BR/app.json               |  5 +-
 packages/i18n/locales/zh-CN/app.json               |  3 ++
 packages/i18n/locales/zh-TW/app.json               |  3 ++
 packages/i18n/src/resources.d.ts                   |  3 ++
 28 files changed, 307 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-035
Fusion-Task-Lineage: 336d4d99-3105-43df-b82c-ca413b9c5892
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
aad4b73a47 FN-033: use default chat model for task chat
Task chat now uses the resolved project default while matching general chat controls and session behavior.

- Resolve the effective task-chat model and expose model/thinking selectors in the task chat composer.
- Persist per-session model and thinking overrides through scoped task-chat routes.
- Refresh task-chat UI, documentation, tests, and release metadata for the new behavior.

Files changed:
 .changeset/fn-033-task-chat-default-model.md       |   7 +
 docs/agents.md                                     |   4 +-
 docs/dashboard-guide.md                            |  26 +--
 packages/dashboard/app/api/chat/chat.ts            |  26 +--
 .../dashboard/app/components/TaskDetailModal.tsx   |   4 +-
 .../app/components/TaskPlannerChatTab.css          |  38 ++-
 .../app/components/TaskPlannerChatTab.tsx          | 211 +++++++++++++++++----
 .../__tests__/TaskDetailModal.test-helpers.ts      |   2 +
 .../components/__tests__/TaskDetailModal.test.tsx  |   4 +-
 .../__tests__/TaskPlannerChatTab.test.tsx          | 149 +++++++++------
 .../__tests__/effective-model-resolution.test.ts   |  32 +++
 .../app/components/effective-model-resolution.ts   |  30 ++-
 .../dashboard/src/__tests__/chat-manager.test.ts   |  14 +-
 .../routes-task-planner-chat-session.test.ts       | 210 +++++++++++++++++++
 .../dashboard/src/routes/register-chat-routes.ts   | 116 +++++++----
 15 files changed, 700 insertions(+), 173 deletions(-)

Fusion-Task-Id: FN-033

Fusion-Task-Lineage: 10cffb5e-1a38-47e1-9b29-cd3cb0b99b81

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:56:41 +00:00
Fusion Agent
5a0117a362 FN-031: add task reset lifecycle handling
Add durable task reset lifecycle support across core, dashboard, and engine integrations.

- Add reset lifecycle publication and disposal primitives with coverage.
- Expose reset lifecycle behavior through task workflow routes and dashboard task details.
- Update workflow intake, engine exports, and worktree integration documentation.

Files changed:
 docs/dashboard-guide.md                            |   8 +
 .../postgres/task-reset-publication.pg.test.ts     |  99 +++++++
 .../core/src/__tests__/task-move-disposer.test.ts  |  52 +++
 packages/core/src/index.gate.ts                    |   6 +
 packages/core/src/index.ts                         |   6 +
 packages/core/src/store.ts                         |   6 +
 packages/core/src/task-store/reset-lifecycle.ts    | 193 ++++++++++++++
 packages/core/src/tasks/task-move-disposer.ts      |  25 ++
 .../dashboard/app/components/TaskDetailModal.tsx   |   8 +-
 .../components/__tests__/TaskDetailModal.test.tsx  |  28 +-
 .../__tests__/plan-approval-intake-column.test.ts  |  80 ++----
 .../src/__tests__/task-reset-lifecycle.test.ts     | 171 +++++++++++++
 .../src/routes/register-task-workflow-routes.ts    | 285 ++++++++++-----------
 packages/engine/src/index.ts                       |  10 +-
 packages/engine/src/worktree/worktree-backend.ts   |   1 +
 15 files changed, 766 insertions(+), 212 deletions(-)

Fusion-Task-Id: FN-031

Fusion-Task-Lineage: 183bb709-485e-4069-bd2a-98f787b2bd73

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +00:00
Fusion Agent
21b3baa62d FN-029: unify direct and planner chat queues
Standardize queued-message controls across Direct Chat and planner conversations while preserving force-send ordering during cancellation reconciliation.

- Add shared pending-message queue UI with edit, reorder, delete, and force-send actions.
- Coordinate durable cancellation reconciliation before dispatching selected queued messages.
- Disable the Direct composer and related controls until force-send reconciliation completes.
- Add localized queue copy, documentation, styling, and regression coverage.

Files changed:
 docs/dashboard-guide.md                            |   8 +
 packages/dashboard/app/components/ChatView.css     |  63 ------
 packages/dashboard/app/components/ChatView.tsx     |  55 +++--
 packages/dashboard/app/components/PendingChatMessageQueue.css     |  94 +++++++++
 packages/dashboard/app/components/PendingChatMessageQueue.tsx     | 200 ++++++++++++++++++
 packages/dashboard/app/components/TaskPlannerChatTab.css          |  84 --------
 packages/dashboard/app/components/TaskPlannerChatTab.tsx          | 113 ++---------
 packages/dashboard/app/components/__tests__/ChatView.core-interactions.test.tsx |  24 ++-
 packages/dashboard/app/components/__tests__/PendingChatMessageQueue.test.tsx   |  76 +++++++
 packages/dashboard/app/hooks/__tests__/useChat.test.ts            |  39 +++
 packages/dashboard/app/hooks/useChat.ts                           | 224 ++++++++++++++++-----
 packages/i18n/locales/en/app.json                                 |  25 +--
 packages/i18n/locales/es/app.json                                 |  25 +--
 packages/i18n/locales/fr/app.json                                 |  25 +--
 packages/i18n/locales/ko/app.json                                 |  25 +--
 packages/i18n/locales/pt-BR/app.json                              |  25 +--
 packages/i18n/locales/zh-CN/app.json                              |  25 +--
 packages/i18n/locales/zh-TW/app.json                              |  25 +--
 packages/i18n/src/resources.d.ts                                  |  25 +--
 19 files changed, 746 insertions(+), 434 deletions(-)

Fusion-Task-Id: FN-029

Fusion-Task-Lineage: 3330d0e7-ba77-4392-98f7-69425070cfd1

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +00:00
Fusion Agent
9cff3d26ee FN-028: preserve interrupted chat context
Preserve streamed chat prefixes and durable context when users stop generation.

- Persist interrupted assistant text in the reopened model session and chat history.
- Keep optimistic prefixes visible when cancellation persistence is incomplete.
- Add cancellation coverage, documentation, and a patch changeset.

Files changed:
 .changeset/fn-028-chat-interrupted-context.md      |   7 ++
 docs/dashboard-guide.md                            |   2 +
 .../app/components/TaskPlannerChatTab.tsx          |  11 +-
 .../dashboard/app/hooks/__tests__/useChat.test.ts  |  28 +++++
 packages/dashboard/app/hooks/chatTypes.ts          |   5 +
 packages/dashboard/app/hooks/useChat.ts            |  14 ++-
 .../__tests__/chat-manager-rewind-session.test.ts  |  65 +++++++++++-
 .../dashboard/src/__tests__/chat-manager.test.ts   |   1 +
 .../src/__tests__/routes-chat-cancellation.test.ts | 113 +++++++++++++++++++++
 packages/dashboard/src/chat.ts                     |  72 +++++++++++--
 10 files changed, 305 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-028

Fusion-Task-Lineage: d26c55a8-1b1f-42cc-89f8-cd39f3ff8ea5

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +00:00
Fusion Agent
519180b9e2 FN-026: fix chat editing and conversation rewind
Make edited chat messages replace their prior turns while rewinding conversation state consistently across the dashboard and API.\n\n- Add message-edit and rewind-session server routes and persistence behavior.\n- Update chat hooks, planner UI, and legacy streaming compatibility for replacement edits.\n- Add regression coverage and document the editing and rewind behavior.\n\nFiles changed:\n .changeset/fn-026-chat-message-edit-replacement.md |   7 +\n docs/dashboard-guide.md                            |   8 +\n .../app/api/__tests__/legacy-chat-stream.test.ts   |  23 +++\n packages/dashboard/app/api/chat/chat.ts            |  42 ++---\n packages/dashboard/app/api/legacy.ts               |   2 +-\n packages/dashboard/app/components/TaskPlannerChatTab.tsx          | 101 +++++++----\n .../__tests__/TaskPlannerChatTab.test.tsx          |  81 +++++----\n packages/dashboard/app/hooks/__tests__/useChat.resync.test.ts     |   1 -\n packages/dashboard/app/hooks/__tests__/useChat.test.ts  |  45 +++--\n packages/dashboard/app/hooks/useChat.ts            | 108 ++++++------\n .../__tests__/chat-manager-rewind-session.test.ts  |  49 ++++++\n .../src/__tests__/routes-chat-message-edit.test.ts | 195 +++++++++++++++++++++\n packages/dashboard/src/chat.ts                     | 106 ++++++++++-\n .../dashboard/src/routes/register-chat-routes.ts   | 150 ++++++----------\n 14 files changed, 660 insertions(+), 258 deletions(-)

Fusion-Task-Id: FN-026

Fusion-Task-Lineage: ea69be74-def9-4c68-ac13-c1b51b8b5f69

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +00:00
Fusion Agent
df5c580a50 FN-024: cap and resize chat composers
Keep chat drafts compact by default while allowing intentional desktop resizing.

- Autosize Chat, Rooms, Activity, and Planner Chat composers through five lines.
- Cap overflow with internal scrolling and provide desktop/tablet-only manual resize behavior.
- Reset transient composer sizing on draft and target lifecycle changes, with regression coverage and operator documentation.
- Preserve shared terminal session documentation, including detach, end, and reopen behavior.

Files changed:
 .changeset/fn-024-chat-composer-height.md          |   7 +
 docs/dashboard-guide.md                            |   3 +
 packages/dashboard/app/components/ChatView.css     |  28 ++-
 packages/dashboard/app/components/ChatView.tsx     |  65 +++----
 packages/dashboard/app/components/TaskChatTab.css  |   9 +-
 packages/dashboard/app/components/TaskChatTab.tsx  |  32 ++--
 packages/dashboard/app/components/TaskPlannerChatTab.css          |  11 +-
 packages/dashboard/app/components/TaskPlannerChatTab.tsx          |  27 ++-
 packages/dashboard/app/components/__tests__/ChatView.autosize.test.tsx           |  64 +++++--
 packages/dashboard/app/components/__tests__/ChatView.chat-input-autosize.test.tsx | 148 ++++++++++------
 packages/dashboard/app/components/__tests__/TaskChatTab.test.tsx  |  34 ++++
 packages/dashboard/app/components/__tests__/TaskPlannerChatTab.test.tsx           |  41 ++++-
 packages/dashboard/app/utils/chatInputAutosize.ts  | 192 +++++++++++++++++++--
 13 files changed, 516 insertions(+), 145 deletions(-)

Fusion-Task-Id: FN-024

Fusion-Task-Lineage: 663b9f18-87ac-467b-b67c-6d2e27f34ba4

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +00:00
Fusion Agent
b88bb1d532 FN-023: respect disabled built-in workflows
Make disabled built-in workflows unavailable for new selections while preserving existing task resolution.

- Validate enabled built-in workflow settings atomically and require a valid available option.
- Resolve defaults and origin pins through the effective enabled workflow set.
- Filter dashboard selectors while retaining management and direct-resolution paths.
- Add core and dashboard regression coverage plus operator-facing documentation.

Files changed:
 .changeset/fn-023-disabled-builtin-workflows.md    |  7 +++
 docs/dashboard-guide.md                            |  5 +-
 docs/workflow-steps.md                             |  6 +-
 packages/core/src/__tests__/builtin-workflows.test.ts   | 35 +++++++++--
 packages/core/src/index.ts                         |  6 ++
 packages/core/src/task-store/moves.ts              | 17 +++--
 packages/core/src/task-store/settings-ops.ts       | 22 +++++++
 packages/core/src/task-store/task-store-helpers.ts | 33 +++++++++-
 packages/core/src/workflows/builtin-workflows.ts   | 70 +++++++++++++++++++--
 packages/dashboard/app/__tests__/workflow-selection-cross-surface.test.tsx | 45 ++++++++++++++
 packages/dashboard/app/api/projects/board-workflows.ts |  2 +
 packages/dashboard/app/components/__tests__/Board.test.tsx | 22 +++++++
 packages/dashboard/app/components/__tests__/ListView.test.tsx | 38 ++++++++++++
 packages/dashboard/app/components/settings/sections/GeneralSection.tsx | 19 +++++-
 packages/dashboard/app/components/settings/sections/__tests__/GeneralSection.builtin-workflows.test.tsx | 72 ++++++++++++++++++++++
 packages/dashboard/app/hooks/__tests__/useBoardWorkflows.test.ts | 20 ++++++
 packages/dashboard/app/hooks/useBoardWorkflows.ts | 18 ++++--
 packages/dashboard/src/__tests__/board-workflows.test.ts | 35 +++++++++--
 packages/dashboard/src/routes/__tests__/register-settings-memory-worktrunk.test.ts | 37 +++++++++++
 packages/dashboard/src/routes/board-workflows.ts | 41 +++++++++---
 packages/dashboard/src/routes/register-settings-memory-routes.ts | 46 +++++++++++++-
 21 files changed, 553 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-023

Fusion-Task-Lineage: 1043fc42-2a02-49dd-b695-d9ae3af60e90

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
612195fde6 FN-022: add workflow selection and start action
Add workflow-aware task creation controls and a guarded Start action for quick task intake.

- Add workflow selection and resolved board metadata loading to New Task modal.
- Support starting eligible tasks in their workflow destination with clear success or partial-failure feedback.
- Wire move-task handling through modal callers and cover workflow/start behavior with tests and documentation.

Files changed:
 .changeset/fn-022-new-task-workflow-start.md       |   7 +
 docs/dashboard-guide.md                            |   4 +-
 packages/dashboard/app/components/AppModals.tsx    |   1 +
 packages/dashboard/app/components/NewTaskModal.tsx | 158 +++++++++++++++--
 .../dashboard/app/components/QuickEntryBox.tsx     |   5 +-
 packages/dashboard/app/components/TaskForm.tsx     |  28 ++-
 .../app/components/__tests__/AppModals.test.tsx    |  33 +++-
 .../app/components/__tests__/NewTaskModal.test.tsx | 192 ++++++++++++++++++++-
 .../app/utils/__tests__/quickAddStart.test.ts      |  16 +-
 packages/dashboard/app/utils/quickAddStart.ts      |  15 ++
 10 files changed, 441 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-022

Fusion-Task-Lineage: ce794b44-3c31-4bfc-a259-ecfd78531be1

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00