Commit Graph

13715 Commits

Author SHA1 Message Date
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
7563fcfe1b FN-037: configure AI-authored task output language
Configure a persisted output-language setting and apply it across AI-authored task text and workflow summaries.

- Add project/global output-language settings with defaults, validation, UI controls, translations, and documentation.
- Propagate the selected language through planning, execution, review, summaries, and task creation.
- Add focused coverage for language resolution and update affected dashboard, engine, and localization tests.

Files changed:
 .changeset/fn-037-task-output-language.md          |   7 ++
 docs/settings-reference.md                         |   4 +
 docs/task-management.md                            |   4 +
 .../core/src/__tests__/ai-output-language.test.ts  |  21 +++++
 packages/core/src/ai/ai-output-language.ts         |  42 +++++++++
 packages/core/src/ai/ai-summarize.ts               |  16 +++-
 packages/core/src/config/settings-schema.ts        |   2 +
 packages/core/src/index.gate.ts                    |   2 +
 packages/core/src/index.ts                         |   2 +
 packages/core/src/task-store/settings-ops.ts       |   7 ++
 packages/core/src/task-store/task-creation.ts      |   4 +
 packages/core/src/types/settings/settings-scope.ts |   2 +
 .../app/__tests__/settings-sections.test.tsx       |  21 +++--
 .../__tests__/SettingsModal.models-auth.test.tsx   |  10 +-
 .../app/components/settings/section-keys.ts        |   2 +-
 .../sections/ProjectModelsSection.search.ts        |  13 ++-
 .../settings/sections/ProjectModelsSection.tsx     |  28 ++++--
 .../settings-default-descriptions.test.tsx         |   4 +-
 .../src/__tests__/github-tracking.test.ts          |   4 +-
 .../__tests__/planning-prompt-resolution.test.ts   |  29 ++++--
 .../src/__tests__/routes-planning.test.ts          |  32 ++++++-
 packages/dashboard/src/ai-session-store.ts         |  15 ++-
 packages/dashboard/src/github-tracking.ts          |   3 +
 packages/dashboard/src/planning.ts                 |  75 +++++++++++++--
 .../routes/register-ai-text-assistant-routes.ts    |  11 ++-
 .../src/routes/register-planning-subtask-routes.ts |   6 +-
 .../src/routes/register-task-workflow-routes.ts    |   9 +-
 packages/dashboard/src/shared/settings-sections.ts |   2 +-
 .../__tests__/ce-workflow-step-executor.test.ts    |  45 ++++++++-
 .../__tests__/executor-review-artifacts.test.ts    |  65 +++++++++++++
 packages/engine/src/__tests__/triage.test.ts       |   7 +-
 .../src/__tests__/workflow-task-runtime.test.ts    |  23 +++++
 .../create-authoritative-workflow-primitives.ts    |  14 ++-
 .../create-authoritative-workflow-seams.ts         |  17 +++-
 .../engine/src/executor/execute-workflow-graph.ts  |  19 +++-
 .../engine/src/executor/execute-workflow-step.ts   |  13 ++-
 packages/engine/src/executor/execution-prompt.ts   |  10 +-
 .../engine/src/executor/handoff-task-to-review.ts  |  10 +-
 .../engine/src/executor/run-graph-custom-node.ts   |   6 +-
 .../src/executor/task-executor-graph-facades.ts    |   8 +-
 packages/engine/src/triage.ts                      |  35 ++-----
 .../src/workflows/workflow-completion-summary.ts   | 101 ++++++++++++++++++---
 .../engine/src/workflows/workflow-task-runtime.ts  |  12 +++
 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               |  14 ++-
 packages/i18n/locales/zh-CN/app.json               |   7 +-
 packages/i18n/locales/zh-TW/app.json               |   7 +-
 packages/i18n/src/resources.d.ts                   |  13 ++-
 51 files changed, 680 insertions(+), 151 deletions(-)

Fusion-Task-Id: FN-037

Fusion-Task-Lineage: 968a707e-7ffe-43ba-b983-d679b031f7a5

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
ef5ebd21e5 FN-044: show bounded description fallbacks for titleless tasks
Display titleless tasks consistently across cards and list views without persisting generated fallback titles.

- Centralize title, description, and ID display fallback selection.
- Bound long description fallbacks to 200 characters with literal dots and preserve full tooltips.
- Cover desktop, mobile, whitespace, length-boundary, and explicit-title behavior.

Files changed:
 packages/dashboard/app/components/ListView.tsx     |  5 +-
 packages/dashboard/app/components/TaskCard.css     | 12 +++
 packages/dashboard/app/components/TaskCard.tsx     | 18 +++++-
 .../app/components/__tests__/ListView.test.tsx     | 64 ++++++++++++++++++++++
 .../app/components/__tests__/TaskCard.test.tsx     | 43 +++++++++++++++
 packages/dashboard/app/utils/taskTitleDisplay.ts   | 51 +++++++++++++++++
 6 files changed, 188 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-044

Fusion-Task-Lineage: 822f17f3-4839-4f9e-9aa7-cd90037b67de

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
b1893a63af FN-043: add canonical thinking levels for custom providers
Custom-provider models now expose the full thinking-level selector and faithfully transmit the selected effort.

- Register all canonical thinking levels and preserve provider-specific API dialects.
- Remove the redundant reasoning toggle and update provider status and settings documentation.
- Add dashboard, engine, and provider registration coverage for thinking-level behavior.
- Add a minor changeset for the published CLI package.

Files changed:
 .../fn-043-custom-provider-thinking-levels.md      |  7 ++
 docs/settings-reference.md                         |  2 +
 .../dashboard/app/api/settings/provider-status.ts  |  1 -
 .../app/components/CustomProviderForm.css          |  5 +-
 .../app/components/CustomProviderForm.tsx          | 18 ++---
 .../__tests__/CustomProviderForm.test.tsx          | 35 ++++++---
 ...r-model-routes-custom-provider-thinking.test.ts | 91 ++++++++++++++++++++++
 .../custom-provider-thinking-levels.test.ts        | 49 ++++++++++++
 .../custom-providers-openai-completions.test.ts    |  2 +-
 .../custom-providers-openai-responses.test.ts      |  3 +-
 .../src/__tests__/pi-create-fn-agent.test.ts       | 31 +++++++-
 .../src/__tests__/provider-registration.test.ts    | 20 ++++-
 .../engine/src/auth/custom-provider-registry.ts    | 14 +++-
 packages/engine/src/pi.ts                          |  9 ++-
 14 files changed, 251 insertions(+), 36 deletions(-)

Fusion-Task-Id: FN-043

Fusion-Task-Lineage: fdd3308a-d5bd-4f54-911a-226c2b46a927

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
a81c9b80d9 FN-036: make task title summarization project-controlled
Make generated task titles project-controlled while preserving useful summaries at any length.

- Add project-level title summarization settings and UI controls.
- Make summarization length-independent across task creation, planning, GitHub, and agent flows.
- Update localization, documentation, and regression coverage.

