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
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
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
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
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
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
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
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
gsxdsm
179f08c2d4
FN-9158: recover Windows antivirus-blocked PostgreSQL payloads
...
Recover quarantined or truncated embedded PostgreSQL runtime files and explain Windows Defender remediation.
- Validate materialized payload inventory with v3 markers and repair mismatches atomically.
- Surface actionable error 4551 diagnostics through startup failures.
- Add regression coverage, operator documentation, and a patch changeset.
Files changed:
...-9158-windows-av-blocked-embedded-pg-payload.md | 7 +
...ndows-antivirus-blocks-embedded-postgres-dll.md | 27 +++
docs/storage.md | 4 +
.../__tests__/postgres/embedded-lifecycle.test.ts | 139 +++++++++++++-
.../src/__tests__/postgres/startup-factory.test.ts | 19 ++
packages/core/src/postgres/embedded-lifecycle.ts | 208 ++++++++++++++++++++-
packages/core/src/postgres/startup-factory.ts | 30 +--
7 files changed, 414 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-9158
Fusion-Task-Lineage: ec2c97d7-0797-49c1-b875-6b147ff26917
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 18:50:27 -07:00
gsxdsm
944ca642ee
FN-9154: add fail-closed PostgreSQL hygiene reporting
...
Add an offline PostgreSQL cluster-hygiene report that records trustworthy campaign admission evidence.
- Parse provenance envelopes and fail closed on missing, malformed, cross-cluster, or stale-marker evidence.
- Classify campaign databases and owner liveness without authorizing destructive cleanup.
- Document the capture workflow and cover measured, malformed, liveness, marker, and unrelated-name cases.
Files changed:
docs/testing.md | 27 +++
.../pg-cluster-hygiene-report/count-mismatch.txt | 9 +
.../fixtures/pg-cluster-hygiene-report/empty.txt | 0
.../pg-cluster-hygiene-report/liveness-absent.txt | 7 +
.../pg-cluster-hygiene-report/liveness-alive.txt | 8 +
.../pg-cluster-hygiene-report/liveness-dead.txt | 8 +
.../pg-cluster-hygiene-report/malformed.txt | 11 ++
.../pg-cluster-hygiene-report/markers-stale.txt | 8 +
.../fixtures/pg-cluster-hygiene-report/mixed.txt | 17 ++
.../pg-cluster-hygiene-report/no-banner.txt | 1 +
.../pg-cluster-hygiene-report/post-state.txt | 7 +
.../pg-cluster-hygiene-report/pre-state.txt | 8 +
.../pg-cluster-hygiene-report/truncated.txt | 7 +
.../__tests__/pg-cluster-hygiene-report.test.mjs | 171 +++++++++++++++++
scripts/pg-cluster-hygiene-report.mjs | 212 +++++++++++++++++++++
15 files changed, 501 insertions(+)
Fusion-Task-Id: FN-9154
Fusion-Task-Lineage: fca5a025-9460-4850-8ac9-891d563b3d04
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 18:44:29 -07:00
gsxdsm
7b55a02e51
FN-9157: fix workflow merge boundary proof and retry routing
...
Make workflow merge admission accept valid foreach completion and terminate retries when proof is unavailable.
- Treat fully terminal live foreach steps as implementation proof for Review Level 0 workflows.
- Preserve merge-boundary-unproven as a terminal graph failure and park blocked retries visibly.
- Add unit, graph-boundary, and PostgreSQL regression coverage plus operator documentation and a patch changeset.
Files changed:
.changeset/fn-9157-merge-boundary.md | 7 +++
docs/architecture.md | 4 ++
docs/workflow-steps.md | 6 ++
.../src/__tests__/workflow-merge-proof.test.ts | 11 +++-
packages/core/src/workflow-merge-proof.ts | 20 +++++--
.../src/__tests__/executor-graph-boundary.test.ts | 64 +++++++++++++++++++++-
...xecutor-merge-boundary-foreach-proof.pg.test.ts | 10 ++++
.../__tests__/merge-boundary-unproven-park.test.ts | 48 ++++++++++++++++
.../create-authoritative-workflow-primitives.ts | 13 ++++-
.../create-authoritative-workflow-seams.ts | 6 +-
.../executor/evaluate-workflow-merge-boundary.ts | 18 +++++-
.../executor/route-graph-merge-failure-to-retry.ts | 26 ++++++++-
packages/engine/src/executor/task-predicates.ts | 2 +
.../engine/src/executor/workflow-merge-boundary.ts | 29 +++++++---
.../engine/src/workflows/workflow-merge-nodes.ts | 13 +++++
15 files changed, 253 insertions(+), 24 deletions(-)
Fusion-Task-Id: FN-9157
Fusion-Task-Lineage: 7c68dfe2-28fb-4353-9ae6-df0ddbaf799a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 18:16:49 -07:00
gsxdsm
7dfce1cc16
FN-9160: Prevent draft storage quota exhaustion
...
Make browser draft restoration best-effort so oversized or quota-blocked writes never interrupt task creation.
- cap free-text draft persistence at 64,000 bytes and warn once when restoration is unavailable
- make scoped storage operations throw-safe with bounded retries and stale volatile-state reclamation
- extend quota, composer, modal persistence, and chat draft coverage and document the storage policy
- add a patch changeset for the operator-facing fix
Files changed:
.changeset/fn-9160-quick-entry-quota.md | 7 ++
docs/storage.md | 31 +++---
.../dashboard/app/components/InlineCreateCard.tsx | 25 ++++-
.../dashboard/app/components/QuickEntryBox.tsx | 25 ++++-
.../components/__tests__/ChatView.draft.test.tsx | 36 +++++-
.../components/__tests__/InlineCreateCard.test.tsx | 20 ++++
.../components/__tests__/QuickEntryBox.test.tsx | 36 +++++-
.../app/hooks/__tests__/modalPersistence.test.ts | 28 +++--
packages/dashboard/app/hooks/modalPersistence.ts | 29 ++---
.../app/utils/__tests__/projectStorage.test.ts | 88 ++++++++++++++-
packages/dashboard/app/utils/projectStorage.ts | 122 +++++++++++++++++++--
11 files changed, 384 insertions(+), 63 deletions(-)
Fusion-Task-Id: FN-9160
Fusion-Task-Lineage: 63481936-91f1-4e7a-b27c-c3c5f49014dd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 18:08:55 -07:00
gsxdsm
fb77eef7a9
FN-9150: Capture abandoned PostgreSQL timeout boundaries
...
Capture elapsed and join evidence for PostgreSQL test boundaries that Vitest abandons before settlement.
- emit unique boundary join keys, progress ladders, terminal records, and payload-free watchdog breaches
- classify ladder-only, breach, and unobservable lifecycle evidence in the loaded-failure census
- cover abandoned and superseded body windows and document the corrective campaign findings
Files changed:
...res-loaded-lane-unrelated-failure-population.md | 33 ++++++-
docs/testing.md | 14 ++-
.../__test-utils__/pg-timeout-boundary-observer.ts | 108 ++++++++++++++++++---
.../__tests__/pg-timeout-boundary-observer.test.ts | 98 ++++++++++++++++++-
.../__tests__/pg-loaded-failure-census.test.mjs | 30 ++++++
scripts/pg-loaded-failure-census.mjs | 71 ++++++++++++--
6 files changed, 327 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-9150
Fusion-Task-Lineage: fc2e9f99-7739-4d86-99f4-713a78f53e57
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 10:10:39 -07:00
gsxdsm
a1977e052b
FN-9149: Add PostgreSQL timeout-boundary diagnostics
...
Instrument the opt-in PostgreSQL test harness to attribute loaded-lane timeout failures without changing default behavior.
- Add bounded setup, body, and teardown watchdog probes with host, cluster, and template evidence.
- Wire observer records into the harness and loaded-failure census with explicit suppression and attribution handling.
- Cover observer inertness, boundary behavior, and census joins while documenting the 27-worker campaign findings.
Files changed:
...res-loaded-lane-unrelated-failure-population.md | 31 +-
docs/testing.md | 27 ++
.../core/src/__test-utils__/pg-test-harness.ts | 113 +++++-
.../__test-utils__/pg-timeout-boundary-observer.ts | 451 +++++++++++++++++++++
.../pg-test-harness-observer-inertness.test.ts | 31 ++
.../__tests__/pg-timeout-boundary-observer.test.ts | 177 ++++++++
.../__tests__/pg-loaded-failure-census.test.mjs | 31 ++
scripts/pg-loaded-failure-census.mjs | 101 ++++-
8 files changed, 934 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-9149
Fusion-Task-Lineage: 4df4ee28-5369-41ae-bb0c-e7e9ae78d873
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 08:41:14 -07:00
gsxdsm
161edaa694
FN-9148: add PostgreSQL loaded-failure census
...
Add retained-log census tooling and evidence for PostgreSQL loaded-lane timeout investigations.
- Parse complete Vitest logs and optional diagnostics without opening PostgreSQL or running tests.
- Classify failing files, lifecycle positions, failure shapes, backend headroom, waits, and watchdog data.
- Cover high-failure, healthy, malformed-diagnostics, and truncated-log cases with fixtures.
- Document the reproduced population, unsupported remedies, and successor measurement requirements.
Files changed:
...res-loaded-lane-unrelated-failure-population.md | 80 ++++++++++
docs/testing.md | 8 +
.../fixtures/pg-loaded-failure-census/high-run.txt | 77 +++++++++
.../fixtures/pg-loaded-failure-census/high.jsonl | 4 +
.../fixtures/pg-loaded-failure-census/low-run.txt | 4 +
.../pg-loaded-failure-census/truncated-run.txt | 2 +
.../__tests__/pg-loaded-failure-census.test.mjs | 65 ++++++++
scripts/pg-loaded-failure-census.mjs | 172 +++++++++++++++++++++
8 files changed, 412 insertions(+)
Fusion-Task-Id: FN-9148
Fusion-Task-Lineage: c632a9d0-b823-4416-ab46-0d834e850007
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 06:24:01 -07:00
gsxdsm
687990c0a6
FN-9146: document PostgreSQL flake campaign evidence
...
Document the bounded investigation results for active core PostgreSQL suite-only flakes.
- Record per-lane outcomes and sampled cluster-capacity evidence for entries 1, 2, and 7.
- Clarify reproduced, unreproduced, and unattributed statuses without changing quarantine policy.
- Ratchet campaign completeness, ownership, and documentation-link coverage in the register tests.
Files changed:
.../suite-only-flakes-observed-register.md | 71 +++++++++++++++++-
docs/testing.md | 4 +
scripts/__tests__/observed-flake-register.test.mjs | 85 ++++++++++++++++++++--
3 files changed, 148 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-9146
Fusion-Task-Lineage: d5de3fac-48d6-4ee7-ae09-173007d234e5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 05:38:54 -07:00
gsxdsm
91daa37162
FN-9147: synchronize script test baselines
...
Align script-test expectations and documentation with the current validator and dashboard test inventory.
- Add the pre-JSON anchor validator to the verify-fast baseline.
- Ratchet documented pretest validators against canonical order and membership.
- Remove deleted dashboard tests from timing data.
Files changed:
docs/testing.md | 22 +++++++++-
scripts/__tests__/verify-fast.test.mjs | 76 +++++++++++++++++++++++++++++++++-
scripts/test-timings.json | 2 -
3 files changed, 95 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-9147
Fusion-Task-Lineage: fdb33c60-e019-402b-b91b-ba0f0f971350
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 05:23:41 -07:00
gsxdsm
ed2cbd08a1
FN-9145: clarify active flake register states
...
Reorganize the suite-only flake register around its current decision state.
- Separate active observations, gate evictions, and archived closed records while preserving entry anchors.
- Mark entry 1 as an escalated second sighting and restore FN-9126/FN-9131, FN-9128, and FN-9127 ownership.
- Add regression checks for active counts, exact states and owners, and testing-guide anchors.
Files changed:
.../suite-only-flakes-observed-register.md | 189 +++++++++++++--------
scripts/__tests__/observed-flake-register.test.mjs | 65 +++++++
2 files changed, 181 insertions(+), 73 deletions(-)
Fusion-Task-Id: FN-9145
Fusion-Task-Lineage: 39b3292a-db48-4be4-878c-7d2b026abae3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-19 04:16:48 -07:00
ischindl
72877c8cf9
fix(RUFU-074): idle backoff + jitter for the task-deleted outbox consumer ( #3471 )
...
**Problem:** Each dashboard/engine project consumer polled
`task_deleted` outbox on a fixed 5s setInterval, so ~44 per-project
consumers thundered together on the same cadence — an idle DB query
storm and CPU hot-spot even when projects were paused/idle.
**Fix:** The outbox consumer reschedules itself from each poll outcome:
an idle poll (zero events) grows the next delay by
`TASK_DELETED_OUTBOX_BACKOFF_STEP_MS` toward `MAX_POLL_MS`, with ±20%
jitter so the consumers de-synchronize; a poll that delivered events
resets to the fast base. A paused/idle project drains its outbox and
backoff alone drops the DB load.
**Includes:** regression test (bounded jitter + idle growth),
performance changeset, solution doc, deploy handoff script.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Performance**
- Reduced unnecessary idle polling by gradually increasing the polling
interval, up to 60 seconds, with bounded timing variation.
- Restored the faster 5-second polling cadence when new events, waits,
or transient errors occur.
- Preserved event ordering, delivery guarantees, acknowledgements, and
independent behavior across concurrent consumers.
- **Documentation**
- Added guidance on polling behavior, deployment verification, and
monitoring targets.
- **Tests**
- Added coverage for backoff growth, jitter limits, event bursts,
concurrent consumers, error handling, retries, and clean shutdown.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-18 22:11:47 -07:00
ischindl
f195ff5b3d
feat(RUFU-081): add Prometheus-format /metrics system observability endpoint ( #3475 )
...
**Problem:** Fusion had no Prometheus-scrapeable metrics surface, so
production CPU/health/DB/fleet observability had to be inferred from
logs and ad-hoc monitoring.
**Fix:** Expose a Prometheus-text `/metrics` HTTP endpoint on the
dashboard with runtime + domain samplers: request latency quantiles
(p50/p95/max), last-request-age freeze indicator, CPU user/system,
RSS/heap, child-process spawn rates by kind, git children count, PG tps,
active/idle/total projects, running agents, and board task counts.
Scraped at 5s by the existing Prometheus/Grafana stack
(fusion-observability).
**Includes:** full test coverage for the Prometheus text parser and each
sampler.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added a public, unauthenticated `/metrics` endpoint with
Prometheus-formatted dashboard, runtime, process, database, and domain
metrics.
* Added request latency, resource usage, child-process, project
activity, agent, and task metrics.
* Metrics remain available in headless mode and provide stable snapshots
without triggering additional data writes or on-demand I/O.
* **Documentation**
* Documented metric families, sampling behavior, and degraded-operation
handling.
* **Tests**
* Added comprehensive coverage for collection, formatting, parsing,
endpoint behavior, and sampler lifecycle.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-18 22:11:22 -07:00
gsxdsm
f12b9f8463
fix: wait for the dev server rather than tunnelling a guessed port
...
When the dev child had not reported a bound port within 60s, the wrapper fell
back to the configured port and published a tunnel to it. In the case the
port fix exists for — a container whose own Fusion owns 4040 — that hands out
a dev-looking URL serving a completely different instance, with only a
passing "which may not be it" warning to show for it.
Observed with a dev server stopped on the interactive `Run central db now?
(Y/n)` prompt: it never listens, so it never reports, so the tunnel published
the container's Fusion instead.
A missing tunnel is a visible problem that explains itself; a tunnel to the
wrong app is a silent one. The wrapper now waits, unbounded, printing a
notice once a minute that names the interactive-prompt case. An explicit
--tunnel=PORT still publishes immediately, since it names a target the dev
child knows nothing about.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-18 20:38:48 -07:00