Files changed:
 .../fn-036-systematic-title-summarization.md       |   7 +
 docs/settings-reference.md                         |   2 +-
 docs/storage.md                                    |   2 +-
 docs/task-management.md                            |   4 +-
 packages/core/src/__tests__/ai-summarize.test.ts   |  34 ++--
 .../__tests__/store-create-intake-column.test.ts   | 186 +++++++++++++++++++++
 packages/core/src/ai/ai-summarize.ts               |  32 ++--
 packages/core/src/task-store/task-creation.ts      |  83 +++++++--
 packages/core/src/types/settings/settings-scope.ts |   9 +-
 packages/core/src/types/task/task-core.ts          |   2 +-
 .../dashboard/app/__tests__/api-projects.test.ts   |   4 +-
 .../app/__tests__/settings-sections.test.tsx       |   2 +-
 .../dashboard/app/api/planning/ai-summarize.ts     |   2 +-
 .../__tests__/SettingsModal.search.test.ts         |   5 +-
 .../search/__tests__/settings-search-index.test.ts |   2 +-
 .../sections/ProjectModelsSection.search.ts        |   4 +-
 .../settings/sections/ProjectModelsSection.tsx     |  11 +-
 .../src/__tests__/github-tracking.test.ts          |  12 +-
 .../src/__tests__/routes-planning.test.ts          |  28 +++-
 .../dashboard/src/__tests__/routes-tasks.test.ts   |  19 +++
 packages/dashboard/src/github-tracking.ts          |   9 +-
 .../routes/register-ai-text-assistant-routes.ts    |   7 +-
 .../src/__tests__/agent-tools-delegation.test.ts   |   1 +
 .../src/__tests__/heartbeat-executor.test.ts       |   1 -
 packages/engine/src/__tests__/triage.test.ts       |   7 +-
 packages/engine/src/agent-tools.ts                 |   7 +-
 packages/engine/src/triage.ts                      |  12 +-
 packages/i18n/locales/en/app.json                  |   6 +-
 packages/i18n/locales/pt-BR/app.json               |   8 +-
 packages/i18n/src/resources.d.ts                   |   6 +-
 30 files changed, 418 insertions(+), 96 deletions(-)

Fusion-Task-Id: FN-036

Fusion-Task-Lineage: df603386-e63e-4be8-a8e5-bae9aa1d4a80

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
06649a0288 FN-041: add chat message layout to Settings search
Make the conversation layout setting discoverable across Settings search presentations.

- Add the project-scoped chat message layout entry to the Appearance search index.
- Cover desktop, mobile, and embedded Settings search with regression tests.
- Add a patch changeset for the published Fusion package.

Files changed:
 .changeset/fn-041-settings-search-chat-layout.md   |  7 +++
 .../__tests__/SettingsModal.general.test.tsx       | 51 ++++++++++++++++++++++
 .../settings/sections/AppearanceSection.search.ts  | 15 +++++++
 3 files changed, 73 insertions(+)

Fusion-Task-Id: FN-041
Fusion-Task-Lineage: 614cded0-a97a-4343-96f7-22eeb483a54b
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
29f4de39c4 FN-038: prepare projects for Git during onboarding
Make project initialization and registration produce Git-ready projects consistently.\n\n- Centralize repository readiness and initialization behavior.\n- Update CLI onboarding and dashboard registration flows to use the Git-ready setup.\n- Add regression coverage and document the new project preparation behavior.\n\nFiles changed:\n .changeset/fn-038-git-ready-projects.md            |   7 +\n docs/cli-reference.md                              |  11 +-\n docs/getting-started.md                            |  17 +-\n docs/workspaces.md                                 |   4 +-\n packages/cli/src/commands/__tests__/init.test.ts   |  39 ++--\n packages/cli/src/commands/init.ts                  | 115 ++--------\n packages/core/src/__tests__/git-repository.test.ts | 125 +++++++++-\n packages/core/src/central/central-core.ts          |  57 +++--\n packages/core/src/git/git-repository.ts             | 254 +++++++++++++++++----\n packages/dashboard/app/api/projects/projects.ts    |   2 -\n packages/dashboard/app/components/SetupWizardModal.tsx |  46 +---\n packages/dashboard/app/components/__tests__/SetupWizardModal.git-missing.test.tsx |  74 +++---\n packages/dashboard/src/routes/__tests__/register-project-git-readiness.test.ts | 165 +++++++++++++\n packages/dashboard/src/routes/register-project-routes.ts |  11 -\n 14 files changed, 647 insertions(+), 280 deletions(-)

Fusion-Task-Id: FN-038

Fusion-Task-Lineage: 83634184-569b-4190-a88f-4a09eb832e9d

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
3f85c4cf84 FN-034: route workspace tasks through repository worktrees
Route multi-repository planning and graph execution through declared repository worktrees instead of workspace roots.

- Acquire declared repository worktrees for planning and custom graph nodes.
- Filter planning coordinator selection to configured repositories and preserve workspace routing metadata.
- Add workspace worktree recovery, concurrency coverage, and release documentation.

Files changed:
 .changeset/fn-034-workspace-worktree-routing.md    |   7 ++
 docs/architecture.md                               |   1 +
 ...workspace-worktrees-concurrent-merge.pg.test.ts |  36 +++++++
 packages/core/src/store.ts                         |  10 ++
 packages/core/src/task-store/task-mutation-ops.ts  |  60 +++++++++++-
 .../executor-workspace-session-cwd.test.ts         |  29 ++++--
 packages/engine/src/__tests__/self-healing.test.ts |  17 ++--
 .../workspace-root-worktree-routing.test.ts        | 107 +++++++++++++++++++++
 .../create-authoritative-workflow-seams.ts         |  48 ++++++---
 .../executor/ensure-graph-custom-node-worktree.ts  |  45 +++++++-
 .../executor/ensure-task-worktree-for-planning.ts  |  38 ++++++--
 .../src/executor/reset-steps-if-work-lost.ts       |  12 ++-
 .../engine/src/executor/run-graph-custom-node.ts   |  83 ++++++++++++++--
 packages/engine/src/executor/run-implementation.ts |  59 ++++++++++--
 .../src/executor/workspace-config-resolver.ts      |  30 +++++-
 .../src/executor/workspace-review-per-repo.ts      |  29 +++++-
 .../executor/worktree-missing-session-recovery.ts  |  26 ++++-
 packages/engine/src/self-healing.ts                |  50 +++++++---
 .../self-healing/auto-recover-worktree-session.ts  |  31 +++++-
 .../engine/src/worktree/worktree-acquisition.ts    |  65 +++++++++++-
 20 files changed, 702 insertions(+), 81 deletions(-)

Fusion-Task-Id: FN-034
Fusion-Task-Lineage: 59c5f273-d676-4b7f-b006-c12dc6c3abe6
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
a7afb020e9 FN-032: use deterministic titles for short descriptions
Short untitled task descriptions now receive stable planning titles instead of an empty placeholder.

- Derive short-task titles from the first meaningful description line with shared normalization and length safety.
- Preserve explicit titles and leave long or empty descriptions on existing AI/none behavior.
- Persist the planning heading title through normal task metadata finalization and document the threshold.

Files changed:
 .changeset/fn-032-short-description-title.md |   7 ++
 docs/settings-reference.md                   |   2 +-
 docs/task-management.md                      |   4 +-
 packages/engine/src/__tests__/triage.test.ts | 115 ++++++++++++++++++++++++---
 packages/engine/src/triage.ts                |  23 +++++-
 5 files changed, 137 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-032

Fusion-Task-Lineage: 886f5a32-7eb5-460d-bf1a-93ebf5dc0b93

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +00:00
Fusion Agent
c3ff663c1c FN-030: route refinement tasks directly to planning
Route refinement and duplicate-task handling through the planning path while preserving task metadata and API behavior.\n\n- Route CLI refinement commands directly into planning.\n- Harden dependency updates and duplicate-task refinement persistence.\n- Expand PostgreSQL, CLI, and dashboard authorization coverage.\n- Document the refined task lifecycle and add the published-package changeset.\n\nFiles changed:\n .changeset/fn-030-refinement-planning-route.md     |   7 ++\n docs/architecture.md                               |  20 ++--\n docs/task-management.md                            |  11 +-\n packages/cli/src/commands/__tests__/task.test.ts   |   9 +-\n packages/cli/src/commands/task.ts                  |   2 +-\n .../postgres/refine-duplicate-task.pg.test.ts      | 130 +++++++++++++++++++++\n .../__tests__/postgres/store-comments.pg.test.ts   |  32 +++++\n packages/core/src/task-store/update-task-deps.ts   |  17 +--\n packages/dashboard/app/__tests__/api-auth.test.ts  |   5 +-\n 9 files changed, 207 insertions(+), 26 deletions(-)

Fusion-Task-Id: FN-030

Fusion-Task-Lineage: 885c0a9f-d8bf-4abf-9ec9-dca5a01648e8

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
5089f1b88e FN-027: route dependency replans safely
Make dependency changes reliably replan Coding (Ideas) cards without sending them into manual intake.

- Derive dependency-replan destinations from workflow lifecycle traits.
- Preserve specifications while resetting approval evidence and re-entering planning.
- Cover dedicated and generic dependency writers, continuation states, and manual-intake admission.

Files changed:
 .../postgres/task-dependency-mutation.pg.test.ts   | 110 +++++++++++++++++++--
 packages/core/src/task-store/task-update.ts        |  28 ++----
 packages/core/src/task-store/update-task-deps.ts   |  35 ++++---
 .../src/workflows/workflow-lifecycle-traits.ts     |  29 ++++++
 .../src/__tests__/manual-intake-admission.test.ts  |  20 ++++
 5 files changed, 181 insertions(+), 41 deletions(-)

Fusion-Task-Id: FN-027

Fusion-Task-Lineage: 63ee58e6-550d-4f56-a1e0-9c878f957b66

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
5fe1c8e379 FN-025: preserve user-controlled chat disclosures
Keep thinking and tool disclosure state under operator control across chat surfaces.\n\n- Start new thinking and tool groups collapsed instead of auto-opening during streaming.\n- Preserve disclosure state across streaming updates and reattached planner sessions.\n- Allow non-interactive disclosure content to dismiss expanded blocks while preserving interactive descendants.\n- Add desktop and mobile regression coverage for chat, task activity, and planner views.\n\nFiles changed:\n .../app/components/StandardChatSurface.tsx         | 33 +++++++++++--\n packages/dashboard/app/components/TaskChatTab.tsx  | 19 ++++++--\n .../__tests__/ChatView.core-interactions.test.tsx  | 23 +++++++--\n .../components/__tests__/ChatView.core.test.tsx    | 55 +++++++++++++++++++++-\n .../app/components/__tests__/TaskChatTab.test.tsx  | 36 +++++++++-----\n .../__tests__/TaskPlannerChatTab.test.tsx          | 49 ++++++++++++++++++-\n 6 files changed, 186 insertions(+), 29 deletions(-)

Fusion-Task-Id: FN-025

Fusion-Task-Lineage: 294eadc8-d8fe-48da-8a1e-96aed559e54d

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +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
Fusion Agent
4d7e7dba4c FN-021: expose model-supported thinking levels, including max
Expose thinking-level options from model capabilities through API, workflows, and dashboard controls.

- Add model-supported thinking-level metadata, including max, across core and model routes.
- Propagate capability-aware levels through planning, agent creation, and chat/task UI.
- Update localized labels, documentation, tests, dependencies, and add a release changeset.

Files changed:
 .changeset/fn-021-thinking-levels.md               |  7 ++++
 docs/settings-reference.md                         |  8 +++-
 docs/workflow-steps.md                             |  8 ++--
 packages/core/src/__tests__/openai-models.test.ts  |  1 +
 .../core/src/__tests__/thinking-levels.test.ts     |  4 +-
 packages/core/src/__tests__/workflow-ir.test.ts    |  2 +-
 packages/core/src/ai/openai-models.ts              |  5 ++-
 packages/core/src/types/board/board.ts             |  8 ++--
 .../app/api/agents/agent-import-generation.ts      |  4 +-
 .../dashboard/app/api/planning/models-usage.ts     | 13 +++++++
 packages/dashboard/app/api/planning/planning.ts    |  5 ++-
 .../dashboard/app/components/AgentDetailView.tsx   |  2 +-
 .../app/components/ChatThinkingLevelControl.tsx    | 28 +++++++++++---
 .../app/components/CustomModelDropdown.tsx         | 29 ++++++++++----
 packages/dashboard/app/components/NewTaskModal.tsx |  4 +-
 .../dashboard/app/components/TaskDetailModal.tsx   |  4 +-
 .../__tests__/AgentDetailView.test-helpers.ts      |  2 +-
 .../__tests__/AgentOnboardingModal.test.tsx        |  2 +-
 .../__tests__/ChatThinkingLevelControl.test.tsx    | 27 ++++++++++++-
 .../__tests__/CustomModelDropdown.test.tsx         | 33 +++++++++++++++-
 .../__tests__/ModelSelectionModal.test.tsx         |  3 +-
 .../components/__tests__/NewAgentDialog.test.tsx   |  2 +
 .../components/__tests__/QuickEntryBox.test.tsx    |  3 +-
 .../components/agent-presets/agentCreatePayload.ts |  3 +-
 .../settings/sections/GlobalModelsSection.tsx      |  8 ++--
 packages/dashboard/package.json                    |  2 +-
 .../dashboard/src/__tests__/chat-manager.test.ts   |  8 ++--
 packages/dashboard/src/__tests__/chat.test.ts      |  2 +-
 ...-model-routes-openai-codex-supplemental.test.ts | 44 +++++++++++++++++++++-
 .../src/__tests__/routes-automation.test.ts        |  4 +-
 .../dashboard/src/__tests__/routes-tasks.test.ts   |  8 ++--
 packages/dashboard/src/agent-generation.ts         |  9 +++--
 packages/dashboard/src/agent-onboarding.ts         |  8 ++--
 packages/dashboard/src/routes.ts                   | 14 ++++++-
 .../src/routes/register-chat-room-routes.ts        |  2 +-
 .../dashboard/src/routes/register-model-routes.ts  | 43 ++++++++++++++++-----
 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                   |  1 +
 pnpm-lock.yaml                                     |  6 +--
 45 files changed, 289 insertions(+), 84 deletions(-)

Fusion-Task-Id: FN-021
Fusion-Task-Lineage: af1b0e09-6375-4f0c-9501-66a10c8b9168
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
2fe3382279 FN-020: add queued Planner Chat message management
Add browser-local queued follow-up management to Planner Chat while preserving ordered, session-scoped dispatch.

- Queue follow-up messages during active responses and dispatch them FIFO after completion or Stop reconciliation.
- Add editing, reordering, deletion, duplicate-safe force-send, persistence, responsive styling, documentation, translations, and regression coverage.

Files changed:
 docs/dashboard-guide.md                            |   2 +
 .../app/components/TaskPlannerChatTab.css          |  84 ++++++
 .../app/components/TaskPlannerChatTab.tsx          | 301 ++++++++++++++++++---
 .../__tests__/TaskPlannerChatTab.test.tsx          | 216 +++++++++++++++
 packages/i18n/locales/en/app.json                  |  13 +
 packages/i18n/locales/es/app.json                  |  13 +
 packages/i18n/locales/fr/app.json                  |  13 +
 packages/i18n/locales/ko/app.json                  |  13 +
 packages/i18n/locales/pt-BR/app.json               |  13 +
 packages/i18n/locales/zh-CN/app.json               |  13 +
 packages/i18n/locales/zh-TW/app.json               |  13 +
 packages/i18n/src/resources.d.ts                   |  13 +
 12 files changed, 673 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-020

Fusion-Task-Lineage: 5627cdbd-00dd-4e17-a4bd-53d49efa836d

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
b17c6de32b FN-019: recognize custom providers and refresh model catalogs
Add support for custom AI providers and refresh the built-in model catalog from settings.

- Recognize custom provider configuration in provider status and onboarding readiness.
- Add bounded model-catalog refresh endpoints and settings controls with localized copy.
- Cover provider discovery, cache refresh, routes, and authentication UI behavior with tests.

Files changed:
 .changeset/fn-019-provider-catalog.md              |  7 ++
 docs/dashboard-guide.md                            |  6 ++
 .../dashboard/app/__tests__/api-models.test.ts     | 29 +++++++++
 .../dashboard/app/api/settings/provider-status.ts  | 15 +++++
 ...thenticationSection.modelsCacheRefresh.test.tsx | 46 +++++++++++++-
 .../__tests__/AuthenticationSection.test.tsx       | 10 +++
 .../settings/sections/AuthenticationSection.css    | 20 ++++++
 .../settings/sections/AuthenticationSection.tsx    | 37 ++++++++++-
 .../app/hooks/__tests__/useAuthOnboarding.test.ts  | 29 +++++++++
 .../app/hooks/__tests__/useSetupReadiness.test.ts  | 14 ++++
 packages/dashboard/app/hooks/useAuthOnboarding.ts  |  9 +--
 packages/dashboard/app/hooks/useSetupReadiness.ts  |  8 ++-
 .../register-model-routes-refresh-bounding.test.ts | 74 ++++++++++++++++++++++
 .../dashboard/src/__tests__/routes-auth.test.ts    | 18 ++++++
 .../dashboard/src/routes/register-auth-routes.ts   | 17 ++++-
 .../dashboard/src/routes/register-model-routes.ts  | 22 ++++++-
 packages/i18n/locales/en/app.json                  |  6 ++
 packages/i18n/locales/es/app.json                  |  6 ++
 packages/i18n/locales/fr/app.json                  |  6 ++
 packages/i18n/locales/ko/app.json                  |  6 ++
 packages/i18n/locales/pt-BR/app.json               |  6 ++
 packages/i18n/locales/zh-CN/app.json               |  6 ++
 packages/i18n/locales/zh-TW/app.json               |  6 ++
 packages/i18n/src/resources.d.ts                   |  6 ++
 24 files changed, 397 insertions(+), 12 deletions(-)

Fusion-Task-Id: FN-019

Fusion-Task-Lineage: 1e9daf0e-8aa8-4205-9fc7-686fbdd5bd35

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
d80367fa30 FN-018: fix KnowledgeGraphPanel hop typing
Normalize absent path hop counts for the typed graph path interpolation while preserving zero-hop results.

- Use undefined for non-found path hop counts to satisfy the typed interpolation contract.
- Add regression coverage that renders a found zero-hop path.

Files changed:
 packages/dashboard/app/components/KnowledgeGraphPanel.tsx            | 3 ++-
 .../dashboard/app/components/__tests__/KnowledgeGraphPanel.test.tsx  | 5 ++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-018

Fusion-Task-Lineage: 28254bbd-967b-463e-87de-8dfa847ca42d

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
0899d49e5c FN-016: preserve interrupted chat responses
Persist partial assistant output when chat streaming is stopped so users can resume from an honest interrupted transcript.

- Snapshot streamed text, thinking, and tool calls before cancellation.
- Persist and reconcile interrupted responses for main chat and planner chat surfaces.
- Add cancellation routes, manager handling, changeset metadata, and desktop/mobile regression coverage.

Files changed:
 .changeset/fn-016-chat-cancel-partial.md           |   7 +
 packages/dashboard/app/api/chat/chat.ts            |  13 +-
 .../app/components/TaskPlannerChatTab.tsx          |  91 ++++++++-
 .../__tests__/ChatView.streaming-thread.test.tsx   |  54 ++++++
 .../__tests__/TaskPlannerChatTab.test.tsx          |  53 +++++-
 .../dashboard/app/hooks/__tests__/useChat.test.ts  |  84 ++++++++
 packages/dashboard/app/hooks/useChat.ts            | 131 +++++++++++--
 .../dashboard/src/__tests__/chat-manager.test.ts   |  80 ++++++--
 packages/dashboard/src/chat.ts                     | 208 ++++++++++++++-----
 .../dashboard/src/routes/register-chat-routes.ts   |   7 +-
 10 files changed, 641 insertions(+), 87 deletions(-)

Fusion-Task-Id: FN-016

Fusion-Task-Lineage: 3e14b9b7-967b-4f80-b941-2216bfa9c69e

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
6a28811d1a FN-012: sort tasks in every board column
Add independent task ordering controls across all board lanes and keep archive pagination aligned with the selected order.

- Add arrival and task-ID sorting to every board column, including archived tasks.
- Thread bounded, server-backed archive sorting through the API, store, hook, and UI.
- Preserve selected archive order for subsequent pages and add localized labels, typings, tests, and dashboard documentation.

Files changed:
 .changeset/fn-012-column-task-sorting.md           |   7 ++
 docs/dashboard-guide.md                            |  17 +--
 .../postgres/archive-pagination.pg.test.ts         |  19 ++++
 packages/core/src/__tests__/task-priority.test.ts  |  13 +++
 packages/core/src/async-stores/async-archive-db.ts |  18 ++--
 packages/core/src/index.gate.ts                    |   2 +
 packages/core/src/index.ts                         |   2 +
 packages/core/src/store.ts                         |   2 +-
 .../core/src/task-store/archive-lifecycle-2.ts     |  13 ++-
 packages/core/src/tasks/task-priority.ts           |  41 +++++---
 packages/core/src/types.ts                         |   2 +-
 packages/dashboard/app/App.tsx                     |   4 +-
 packages/dashboard/app/api/tasks/tasks.ts          |   3 +
 packages/dashboard/app/components/Board.tsx        |  62 +++++++---
 packages/dashboard/app/components/Column.tsx       |  54 ++++++----
 .../app/components/__tests__/Board.test.tsx        |  74 +++++++------
 .../app/components/__tests__/Column.test.tsx       |   8 +-
 .../app/components/dashboard/MainContent.tsx       |   6 ++
 .../dashboard/app/components/dashboard/types.ts    |   5 +
 .../dashboard/app/hooks/__tests__/useTasks.test.ts |  61 ++++++++++-
 packages/dashboard/app/hooks/useTasks.ts           | 116 ++++++++++++++++-----
 ...task-workflow-routes.archive-pagination.test.ts |  78 ++++++++++++++
 .../src/routes/register-task-workflow-routes.ts    |  20 ++--
 packages/i18n/locales/en/app.json                  |   5 +
 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                   |   5 +
 31 files changed, 537 insertions(+), 142 deletions(-)

Fusion-Task-Id: FN-012

Fusion-Task-Lineage: 18dff987-18d5-401d-9fe0-290a71f12e15

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
3ae22c23d1 FN-011: add project chat message width preference
Add a project-scoped conversation layout preference and apply full-width rendering consistently across dashboard chat surfaces.

- Add bubbles/full-width project settings with localized Appearance controls.
- Apply the preference to Chat, Activity, Planner Chat, Quick Chat, and docked hosts with responsive safeguards.
- Add regression coverage, documentation, and the published-package changeset.

Files changed:
 .changeset/fn-011-chat-message-layout.md           |  7 ++++
 docs/dashboard-guide.md                            |  4 ++
 .../core/src/__tests__/settings-defaults.test.ts   | 14 ++++++-
 .../core/src/__tests__/settings-parity.test.ts     |  4 ++
 packages/core/src/config/settings-schema.ts        |  5 +++
 packages/core/src/types/settings/settings-scope.ts |  5 +++
 packages/dashboard/app/App.tsx                     |  7 +++-
 packages/dashboard/app/components/AppModals.tsx    |  5 +++
 packages/dashboard/app/components/ChatView.css     | 23 +++++++++++
 packages/dashboard/app/components/ChatView.tsx     |  4 +-
 .../dashboard/app/components/SettingsModal.tsx     | 14 +++++++
 packages/dashboard/app/components/TaskChatTab.css  | 42 +++++++++++++++++++++
 packages/dashboard/app/components/TaskChatTab.tsx  |  4 +-
 .../app/components/TaskPlannerChatTab.css          | 22 +++++++++++
 .../app/components/TaskPlannerChatTab.tsx          |  4 +-
 .../components/__tests__/ChatView.core.test.tsx    | 34 +++++++++++++++++
 .../__tests__/SettingsModal.general.test.tsx       | 42 +++++++++++++++++++++
 .../app/components/__tests__/TaskChatTab.test.tsx  | 31 +++++++++++++++
 .../__tests__/TaskPlannerChatTab.test.tsx          | 32 ++++++++++++++++
 .../settings/sections/AppearanceSection.tsx        | 24 +++++++++++-
 .../sections/__tests__/AppearanceSection.test.tsx  | 22 ++++++++++-
 .../app/context/ChatMessageLayoutContext.tsx       | 16 ++++++++
 .../app/hooks/__tests__/useAppSettings.test.ts     | 44 ++++++++++++++++++++++
 packages/dashboard/app/hooks/useAppSettings.ts     | 29 ++++++++++++++
 .../app/task-modal-touch-resize-e2e-fixture.tsx    |  2 +-
 packages/i18n/locales/en/app.json                  |  6 ++-
 packages/i18n/locales/es/app.json                  |  6 ++-
 packages/i18n/locales/fr/app.json                  |  6 ++-
 packages/i18n/locales/ko/app.json                  |  6 ++-
 packages/i18n/locales/pt-BR/app.json               |  6 ++-
 packages/i18n/locales/zh-CN/app.json               |  6 ++-
 packages/i18n/locales/zh-TW/app.json               |  6 ++-
 packages/i18n/src/resources.d.ts                   |  4 ++
 33 files changed, 471 insertions(+), 15 deletions(-)

Fusion-Task-Id: FN-011
Fusion-Task-Lineage: d858d00f-e05b-4dc2-8ddb-cfc5b9973871
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
d295202768 FN-013: establish i18n lint baseline and localize dashboard copy
Add a production i18n lint baseline while replacing dashboard copy with translation keys.

- Localize task, board, mailbox, report, graph, settings, and shared dashboard surfaces.
- Regenerate locale catalogs and resource types for the migration keys.
- Add the i18n lint-baseline regression test and contributor guidance.

Files changed:
 .changeset/fn-013-i18n-lint-baseline.md            |   7 +
 docs/i18n-contributing.md                          |  11 +
 .../dashboard/app/components/ActiveAgentsPanel.tsx |   2 +-
 .../dashboard/app/components/AgentDetailView.tsx   |   2 +-
 packages/dashboard/app/components/Board.tsx        |  19 +-
 packages/dashboard/app/components/ChatView.tsx     |   2 +-
 .../dashboard/app/components/ComposeChatPanel.tsx  |  14 +-
 packages/dashboard/app/components/DockTaskList.tsx |  16 +-
 .../dashboard/app/components/FloatingWindow.tsx    |   6 +-
 .../dashboard/app/components/GitHubImportModal.tsx |   4 +-
 .../dashboard/app/components/KnowledgeGraphPanel.tsx |  21 +-
 packages/dashboard/app/components/ListView.tsx     |   2 +-
 .../app/components/MailboxArtifactAttachment.tsx   |  16 +-
 packages/dashboard/app/components/MailboxModal.tsx |  12 +-
 .../app/components/MailboxStructuralItem.tsx       |  13 +-
 .../app/components/MailboxTaskProposal.tsx         |  10 +-
 .../app/components/MailboxTaskRecommendations.tsx  |  12 +-
 packages/dashboard/app/components/MailboxView.tsx  |  14 +-
 packages/dashboard/app/components/MermaidDiagram.tsx |   4 +-
 packages/dashboard/app/components/MeshTopology.tsx |   6 +-
 .../dashboard/app/components/MessageComposer.tsx   |  24 +-
 .../app/components/NativeStructurePreview.tsx      |  14 +-
 packages/dashboard/app/components/ProviderLoginDialog.tsx |  24 +-
 packages/dashboard/app/components/ReportActionMenu.tsx |   6 +-
 packages/dashboard/app/components/ReportModal.tsx  |  26 +-
 packages/dashboard/app/components/TaskChatTab.tsx  |  10 +-
 packages/dashboard/app/components/TaskDetailModal.tsx |  28 +-
 .../app/components/TaskVerificationStatus.tsx      |  10 +-
 .../dashboard/app/components/WhatsAppChatPairingPanel.tsx |  38 +-
 .../components/command-center/CommandCenter.tsx    |   4 +-
 .../components/command-center/IdeationPanel.tsx    |  12 +-
 .../components/settings/sections/McpServersCard.tsx |   2 +-
 .../components/settings/sections/MemorySection.tsx |   4 +-
 .../app/task-modal-touch-resize-e2e-fixture.tsx    |  28 +-
 packages/i18n/locales/en/app.json                  | 247 +++++++-
 packages/i18n/locales/es/app.json                  | 256 +++++++-
 packages/i18n/locales/fr/app.json                  | 256 +++++++-
 packages/i18n/locales/ko/app.json                  | 256 +++++++-
 packages/i18n/locales/pt-BR/app.json               | 705 ++++++++++++++++++++
 packages/i18n/locales/zh-CN/app.json               | 256 +++++++-
 packages/i18n/locales/zh-TW/app.json               | 256 +++++++-
 .../i18n/src/__tests__/i18n-lint-baseline.test.ts  |  31 +
 packages/i18n/src/resources.d.ts                   | 229 ++++++-
 43 files changed, 2627 insertions(+), 288 deletions(-)

Fusion-Task-Id: FN-013
Fusion-Task-Lineage: 846ac221-c7c3-4ff0-a30d-69479b614765
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
561e0f4cd8 FN-015: remove legacy lane-columns CSS
Remove the retired lane compatibility selector while preserving live Board scrolling and overscroll behavior.

- Remove legacy .lane-columns styling from Lane.css.
- Update mobile Board regression fixtures and solution documentation for current workflow-column paths.
- Add a patch changeset documenting the internal cleanup.

Files changed:
 .changeset/fn-015-removal.md                       |  7 ++++
 ...-board-ios-horizontal-overscroll-containment.md | 32 +++++++++--------
 .../__tests__/board-mobile-column-swipe.test.ts    | 11 +++---
 .../__tests__/board-mobile-overscroll-containment.test.ts | 28 ++++++++-------
 packages/dashboard/app/components/Lane.css         | 41 +++-------------------
 5 files changed, 51 insertions(+), 68 deletions(-)

Fusion-Task-Id: FN-015

Fusion-Task-Lineage: 78128638-a319-4589-8cdd-a6497efe226f

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
c0966fb3c2 FN-010: animate mobile board column releases
Smooth mobile Board releases now settle continuously on the existing reachable column target.

- Animate directional and nearest-column corrections with safe immediate fallbacks.
- Cancel in-flight settling and restore styles on unmount while preserving snap wiring.
- Update regression coverage, mobile board documentation, and the published fix changeset.

Files changed:
 .changeset/fn-010-smooth-mobile-board-release.md   |   7 ++
 docs/dashboard-guide.md                            |   5 +-
 .../app/components/__tests__/board-mobile.test.tsx |   3 +-
 .../hooks/__tests__/useColumnScrollSnap.test.ts    | 109 +++++++++++++++++++--
 .../dashboard/app/hooks/useColumnScrollSnap.ts     |  46 ++++++---
 5 files changed, 146 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-010

Fusion-Task-Lineage: 16d3810b-8498-4436-8c41-12676778408a

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
c380e680a8 FN-014: scope session diffs to task-owned files
Scope rebase session diffs to files proven to belong to the task.

- Attribute rebase-range files to task commits before falling back to execution snapshots.
- Return empty diffs when ownership cannot be proven instead of exposing unrelated files.
- Add parity and route coverage plus a patch changeset.

Files changed:
 .changeset/fn-014-task-diff-attribution.md         |  7 ++
 .../TaskCard-TaskChangesTab-parity.test.tsx        | 42 ++++++++++
 .../dashboard/src/__tests__/routes-github.test.ts  | 90 +++++++++++++++++++++
 .../src/routes/register-session-diff-routes.ts     | 66 ++++++++++++----
 4 files changed, 188 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-014

Fusion-Task-Lineage: e5aebee9-4190-4f56-b386-9448b2ab7ffd

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
e0ffd31e83 FN-009: add desktop Board mouse-drag navigation
Add safe desktop click-drag panning to the Board while preserving existing card and touch interactions.

- Add the mouse-pan hook with pointer capture, intent threshold, and click suppression.
- Wire panning and cursor states into Board surfaces with regression coverage.
- Document the interaction and publish the feature changeset.

Files changed:
 .changeset/fn-009-board-mouse-pan.md               |   7 +
 docs/dashboard-guide.md                            |   2 +
 packages/dashboard/app/components/Board.css        |  11 ++
 packages/dashboard/app/components/Board.tsx        |  19 ++-
 .../app/components/__tests__/Board.test.tsx        |  78 +++++++++-
 .../app/hooks/__tests__/useBoardMousePan.test.tsx  | 164 +++++++++++++++++++++
 packages/dashboard/app/hooks/useBoardMousePan.ts   | 151 +++++++++++++++++++
 7 files changed, 429 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-009

Fusion-Task-Lineage: 0f0bee56-cbb8-4e8d-b866-51d439ab9655

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
c30d65080e FN-008: add Activity Feed log copying
Add a localized copy action for task Activity Feed logs with clipboard feedback and coverage.

- Add the Activity Feed copy control and styling to task details.
- Localize copy, success, and failure messages across supported locales.
- Cover clipboard states and regenerate translation resource types.

Files changed:
 .changeset/fn-008-copy-task-activity-logs.md       |   7 +
 .../dashboard/app/components/TaskDetailModal.css   |  52 ++++++
 .../dashboard/app/components/TaskDetailModal.tsx   |  70 +++++--
 .../__tests__/TaskDetailModal.test-helpers.ts      |   1 +
 .../components/__tests__/TaskDetailModal.test.tsx  | 202 ++++++++++++++++++++
 packages/i18n/locales/en/app.json                  |   4 +
 packages/i18n/locales/es/app.json                  |   9 +
 packages/i18n/locales/fr/app.json                  |   9 +
 packages/i18n/locales/ko/app.json                  |   9 +
 packages/i18n/locales/pt-BR/app.json               |   9 +
 packages/i18n/locales/zh-CN/app.json               |   9 +
 packages/i18n/locales/zh-TW/app.json               |   9 +
 packages/i18n/src/resources.d.ts                   |  11 +-
 13 files changed, 385 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-008
Fusion-Task-Lineage: 41574c1e-528e-499b-bec0-9cccfdf068de
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
6f91764f2e FN-005: remove duplicate planning move target
Prevent duplicate Planning menu entries for in-review task cards.

- Filter supplemental legacy move targets against declared visible workflow columns.
- Preserve legacy targets when workflow metadata is unavailable and cover default, legacy, hidden, and non-review menus.
- Add a patch changeset for the dashboard fix.

Files changed:
 .changeset/fn-005-duplicate-move-to-planning.md    |  7 ++
 packages/dashboard/app/components/TaskCard.tsx     | 33 +++-----
 .../app/components/__tests__/TaskCard.test.tsx     | 95 ++++++++++++++++++++++
 3 files changed, 112 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-005

Fusion-Task-Lineage: 6964d445-446c-449b-a606-a8fc3d87e34d

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
200b31089e FN-004: fix remote access token handoff
Ensure freshly generated Remote Access links authenticate against current global settings.

- Synchronize global-settings caches across token writers and readers
- Resolve remote-login tokens from canonical global settings
- Cover token handoff behavior and document persistent-token semantics

Files changed:
 .changeset/fn-004-remote-token-auth.md             |   7 +
 docs/remote-access.md                              |   6 +-
 .../core/src/__tests__/global-settings.test.ts     |  41 +++-
 .../postgres/settings-persistence.pg.test.ts       |  37 ++++
 packages/core/src/config/global-settings.ts        |  46 ++++-
 .../app/__tests__/auth-token-capture.test.ts       |  32 ++++
 .../app/__tests__/settings-save-split.test.ts      |   4 +
 .../src/__tests__/remote-login-handoff.test.ts     | 213 +++++++++++++++++++++
 .../src/__tests__/routes-remote-access.test.ts     |   4 +
 .../src/routes/register-settings-memory-routes.ts  |   9 +
 packages/dashboard/src/server.ts                   |  10 +-
 11 files changed, 400 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-004

Fusion-Task-Lineage: 1a64c345-a590-474e-afbf-af5e5d6df979

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
d45c80d7f3 FN-006: label Cloudflare tunnel URLs accurately
Label remote access URLs with terminology that matches the active tunnel provider.

- derive share URL labels from the running remote provider
- add Cloudflare and neutral tunnel label translations and generated i18n types
- cover Cloudflare, Tailscale, and unknown-provider URL labels
- add a patch changeset for the corrected remote-access terminology

Files changed:
 .changeset/fn-006-remote-url-label.md              |  7 ++++++
 .../SettingsModal.remote-notifications.test.tsx    | 28 ++++++++++++++++++++--
 .../components/settings/sections/RemoteSection.tsx | 21 +++++++++++-----
 packages/i18n/locales/en/app.json                  |  2 ++
 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               |  4 +++-
 packages/i18n/locales/zh-CN/app.json               |  4 +++-
 packages/i18n/locales/zh-TW/app.json               |  4 +++-
 packages/i18n/src/resources.d.ts                   | 21 +++++++++++++---
 11 files changed, 86 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-006

Fusion-Task-Lineage: a34a3c77-11ab-4f73-a264-9776e75edfae

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
cc6f389e71 FN-003: consolidate model overrides and Docker tooling
Consolidate model override settings while adding supported operator tools to the Docker image.

- Group project and workflow model overrides in the Settings interface with updated search metadata, translations, tests, and documentation.
- Install gh, tailscale, and cloudflared from signed vendor repositories and cover the Docker configuration.
- Add release changesets for the settings and container capabilities.

Files changed:
 .changeset/docker-operator-tooling.md              |   7 +
 .changeset/fn-003-model-override-organization.md   |   7 +
 Dockerfile                                         |  36 ++++-
 docs/dashboard-guide.md                            |   6 +-
 docs/settings-reference.md                         |   9 +-
 .../app/__tests__/settings-sections.test.tsx       |  10 ++
 .../__tests__/SettingsModal.models-auth.test.tsx   |   2 +-
 .../settings/sections/GlobalModelsSection.tsx      |  16 +-
 .../settings/sections/ProjectModelsSection.tsx     | 171 +++++++++++----------
 packages/dashboard/src/shared/settings-sections.ts |   6 +-
 packages/i18n/locales/en/app.json                  |   5 +
 .../dockerfile-workspace-manifests.test.mjs        |  22 +++
 12 files changed, 200 insertions(+), 97 deletions(-)

Fusion-Task-Id: FN-003

Fusion-Task-Lineage: 4df75b7f-f8dd-472c-b343-d06800d6c615

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
2758d84958 FN-002: expose Remote Access in basic settings
Make Remote Access available in Basic Settings and equip container agents with ripgrep.

- Classify Remote Access as basic-visible in shared Settings metadata and cover desktop, mobile, search, and API surfaces.
- Install ripgrep in the Docker runner and add a patch changeset plus image assertion.

Files changed:
 .changeset/docker-ship-ripgrep.md                   |  7 +++++++
 Dockerfile                                          |  5 ++++ -
 packages/dashboard/app/components/__tests__/SettingsModal.general.test.tsx | 21 +++++++++++++++++++++
 packages/dashboard/app/components/__tests__/settings-mobile.test.tsx | 18 ++++++++++++++++++
 packages/dashboard/app/components/__tests__/ui-metadata-sync.test.ts | 18 ++++++++++++++++++
 packages/dashboard/src/routes/__tests__/register-ui-metadata-routes.test.ts | 1 +
 packages/dashboard/src/shared/settings-sections.ts  |  4 +++-
 scripts/__tests__/dockerfile-workspace-manifests.test.mjs | 5 +++++
 8 files changed, 77 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-002

Fusion-Task-Lineage: 750827fb-4fa2-4a57-9368-cb81e2ac0936

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
643a4098ab FN-001: add Velvet dashboard color theme
Add the Velvet plum/burgundy theme across dashboard and desktop startup.

- Register Velvet in persisted theme options and pre-hydration validators
- Define dark/light palette tokens, selector swatch, and regression coverage
- Document the theme and add a minor CLI changeset

Files changed:
 .changeset/fn-001-velvet-theme.md                  |   6 ++
 docs/dashboard-guide.md                            |   5 +-
 docs/settings-reference.md                         |   2 +-
 packages/core/src/types/ui/execution-and-ui.ts     |   2 +
 .../dashboard/app/__tests__/velvet-theme.test.ts   | 101 +++++++++++++++++++++
 .../dashboard/app/components/ThemeSelector.css     |  14 +++
 packages/dashboard/app/components/themeOptions.ts  |   1 +
 packages/dashboard/app/index.html                  |   2 +-
 packages/dashboard/app/public/theme-data.css       |  86 +++++++++++++++++-
 packages/desktop/src/renderer/index.html           |   1 +
 10 files changed, 215 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-001
Fusion-Task-Lineage: a57d7458-b598-48e3-b4ed-cc082f32197d
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
gsxdsm
3dea1bb851 FN-9172: isolate executor run-audit emissions
Keep executor lifecycle transitions moving when run-audit sinks fail or stall.

- Add a shared bounded, best-effort executor audit emission seam.
- Route executor lifecycle audit writes through sink isolation.
- Cover absent, throwing, rejecting, hanging, and late-settling sinks.
- Document the emitter policy and publish a patch changeset.

Files changed:
 .changeset/fn-9172-executor-run-audit-isolation.md |   7 +
 AGENTS.md                                          |   7 +
 docs/run-audit.md                                  |   6 +-
 .../src/__tests__/emit-bounded-run-audit.test.ts   |  58 +++++
 .../executor-run-audit-emitter-isolation.test.ts   | 252 +++++++++++++++++++++
 .../src/executor/acquire-session-registry-path.ts  |   5 +-
 .../engine/src/executor/completion-finalization.ts |   3 +-
 .../engine/src/executor/create-task-done-tool.ts   |   3 +-
 .../engine/src/executor/emit-bounded-run-audit.ts  |  48 ++++
 .../executor/emit-merge-boundary-unproven-audit.ts |  68 ++----
 .../engine/src/executor/execute-workflow-graph.ts  |   5 +-
 .../engine/src/executor/handle-graph-failure.ts    |  18 +-
 ...dle-stale-in-review-parse-pause-abort-replay.ts |   7 +-
 ...ndle-stale-in-review-plan-pause-abort-replay.ts |   7 +-
 .../maybe-dispatch-workflow-work-engine.ts         |   7 +-
 .../src/executor/no-merge-complete-column.ts       |   3 +-
 .../reenter-paused-aborted-workflow-node.ts        |   7 +-
 .../src/executor/required-artifact-recovery.ts     |   3 +-
 packages/engine/src/executor/run-implementation.ts |   5 +-
 19 files changed, 433 insertions(+), 86 deletions(-)

Fusion-Task-Id: FN-9172

Fusion-Task-Lineage: 80c67c36-3bbb-4274-ac4c-9808c4cda3ce

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 20:35:19 -07:00
gsxdsm
84d9a59e7e FN-9169: retry Windows worktree cleanup failures
Make clean-room removal resilient to transient Windows filesystem locks without weakening worktree ownership safeguards.

- add bounded errno-based directory removal retries with Windows read-only recovery
- reuse cleanup retries across AI merge teardown, self-healing sweeps, and native backend fallback
- preserve residual registrations and expose retry outcomes through cleanup audit metadata
- cover retry, idempotency, residual, and ownership-aware cleanup behavior

Files changed:
 .../fn-9169-windows-ai-merge-worktree-cleanup.md   |   7 +
 docs/architecture.md                               |   4 +-
 .../engine/src/__tests__/merger-ai-cleanup.test.ts | 195 ++++++++++++++++++++-
 .../__tests__/self-healing-tempdir-sweep.test.ts   | 109 ++++++++++--
 .../engine/src/__tests__/worktree-backend.test.ts  |  39 ++++-
 .../src/__tests__/worktree-removal-retry.test.ts   |  64 +++++++
 packages/engine/src/merge/merger-ai-worktree.ts    | 103 ++++++-----
 packages/engine/src/self-healing.ts                |  26 ++-
 packages/engine/src/worktree/worktree-backend.ts   |  15 +-
 .../engine/src/worktree/worktree-removal-retry.ts  | 110 ++++++++++++
 10 files changed, 592 insertions(+), 80 deletions(-)

Fusion-Task-Id: FN-9169

Fusion-Task-Lineage: 4719bd4f-27bf-4a2b-8f31-350658523127

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 20:25:18 -07:00
gsxdsm
7ded57e550 FN-9167: clear interrupted manual merge status
Prevent interrupted manual merges from leaving tasks stranded in a transient merging state.

- track locally owned merge stamps and clear them through fenced abort cleanup
- handle SIGINT, SIGTERM, and SIGHUP for foreground task merges with documented exit behavior
- reconcile only age-proven orphan stamps before manual CLI and UI-only dashboard merges
- cover merge stamp authorization, signal cleanup, and mock completeness with regression tests
- add a patch changeset and operator documentation

Files changed:
 .../fn-9167-interrupted-manual-merge-stamp.md      |   7 +
 docs/cli-reference.md                              |   1 +
 docs/task-management.md                            |   2 +-
 .../task-command-github-import-tracking.test.ts    |   3 +
 packages/cli/src/commands/__tests__/task.test.ts   | 179 +++++-
 packages/cli/src/commands/dashboard.ts             |   3 +
 packages/cli/src/commands/task.ts                  | 138 +++--
 .../merge-orphan-durable-write-inventory.json      | 608 +++++++++++----------
 .../src/__tests__/merge-active-status.test.ts      |  49 ++
 packages/engine/src/index.ts                       |   2 +
 .../engine/src/merge/clear-orphaned-merge-stamp.ts |  80 +++
 packages/engine/src/merge/merger-ai.ts             |  12 +
 packages/engine/src/project-engine.ts              |  20 +-
 13 files changed, 735 insertions(+), 369 deletions(-)

Fusion-Task-Id: FN-9167

Fusion-Task-Lineage: 554380e2-ce55-4e7a-89fd-f5c24341937b

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 20:17:42 -07:00
gsxdsm
416c6a0215 FN-9170: Preserve structured merge failure sentinels
Keep merge-unavailable intact across workflow merge dispatch so graph routing receives the engine's structured result.

- preserve merge-unavailable alongside implementation-incomplete during primitive classification
- cover direct and legacy merge paths, audit context, normalization, and non-terminal retry behavior
- document the structured sentinel invariant and add a patch changeset

Files changed:
 .changeset/fn-9170-merge-unavailable.md            |   7 ++
 docs/architecture.md                               |   2 +
 .../merge-unavailable-classification.test.ts       | 113 +++++++++++++++++++++
 .../src/__tests__/workflow-merge-nodes.test.ts     |  47 ++++++++-
 .../engine/src/workflows/workflow-merge-nodes.ts   |  13 ++-
 5 files changed, 176 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-9170

Fusion-Task-Lineage: 99cc501f-8a25-49f5-b81a-74dd2e6e872b

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 20:08:05 -07:00
gsxdsm
2a31505823 FN-9163: Add repositories to existing workspace tasks
Enable validated workspace membership additions and make active tasks discover new repositories safely.

- add idempotent direct-child Git repository validation and workspace configuration updates
- expose repository discovery and addition through Settings and dashboard API routes
- refresh workspace membership during acquisition while blocking additions after review or landing begins
- document the workflow and cover core, dashboard, and engine behavior with focused tests

Files changed:
 .changeset/fn-9163-workspace-add-repo.md           |   7 ++
 docs/dashboard-guide.md                            |   2 +
 docs/settings-reference.md                         |   2 +-
 docs/workspaces.md                                 |  12 +-
 .../core/src/__tests__/workspace-add-repo.test.ts  |  12 ++
 packages/core/src/git/git-repository.ts            |  68 ++++++++++-
 packages/core/src/index.gate.ts                    |   3 +
 packages/core/src/index.ts                         |   3 +
 packages/dashboard/app/api/agents/agents.ts        |  11 +-
 .../settings/sections/GeneralSection.tsx           |   3 +
 .../settings/sections/WorkspaceReposCard.css       |   6 +
 .../settings/sections/WorkspaceReposCard.tsx       |  46 ++++++++
 .../__tests__/workspace-repos-card.test.tsx        |  49 ++++++++
 .../src/__tests__/workspace-add-repo-route.test.ts |  65 ++++++++++
 .../dashboard/src/routes/register-git-github.ts    |  35 +++++-
 .../__tests__/workspace-add-repo-midflight.test.ts | 131 +++++++++++++++++++++
 packages/engine/src/agent-tools.ts                 |  27 ++++-
 packages/engine/src/executor/deps-bags.ts          |  44 ++++++-
 packages/engine/src/executor/run-implementation.ts |   2 +
 19 files changed, 512 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-9163

Fusion-Task-Lineage: 7456f55f-b7c8-4076-994f-42994d8babb0

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 19:59:04 -07:00
gsxdsm
3b0a6b795f FN-9162: Group workspace worktrees under configurable roots
Configure collision-safe workspace and repository subfolders beneath custom worktree roots.

- add shared workspace layout helpers and export them through runtime and gate barrels
- route acquisition, pinning, cleanup, archive, and extension discovery through grouped paths
- allow absolute worktree roots in settings and document the workspace layout
- protect shared-root containers from destructive sweeps and cover multi-repository behavior

Files changed:
 .changeset/fn-9162-workspace-worktree-root.md      |   7 ++
 docs/settings-reference.md                         |   2 +-
 docs/workspaces.md                                 |   6 ++
 .../extension-workspace-worktree-root.test.ts      |  81 +++++++++++++++++
 packages/cli/src/extension.ts                      |  53 ++++++++++-
 packages/core/src/__tests__/pi-extensions.test.ts  |  46 +++++++++-
 .../core/src/__tests__/worktree-layout.test.ts     |  49 ++++++++++
 packages/core/src/index.gate.ts                    |  13 +++
 packages/core/src/index.ts                         |   9 ++
 packages/core/src/plugins/pi-extensions.ts         |  12 ++-
 packages/core/src/task-store/archive-lifecycle.ts  |  11 +--
 packages/core/src/tasks/worktree-layout.ts         |  77 ++++++++++++++++
 .../dashboard/app/components/SettingsModal.tsx     |   4 +-
 .../settings/sections/WorktreesSection.tsx         |   2 +-
 .../worktree-acquisition-workspace.test.ts         |  55 ++++++++++-
 .../engine/src/__tests__/worktree-paths.test.ts    |  19 +++-
 .../engine/src/__tests__/worktree-pinning.test.ts  |  17 ++++
 .../engine/src/__tests__/worktree-pool.test.ts     |  19 +++-
 .../src/executor/workspace-main-checkout-guard.ts  |   2 +-
 packages/engine/src/self-healing.ts                |  20 +++-
 .../engine/src/worktree/worktree-acquisition.ts    | 101 +++++++++++++++------
 packages/engine/src/worktree/worktree-names.ts     |  14 +--
 packages/engine/src/worktree/worktree-paths.ts     |  75 ++++++++++++---
 packages/engine/src/worktree/worktree-pinning.ts   |  10 +-
 packages/engine/src/worktree/worktree-pool.ts      |  44 ++++++---
 25 files changed, 656 insertions(+), 92 deletions(-)

Fusion-Task-Id: FN-9162

Fusion-Task-Lineage: b5f5e247-577c-4357-9ffe-97e2447b4fd4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 19:46:35 -07:00
gsxdsm
5ba0b0cffc FN-9168: Record terminal merge-boundary parks in run audit
Add failure-isolated audit visibility for merge-boundary proof failures without changing terminal park behavior.

- Emit a redacted event from retry-boundary and graph-terminal park paths.
- Bound audit sink latency and isolate absent, throwing, rejecting, or hung sinks.
- Add reason-code coverage, catalogue documentation, and a patch changeset.

Files changed:
 .changeset/fn-9168-merge-boundary-audit.md         |  7 ++
 AGENTS.md                                          |  1 +
 docs/run-audit.md                                  |  1 +
 .../src/__tests__/executor-graph-boundary.test.ts  | 33 ++++++---
 .../__tests__/merge-boundary-unproven-park.test.ts | 78 +++++++++++++++++++-
 .../executor/emit-merge-boundary-unproven-audit.ts | 82 ++++++++++++++++++++++
 .../engine/src/executor/handle-graph-failure.ts    | 23 +++++-
 .../executor/route-graph-merge-failure-to-retry.ts | 36 +++++++++-
 .../engine/src/executor/workflow-merge-boundary.ts | 38 ++++++++--
 .../engine/src/run-audit/run-audit-catalogue.ts    |  5 +-
 packages/engine/src/util/run-audit.ts              | 10 +++
 11 files changed, 293 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-9168

Fusion-Task-Lineage: cdeb5c1f-4b22-4531-878e-b18955e6ea5a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 19:34:53 -07:00
gsxdsm
d280fa6f54 FN-9166: preserve implementation-incomplete merge failures
Keep structured incomplete-implementation failures intact so graph recovery can resume or fail closed without retrying a no-op merge.

- Preserve normalized implementation-incomplete reasons during direct merge-attempt classification.
- Cover primitive, legacy seam, resumable, fail-closed, and cancellation paths.
- Document the merge-boundary invariant and add a patch changeset.

Files changed:
 .../fn-9166-preserve-implementation-incomplete.md  |  7 ++
 docs/architecture.md                               |  2 +-
 .../merge-node-paused-abort-retryable.test.ts      | 76 ++++++++++++++++++++++
 .../__tests__/workflow-merge-cancellation.test.ts  | 15 ++++-
 .../src/__tests__/workflow-merge-nodes.test.ts     | 46 +++++++++++++
 .../engine/src/workflows/workflow-merge-nodes.ts   | 13 +++-
 6 files changed, 155 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-9166

Fusion-Task-Lineage: 1b7946bf-62e3-42f0-8c8c-09230fef22bb

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 19:12:28 -07:00
gsxdsm
ef35fb8e5a FN-9164: select per-repository workspace base branches
Workspace worktrees now honor and persist the appropriate base branch for each sub-repository throughout their lifecycle.

- Resolve requested bases per repository, normalize remote-only refs, and fall back safely to repository integration branches.
- Reuse recorded bases for landing, recovery, and revert flows with privacy-safe audit breadcrumbs.
- Surface base and fallback details in task UI, documentation, tests, and release notes.

Files changed:
 .changeset/fn-9164-workspace-base-branch.md        |   7 +
 AGENTS.md                                          |   1 +
 docs/task-management.md                            |   2 +-
 docs/workspaces.md                                 |   8 +-
 packages/core/src/types/task/task-core.ts          |  12 ++
 .../dashboard/app/components/TaskDetailModal.css   |  14 ++
 .../app/components/WorkspaceWorktreesSummary.tsx   |   2 +
 .../__tests__/WorkspaceWorktreesSummary.test.tsx   |  13 ++
 .../src/routes/register-task-workflow-routes.ts    |   2 +
 .../task-revert.workspace.real-git.test.ts         |  25 +++
 .../src/__tests__/workspace-base-branch.test.ts    |  93 +++++++++++
 .../worktree-acquisition-workspace.test.ts         |  27 ++++
 packages/engine/src/execution/task-revert.ts       |  58 +++++--
 packages/engine/src/merge/merger-ai.ts             |  30 +++-
 packages/engine/src/self-healing.ts                |  50 +++++-
 packages/engine/src/util/run-audit.ts              |   6 +
 .../engine/src/worktree/workspace-base-branch.ts   | 180 +++++++++++++++++++++
 .../engine/src/worktree/worktree-acquisition.ts    |  62 ++++---
 18 files changed, 548 insertions(+), 44 deletions(-)

Fusion-Task-Id: FN-9164

Fusion-Task-Lineage: 487a1c77-32cb-47dd-bf43-297a146951ba

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 18:57:33 -07:00