33f4797ceb7e99c90524efc30dbb217833596ceb
886 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
8b681775ae |
FN-122: fix local workspace integration across repositories
Make multi-repository workspace merges resolve and land against the correct local integration targets. - Add local integration-target resolution and durable merge-dispatch leasing. - Harden workspace merge fencing, failure handling, audit logging, and CLI/dashboard controls. - Document the workflow and add regression coverage for workspace integration and task-log deduplication. - Complete the CLI engine mock for the new public lease export. Files changed: .changeset/fn-122-local-workspace-integration.md | 7 + docs/architecture.md | 1 + docs/dashboard-guide.md | 4 + docs/settings-reference.md | 4 +- docs/testing.md | 10 ++ .../task-command-github-import-tracking.test.ts | 2 + packages/cli/src/commands/__tests__/task.test.ts | 1 + packages/cli/src/commands/dashboard.ts | 15 +- packages/cli/src/commands/task.ts | 14 +- .../__tests__/postgres/task-log-dedupe.pg.test.ts | 30 ++++ packages/core/src/index.ts | 2 +- packages/core/src/store.ts | 5 +- packages/core/src/task-store/audit-ops.ts | 38 ++++ packages/core/src/types.ts | 2 + packages/core/src/types/task/task-core.ts | 16 +- packages/core/src/types/task/task-log.ts | 2 + .../app/components/WorkspaceWorktreesSummary.tsx | 15 +- .../settings/sections/WorktreesSection.tsx | 3 +- .../engine/src/__tests__/workspace-e2e.test.ts | 198 ++++++++++++++++----- .../__tests__/workspace-integration-target.test.ts | 75 ++++++++ .../src/__tests__/workspace-merger-lease.test.ts | 42 ++++- packages/engine/src/index.ts | 6 + packages/engine/src/merge/merger-ai.ts | 152 +++++++++++----- packages/engine/src/merge/workspace-fence-ref.ts | 17 +- .../src/merge/workspace-integration-target.ts | 87 +++++++++ .../engine/src/merge/workspace-land-failure.ts | 6 +- .../src/merge/workspace-merge-dispatch-lease.ts | 54 ++++++ packages/engine/src/project-engine.ts | 25 +++ 28 files changed, 715 insertions(+), 118 deletions(-) Fusion-Task-Id: FN-122 Fusion-Task-Lineage: 9364bba4-cebc-44e7-b2ae-60967fbc025c Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
0b4dbd219b |
FN-125: prevent workflow agents from creating tasks
Stop workflow executor agents from creating ordinary tasks while preserving explicit self-spawned dependency handling. - Gate task creation by session identity and execution context. - Add self-spawned dependency support, validation, and persistence coverage. - Update agent prompts, tools, documentation, and CLI integration. - Add a published-package changeset. Files changed: .changeset/fn-125-removal.md | 7 +++ docs/agents.md | 2 +- docs/dashboard-guide.md | 2 +- docs/settings-reference.md | 6 +- .../cli/skill/fusion/references/engine-tools.md | 10 ++-- .../extension-task-execution-task-creation.test.ts | 70 ++++++++++++++++++++++ packages/cli/src/extension.ts | 49 +++++++++++++-- .../postgres/store-self-spawned-dep.pg.test.ts | 56 +++++++++++++++++ .../src/__tests__/self-spawned-dependency.test.ts | 18 ++++++ .../__tests__/session-identity-registry.test.ts | 14 ++++- packages/core/src/agents/agent-prompts.ts | 27 ++++----- .../src/agents/task-execution-task-creation.ts | 19 ++++++ packages/core/src/index.ts | 7 +++ packages/core/src/session-identity-registry.ts | 7 +++ packages/core/src/store.ts | 2 + packages/core/src/task-store/errors.ts | 21 +++++++ packages/core/src/task-store/task-update.ts | 10 +++- packages/core/src/task-store/update-task-deps.ts | 12 +++- .../__tests__/ephemeral-task-create-gate.test.ts | 18 +++--- .../src/__tests__/executor-review-verdicts.test.ts | 3 +- packages/engine/src/agent-tools.ts | 4 ++ packages/engine/src/agents/agent-runtime.ts | 2 + .../engine/src/execution/step-session-executor.ts | 15 ++--- .../executor/attempt-executor-verification-fix.ts | 1 + .../engine/src/executor/create-spawn-agent-tool.ts | 1 + .../engine/src/executor/create-task-done-tool.ts | 18 +++++- .../engine/src/executor/create-task-update-tool.ts | 12 +++- .../engine/src/executor/execute-workflow-step.ts | 1 + packages/engine/src/executor/run-implementation.ts | 18 +++--- packages/engine/src/executor/system-prompt.ts | 21 +++---- packages/engine/src/executor/task-add-dep-tool.ts | 14 ++++- packages/engine/src/pi.ts | 15 ++++- 32 files changed, 401 insertions(+), 81 deletions(-) Fusion-Task-Id: FN-125 Fusion-Task-Lineage: da3d69f6-c9cb-45fd-8691-3dfaf7007514 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
35f0247028 |
FN-115: restore task-card detail clicks
Restore native task-card activation while preserving intentional board panning. - Start board panning only after horizontal intent is established. - Preserve stationary card clicks and add regression coverage for detail locators and touch resizing. - Document the restored interaction behavior and publish a patch changeset. Files changed: .changeset/fn-115-restore-board-card-click.md | 7 ++ docs/dashboard-guide.md | 8 +- packages/dashboard/app/components/Board.tsx | 9 +- .../app/components/__tests__/Board.test.tsx | 47 ++++++--- .../__tests__/board-card-detail-locators.test.tsx | 108 +++++++++++++++++++++ .../app/hooks/__tests__/useBoardMousePan.test.tsx | 75 ++++++++++++++ packages/dashboard/app/hooks/useBoardMousePan.ts | 39 ++++++-- .../app/task-modal-touch-resize-e2e-fixture.tsx | 20 +++- .../task-modal-touch-resize-browser.test.ts | 75 +++++++++++++- 9 files changed, 354 insertions(+), 34 deletions(-) Fusion-Task-Id: FN-115 Fusion-Task-Lineage: 158de270-2a5c-4590-8347-a3c4d6a5db03 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
c47d555123 |
FN-116: open multiple Quick Chats from conversations
Add in-app Quick Chat windows that open exact Direct conversation snapshots without disturbing the source chat. - Add pop-out window state, rendering, and close controls for multiple Quick Chats. - Add context-menu launching and isolated session/preferences handling. - Add localized labels, dashboard documentation, regression tests, and a release changeset. Files changed: .changeset/fn-116-multiple-quick-chats.md | 7 +++ docs/dashboard-guide.md | 2 + packages/dashboard/app/App.tsx | 34 ++++++++++++-- packages/dashboard/app/components/ChatView.tsx | 36 +++++++++++++-- .../app/components/PoppedOutChatWindows.tsx | 53 ++++++++++++++++++++++ .../__tests__/ChatView.core-contracts.test.tsx | 15 ++++++ .../__tests__/PoppedOutChatWindows.test.tsx | 25 +++++++++ .../app/components/dashboard/MainContent.tsx | 2 + .../dashboard/app/components/dashboard/types.ts | 2 + .../app/components/overflowViewRegistry.tsx | 3 ++ .../app/components/useRightDockController.tsx | 3 ++ .../app/hooks/__tests__/usePoppedOutChats.test.ts | 24 +++++++++ packages/dashboard/app/hooks/useChat.ts | 42 ++++++++++++++-- packages/dashboard/app/hooks/usePoppedOutChats.ts | 42 +++++++++++++++++ packages/i18n/locales/en/app.json | 1 + packages/i18n/locales/es/app.json | 1 + packages/i18n/locales/fr/app.json | 1 + packages/i18n/locales/ko/app.json | 1 + packages/i18n/locales/pt-BR/app.json | 1 + packages/i18n/locales/zh-CN/app.json | 1 + packages/i18n/locales/zh-TW/app.json | 1 + packages/i18n/src/resources.d.ts | 38 ++++++++++++++--- 22 files changed, 313 insertions(+), 22 deletions(-) Fusion-Task-Id: FN-116 Fusion-Task-Lineage: 486e3092-c4db-4e50-a9df-f2adfeb6fddf Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
294e826ea0 |
FN-110: integrate Ctrl+F search into chat lists and conversations
Add keyboard-driven search across chat navigation and conversation content. - Add Ctrl+F search controls for chat lists and conversation messages. - Support result navigation, highlighting, and localized labels across all dashboard locales. - Update chat surfaces, documentation, changeset metadata, and regression coverage. Files changed: .changeset/fn-110-chat-find.md | 7 + docs/dashboard-guide.md | 5 + packages/dashboard/app/App.tsx | 1 + packages/dashboard/app/components/ChatView.css | 41 +++++ packages/dashboard/app/components/ChatView.tsx | 162 +++++++++++++++-- .../dashboard/app/components/CliChatSurface.tsx | 5 +- .../dashboard/app/components/StandardChatSurface.tsx | 14 +- .../__tests__/ChatView.content-search.test.tsx | 197 ++++++++++++++++++++- packages/dashboard/vitest.config.ts | 1 + packages/i18n/locales/en/app.json | 7 + packages/i18n/locales/es/app.json | 7 + packages/i18n/locales/fr/app.json | 7 + packages/i18n/locales/ko/app.json | 7 + packages/i18n/locales/pt-BR/app.json | 7 + packages/i18n/locales/zh-CN/app.json | 7 + packages/i18n/locales/zh-TW/app.json | 7 + packages/i18n/src/resources.d.ts | 7 + 17 files changed, 467 insertions(+), 22 deletions(-) Fusion-Task-Id: FN-110 Fusion-Task-Lineage: 33ef1888-d250-489a-80b8-f3c5069da532 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
eab7635f83 |
FN-109: enable task-card board panning
Allow users to pan the desktop and tablet board from noninteractive task-card surfaces without disrupting controls or mobile scrolling. - Start horizontal panning from eligible task-card bodies and text while preserving native controls and editing behavior. - Wire board pan state and cursor styling across live board roots while keeping mobile snap and touch scrolling unchanged. - Add regression coverage, documentation updates, and a patch changeset. Files changed: .changeset/fn-109-board-card-pan.md | 7 ++ docs/dashboard-guide.md | 5 +- docs/task-management.md | 4 +- packages/dashboard/app/components/Board.css | 7 +- packages/dashboard/app/components/Board.tsx | 8 +- .../app/components/__tests__/Board.test.tsx | 98 ++++++++++++++++------ .../app/hooks/__tests__/useBoardMousePan.test.tsx | 47 ++++++++++- packages/dashboard/app/hooks/useBoardMousePan.ts | 12 +-- 8 files changed, 146 insertions(+), 42 deletions(-) Fusion-Task-Id: FN-109 Fusion-Task-Lineage: 456bd9d3-9767-4b82-9f99-f191abc44b18 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
a010dc42bf |
FN-9185: enforce effective task concurrency limits
Unify task concurrency around authoritative project settings and expose the effective admission ceiling. - Resolve maxConcurrent and maxWorktrees through a shared core capacity model with consistent defaults. - Apply the effective limit across scheduler, engine, runtime, CLI, API, and project-manager admission paths. - Surface configured and binding concurrency values in dashboard controls, status views, diagnostics, and documentation. - Add regression coverage for settings persistence, routing, scheduling, UI surfaces, and worktree-bound capacity. Files changed: .../fn-9185-max-concurrent-effective-limit.md | 7 + docs/architecture.md | 8 +- docs/cli-reference.md | 1 + docs/dashboard-guide.md | 4 + docs/settings-reference.md | 4 +- .../dashboard-concurrency-settings.test.ts | 166 +++++++++++++++++++++ packages/cli/src/commands/dashboard.ts | 28 ++-- packages/cli/src/commands/onboard.ts | 4 +- packages/cli/src/project-resolver.ts | 27 +++- .../concurrency-capacity-resolver.test.ts | 46 ++++++ .../src/__tests__/worktree-capacity-limit.test.ts | 51 +++++-- packages/core/src/index.gate.ts | 2 +- packages/core/src/index.ts | 2 +- packages/core/src/workflows/workflow-capacity.ts | 61 ++++++-- packages/dashboard/app/App.tsx | 2 + .../app/__tests__/concurrency-ui-surfaces.test.tsx | 155 +++++++++++++++++++ .../scheduling-effective-concurrency.test.tsx | 48 ++++++ packages/dashboard/app/api/projects/projects.ts | 10 +- packages/dashboard/app/api/settings/settings.ts | 14 +- packages/dashboard/app/components/Board.tsx | 7 +- packages/dashboard/app/components/Column.tsx | 13 +- .../dashboard/app/components/EngineControlMenu.tsx | 17 ++- .../command-center/CommandCenterControls.tsx | 17 ++- .../components/command-center/areas/TeamArea.tsx | 10 +- .../app/components/dashboard/MainContent.tsx | 3 + .../dashboard/app/components/dashboard/types.ts | 2 + .../settings/sections/SchedulingSection.tsx | 12 +- packages/dashboard/app/hooks/useAppSettings.ts | 9 +- packages/dashboard/app/hooks/useExecutorStats.ts | 10 +- .../app/utils/__tests__/worktreeGrouping.test.ts | 12 +- packages/dashboard/app/utils/worktreeGrouping.ts | 8 +- packages/dashboard/src/routes.ts | 6 +- ...concurrency-authoritative-source-routes.test.ts | 90 +++++++++++ .../register-config-mcp-pi-settings-routes.test.ts | 29 +++- .../register-config-mcp-pi-settings-routes.ts | 17 ++- .../src/routes/register-project-routes.ts | 14 +- .../concurrency-effective-limit-surfaces.test.ts | 34 +++++ .../src/__tests__/project-engine-manager.test.ts | 19 +++ .../__tests__/scheduler-workflow-cutover.test.ts | 6 +- packages/engine/src/concurrency/concurrency.ts | 23 ++- packages/engine/src/concurrency/hybrid-executor.ts | 35 ++++- .../engine/src/executor/create-spawn-agent-tool.ts | 8 +- packages/engine/src/project-engine-manager.ts | 50 +++++-- packages/engine/src/project-engine.ts | 12 +- packages/engine/src/project/project-manager.ts | 26 +++- packages/engine/src/runtimes/in-process-runtime.ts | 12 +- packages/engine/src/scheduler.ts | 31 ++-- packages/engine/src/triage.ts | 15 +- 48 files changed, 1028 insertions(+), 159 deletions(-) Fusion-Task-Id: FN-9185 Fusion-Task-Lineage: 6294456c-d417-40a5-a5fa-2035c6b964a6 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
74dacd0758 |
FN-9188: respect externally managed updates
Managed deployments can now suppress self-update offers while unsupported installs receive actionable guidance. - Add an install-level environment policy for externally managed updates across CLI, server, and dashboard surfaces. - Detect missing npm shell failures and replace raw stderr with deployment-aware remediation. - Document managed-update behavior and add regression coverage for checks, installs, automation, and UI actions. Files changed: .changeset/fn-9188-managed-updates.md | 7 +++ docs/architecture.md | 6 +-- docs/cli-reference.md | 2 +- docs/dashboard-guide.md | 2 +- docs/settings-reference.md | 4 +- packages/cli/src/__tests__/update-cache.test.ts | 11 ++++- .../update-command-externally-managed.test.ts | 39 +++++++++++++++ packages/cli/src/commands/update.ts | 42 +++++++++++----- packages/cli/src/update-cache.ts | 3 +- .../core/src/__tests__/update-management.test.ts | 15 ++++++ packages/core/src/config/update-management.ts | 21 ++++++++ packages/core/src/index.gate.ts | 5 ++ packages/core/src/index.ts | 5 ++ packages/dashboard/app/api/client/health.ts | 3 ++ .../dashboard/app/components/SettingsModal.tsx | 4 ++ .../__tests__/SettingsModal.general.test.tsx | 20 ++++++++ .../__tests__/UpdateAvailableBanner.test.tsx | 26 ++++++++++ .../components/__tests__/settings-mobile.test.tsx | 24 +++++++++- .../__tests__/SystemControlsArea.test.tsx | 20 ++++++++ .../command-center/areas/SystemControlsArea.tsx | 6 +++ .../app/hooks/__tests__/useUpdateCheck.test.ts | 1 + packages/dashboard/app/hooks/useUpdateCheck.ts | 3 +- .../dashboard/src/__tests__/auto-update.test.ts | 10 ++++ .../dashboard/src/__tests__/update-check.test.ts | 56 ++++++++++++++++++++++ packages/dashboard/src/auto-update.ts | 9 +++- .../__tests__/register-update-check-routes.test.ts | 24 +++++++++- .../src/routes/register-update-check-routes.ts | 47 +++++++++++++++++- packages/dashboard/src/update-check.ts | 50 ++++++++++++++++--- 28 files changed, 433 insertions(+), 32 deletions(-) Fusion-Task-Id: FN-9188 Fusion-Task-Lineage: 60b114b9-8bf7-434f-9d26-0c954aea45ba Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
b2125aeb2d |
FN-104: preserve update restart state
Preserve a pending update across Settings reopen while coordinating installation and restart behavior. - Add pending-update install state and coordinator flows across dashboard and system controls. - Expose health/settings update APIs and retain restart state through modal reopen. - Cover desktop/mobile UX, route behavior, coordinator logic, and document the update flow. Files changed: .changeset/fn-104-pending-update-restart.md | 7 ++ docs/architecture.md | 3 + docs/assets/fn-104-pending-update-desktop.png | Bin 0 -> 10926 bytes docs/assets/fn-104-pending-update-mobile.png | Bin 0 -> 6101 bytes docs/dashboard-guide.md | 2 +- docs/settings-reference.md | 2 +- packages/core/src/task-store/task-creation.ts | 1 - packages/dashboard/app/api/client/health.ts | 12 ++++ packages/dashboard/app/api/settings/settings.ts | 3 + .../dashboard/app/components/SettingsModal.tsx | 46 ++++++++----- .../app/components/UpdateAvailableBanner.tsx | 20 ++++-- .../__tests__/SettingsModal.general.test.tsx | 6 ++ .../__tests__/SettingsModal.models-auth.test.tsx | 72 +++++++++++++++++++ .../__tests__/UpdateAvailableBanner.test.tsx | 2 + .../components/__tests__/settings-mobile.test.tsx | 3 + .../command-center/areas/SystemControlsArea.tsx | 18 +++-- .../__tests__/usePendingUpdateInstall.test.ts | 44 ++++++++++++ .../dashboard/app/hooks/usePendingUpdateInstall.ts | 76 +++++++++++++++++++++ packages/dashboard/app/hooks/useUpdateCheck.ts | 8 +++ .../dashboard/src/__tests__/auto-update.test.ts | 18 +++++ .../__tests__/update-install-coordinator.test.ts | 36 ++++++++++ packages/dashboard/src/auto-update.ts | 14 +++- .../__tests__/register-update-check-routes.test.ts | 14 ++++ .../src/routes/register-update-check-routes.ts | 31 ++++++++- .../dashboard/src/update-install-coordinator.ts | 23 +++++++ 25 files changed, 425 insertions(+), 36 deletions(-) Fusion-Task-Id: FN-104 Fusion-Task-Lineage: c754b258-654d-4efe-9b12-1addc7ed190b Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
c21f628174 |
FN-101: separate update installation and restart automation
Separate automatic update installation from restart recovery so dashboard reloads only after the replacement host is healthy. - Add scoped update automation settings and localized descriptions. - Coordinate update installation, restart recovery, timeout handling, and manual refresh guidance. - Update settings UI, banner behavior, API routes, documentation, screenshots, and regression coverage. Files changed: .changeset/fn-101-update-restart-lifecycle.md | 7 ++ docs/assets/fn-101-update-automation-desktop.png | Bin 0 -> 17744 bytes docs/assets/fn-101-update-automation-mobile.png | Bin 0 -> 11367 bytes docs/dashboard-guide.md | 6 +- docs/settings-reference.md | 12 ++- packages/core/src/config/settings-schema.ts | 9 ++ packages/core/src/config/update-automation.ts | 17 +++ packages/core/src/index.gate.ts | 1 + packages/core/src/index.ts | 1 + packages/core/src/types/settings/settings-scope.ts | 8 ++ packages/dashboard/app/api/settings/settings.ts | 4 + .../dashboard/app/components/SettingsModal.tsx | 38 +++++-- .../app/components/UpdateAvailableBanner.tsx | 33 +++++- .../__tests__/SettingsModal.general.test.tsx | 39 +++++++ .../__tests__/UpdateAvailableBanner.test.tsx | 59 ++++++++++- .../app/components/settings/save-split.ts | 5 +- .../sections/GlobalGeneralSection.search.ts | 22 ++-- .../settings/sections/GlobalGeneralSection.tsx | 29 +++-- .../settings-default-descriptions.test.tsx | 2 + .../__tests__/useSystemRestartRecovery.test.ts | 118 +++++++++++++++++++++ .../app/hooks/useSystemRestartRecovery.ts | 118 +++++++++++++++++++++ packages/dashboard/src/auto-update.ts | 22 +++- .../src/routes/register-update-check-routes.ts | 24 +++- .../dashboard/src/update-install-coordinator.ts | 37 +++++++ packages/i18n/locales/en/app.json | 4 + packages/i18n/locales/es/app.json | 4 + packages/i18n/locales/fr/app.json | 4 + packages/i18n/locales/ko/app.json | 4 + packages/i18n/locales/pt-BR/app.json | 8 ++ packages/i18n/locales/zh-CN/app.json | 4 + packages/i18n/locales/zh-TW/app.json | 4 + packages/i18n/src/resources.d.ts | 4 + 32 files changed, 602 insertions(+), 45 deletions(-) Fusion-Task-Id: FN-101 Fusion-Task-Lineage: 2d00e84e-a01d-4d19-bb02-aa87a818165b Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
bbca7a1ffc |
FN-094: add mono- and multi-repository lifecycle parity
Extend workspace lifecycle behavior so mono-repository and multi-repository tasks share the same durable scope, workflow, review, and merge semantics. - Add repository-scope persistence, migrations, serialization, and task mutation support. - Align dashboard task creation, detail, and workspace worktree views with repository-aware lifecycle state. - Extend executor, reviewer, merger, triage, and self-healing paths with parity coverage and tests. - Document the lifecycle contract and publish the operator-facing changeset. Files changed: .changeset/fn-094-multi-repository-lifecycle.md | 7 + docs/agents.md | 8 + docs/architecture.md | 6 + docs/dashboard-guide.md | 4 + docs/multi-project.md | 6 + docs/settings-reference.md | 2 +- docs/testing.md | 12 ++ docs/workspaces.md | 6 + ...workspace-worktrees-concurrent-merge.pg.test.ts | 19 +++ packages/core/src/index.ts | 2 +- .../core/src/postgres/migrations/0000_initial.sql | 1 + .../0064_fn_094_task_repository_scope.sql | 2 + packages/core/src/postgres/schema-applier.ts | 13 +- packages/core/src/postgres/schema/project.ts | 2 + packages/core/src/store.ts | 21 ++- .../core/src/task-store/branch-and-pr-entities.ts | 2 +- packages/core/src/task-store/persistence.ts | 4 +- packages/core/src/task-store/serialization.ts | 2 + packages/core/src/task-store/task-creation.ts | 31 ++++ packages/core/src/task-store/task-mutation-ops.ts | 131 +++++++++++++++- packages/core/src/task-store/task-row-mappers.ts | 2 +- packages/core/src/task-store/task-update.ts | 55 +++++-- packages/core/src/tasks/repository-scope.ts | 29 ++++ packages/core/src/types.ts | 4 + packages/core/src/types/task/task-core.ts | 35 ++++- packages/core/src/types/workflow/workflow-steps.ts | 21 +++ packages/dashboard/app/api/tasks/tasks.ts | 14 ++ packages/dashboard/app/components/NewTaskModal.tsx | 16 +- .../dashboard/app/components/TaskDetailModal.css | 27 ++++ .../dashboard/app/components/TaskDetailModal.tsx | 15 +- .../app/components/WorkspaceWorktreesSummary.tsx | 68 ++++++++- .../app/components/__tests__/NewTaskModal.test.tsx | 1 + .../__tests__/WorkspaceWorktreesSummary.test.tsx | 27 +++- .../src/routes/register-task-workflow-routes.ts | 48 ++++++ .../__tests__/executor-workspace-taskdone.test.ts | 20 +++ .../src/__tests__/reviewer-workspace.test.ts | 170 ++++++++++++++++++++- .../src/__tests__/self-healing-workspace.test.ts | 4 + .../workflow-graph-optional-group.test.ts | 32 ++++ .../workflow-graph-optional-step-fix.test.ts | 58 +++++++ .../engine/src/__tests__/workspace-e2e.test.ts | 91 ++++++++++- .../__tests__/workspace-lifecycle-parity.test.ts | 61 ++++++++ .../src/__tests__/workspace-merger-lease.test.ts | 25 +++ .../__tests__/workspace-merger-scope-gates.test.ts | 58 +++++++ .../engine/src/__tests__/workspace-merger.test.ts | 59 ++++++- packages/engine/src/agent-tools.ts | 92 ++++++++++- packages/engine/src/execution/reviewer.ts | 10 +- .../create-authoritative-workflow-seams.ts | 95 ++++++++++-- .../engine/src/executor/execute-workflow-graph.ts | 37 ++++- .../request-pre-merge-optional-step-fix.ts | 70 +++++++++ .../engine/src/executor/run-graph-custom-node.ts | 124 ++++++++++----- .../engine/src/executor/workflow-step-verdict.ts | 6 +- .../src/executor/workspace-review-per-repo.ts | 118 +++++++++++++- .../src/executor/worktree-task-done-scope-leak.ts | 109 ++++++++++++- packages/engine/src/merge/merger-ai.ts | 88 ++++++++++- packages/engine/src/self-healing.ts | 19 ++- packages/engine/src/triage.ts | 9 ++ .../src/workflows/workflow-graph-executor.ts | 73 +++++++-- .../engine/src/workflows/workflow-node-handlers.ts | 12 +- 58 files changed, 1962 insertions(+), 121 deletions(-) Fusion-Task-Id: FN-094 Fusion-Task-Lineage: 483f958f-cc67-474e-9383-26856c329543 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
3066123516 |
FN-100: prevent false interrupted-response save errors on new chats
Make starting or clearing an idle chat a successful cancellation no-op while preserving durable cancellation barriers for active responses. - Return success for idle generation cancellation instead of showing a false save warning. - Await cancellation and reconciliation from the chat hook before queue/session transitions. - Update chat API, route handling, documentation, regression tests, and the published fix changeset. Files changed: .changeset/fn-100-chat-new-cancel.md | 7 +++ docs/dashboard-guide.md | 2 +- packages/dashboard/app/api/chat/chat.ts | 5 +- packages/dashboard/app/components/ChatView.tsx | 25 +++++---- .../__tests__/ChatView.streaming-thread.test.tsx | 59 ++++++++++++++++++++++ .../dashboard/app/hooks/__tests__/useChat.test.ts | 37 ++++++++++++++ packages/dashboard/app/hooks/useChat.ts | 14 ++--- .../dashboard/src/__tests__/chat-manager.test.ts | 11 +++- .../src/__tests__/routes-chat-cancellation.test.ts | 7 +-- packages/dashboard/src/chat.ts | 8 ++- .../dashboard/src/routes/register-chat-routes.ts | 6 +-- 11 files changed, 153 insertions(+), 28 deletions(-) Fusion-Task-Id: FN-100 Fusion-Task-Lineage: caa5fe20-4abd-4884-ba1d-f9473c12b52f Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
b5e366da62 |
FN-099: match task Chat model menu width to Direct Chat
Match the task Chat model selector to Direct Chat sizing so provider and model names remain readable across desktop and mobile. - Apply the shared readable, viewport-clamped dropdown width to Task Chat. - Add regression coverage and desktop/mobile screenshots. - Document the behavior and publish a patch changeset. Files changed: .changeset/fn-099-task-chat-model-menu-width.md | 7 ++ docs/dashboard-guide.md | 2 +- .../app/components/TaskPlannerChatTab.tsx | 5 ++ .../ChatThinkingLevelControl.portal.test.tsx | 3 +- .../__tests__/TaskPlannerChatTab.test.tsx | 92 ++++++++++++++++++++- .../fn-099-task-chat-model-menu-desktop.png | Bin 0 -> 9534 bytes screenshots/fn-099-task-chat-model-menu-mobile.png | Bin 0 -> 7240 bytes 7 files changed, 105 insertions(+), 4 deletions(-) Fusion-Task-Id: FN-099 Fusion-Task-Lineage: fec67d58-9ca9-4878-8a0a-ac83984a3766 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
3903d3c383 |
FN-096: add New Chat to active conversation headers
Expose the shared New Chat action wherever an active conversation is open. - Keep New Chat available in list and selected-detail headers across Chat hosts. - Reset room launches to a persisted Direct session and preserve existing navigation behavior. - Update responsive styling, documentation, regression coverage, screenshots, and release metadata. Files changed: .changeset/fn-096-chat-header-new-chat.md | 7 +++ docs/dashboard-guide.md | 6 +-- packages/dashboard/app/components/ChatView.css | 3 ++ packages/dashboard/app/components/ChatView.tsx | 23 +++++---- .../components/__tests__/ChatView.mobile.test.tsx | 15 +++++- .../__tests__/ChatView.new-chat-default.test.tsx | 53 +++++++++++++++++++-- .../__tests__/ChatView.sessions-rooms.test.tsx | 36 +++++++++++--- screenshots/fn-096-chat-header-new-desktop.png | Bin 0 -> 7476 bytes screenshots/fn-096-chat-header-new-mobile.png | Bin 0 -> 4881 bytes 9 files changed, 120 insertions(+), 23 deletions(-) Fusion-Task-Id: FN-096 Fusion-Task-Lineage: b63ddd12-87bb-470e-9cc9-a80817270257 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
89427dab11 |
FN-076: disable chat textarea mouse resizing
Disable mouse-driven composer resizing while preserving automatic five-line sizing across chat surfaces. - Remove pointer-based manual resize handling and related CSS affordances. - Apply consistent autosizing and shrink-to-minimum behavior to all chat composers. - Update regression coverage, documentation, and the published package changeset. Files changed: .changeset/fn-076-removal.md | 7 ++ docs/dashboard-guide.md | 6 +- .../app/components/ChatQuestionResponse.css | 4 +- .../app/components/ChatQuestionResponse.tsx | 23 ++-- packages/dashboard/app/components/ChatView.css | 8 +- packages/dashboard/app/components/ChatView.tsx | 18 +-- .../dashboard/app/components/ComposeChatPanel.css | 4 +- .../dashboard/app/components/ComposeChatPanel.tsx | 20 +++- .../app/components/StandardChatSurface.tsx | 20 +++- packages/dashboard/app/components/TaskChatTab.css | 4 +- packages/dashboard/app/components/TaskChatTab.tsx | 12 +- .../app/components/TaskPlannerChatTab.css | 4 +- .../app/components/TaskPlannerChatTab.tsx | 8 +- .../__tests__/ChatQuestionResponse.test.tsx | 38 ++++++ .../__tests__/ChatView.autosize.test.tsx | 26 ++-- .../ChatView.chat-input-autosize.test.tsx | 61 ++-------- .../__tests__/ChatView.message-edit.test.tsx | 10 ++ .../components/__tests__/ComposeChatPanel.test.tsx | 25 ++++ .../app/components/__tests__/TaskChatTab.test.tsx | 13 +- .../__tests__/TaskPlannerChatTab.test.tsx | 13 +- packages/dashboard/app/utils/chatInputAutosize.ts | 132 ++------------------- 21 files changed, 195 insertions(+), 261 deletions(-) Fusion-Task-Id: FN-076 Fusion-Task-Lineage: d4580427-640b-41c1-b5d1-837da43c7438 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
eb3eeb887a |
FN-074: remove task splitting and parent deletion
Remove complex-task splitting and parent-deletion behavior across core, dashboard, and engine. - Remove subtask splitting, breakdown UI, and related API routes and lifecycle handling. - Add the migration and prompt/documentation updates that enforce the simplified task model. - Update affected tests and integrations for the removed behavior. Files changed: .changeset/fn-074-removal.md | 7 + docs/dashboard-guide.md | 17 +- docs/gitlab-parity-inventory.md | 7 +- docs/mcp.md | 6 +- docs/settings-reference.md | 16 +- docs/task-management.md | 31 +- docs/workflow-steps.md | 10 +- .../cli/skill/fusion/references/task-structure.md | 2 +- .../cli/skill/fusion/workflows/specifications.md | 4 +- packages/core/src/__tests__/agent-prompts.test.ts | 19 +- .../builtin-workflow-settings-triage.test.ts | 32 +- .../src/__tests__/postgres/schema-applier.test.ts | 2 +- .../core/src/__tests__/prompt-overrides.test.ts | 3 +- ...-deleted-observed-dispatch-side-effects.test.ts | 3 - .../task-deleted-outbox-consumer-backoff.test.ts | 1 - packages/core/src/agents/agent-prompts.ts | 56 +- packages/core/src/index.ts | 2 +- .../0062_remove_task_subtask_splitting.sql | 2 + packages/core/src/postgres/schema-applier.ts | 14 +- packages/core/src/postgres/schema/project.ts | 1 - packages/core/src/store.ts | 12 +- packages/core/src/task-delete-attribution.ts | 20 +- packages/core/src/task-delete-notice.ts | 7 +- .../__tests__/lifecycle-outbox-writer.test.ts | 4 +- .../core/src/task-store/archive-lifecycle-2.ts | 13 +- packages/core/src/task-store/archive-lifecycle.ts | 6 +- packages/core/src/task-store/lifecycle-outbox.ts | 2 - packages/core/src/task-store/persistence.ts | 2 - packages/core/src/task-store/serialization.ts | 2 - packages/core/src/task-store/task-creation.ts | 2 - .../src/task-store/task-deleted-outbox-consumer.ts | 4 - packages/core/src/task-store/task-mutation-ops.ts | 2 +- packages/core/src/task-store/task-row-mappers.ts | 2 +- packages/core/src/tasks/prompt-overrides.ts | 35 - packages/core/src/types.ts | 12 - packages/core/src/types/mesh/archive-planning.ts | 1 - packages/core/src/types/task/task-core.ts | 3 - .../src/workflows/builtin-workflow-settings.ts | 86 -- packages/dashboard/app/App.tsx | 15 - .../mission-planning-modals-mobile.test.ts | 15 - packages/dashboard/app/api/legacy.ts | 18 +- packages/dashboard/app/api/planning/ai-text.ts | 171 +--- packages/dashboard/app/api/planning/planning.ts | 46 - packages/dashboard/app/api/tasks/tasks.ts | 4 +- packages/dashboard/app/components/AppModals.tsx | 39 +- packages/dashboard/app/components/Board.tsx | 10 +- packages/dashboard/app/components/Column.tsx | 9 +- .../dashboard/app/components/InlineCreateCard.tsx | 63 +- packages/dashboard/app/components/Lane.tsx | 3 +- packages/dashboard/app/components/ListView.tsx | 10 +- packages/dashboard/app/components/NewTaskModal.tsx | 8 +- .../dashboard/app/components/PlanningModeModal.css | 128 --- .../dashboard/app/components/PlanningModeModal.tsx | 566 +---------- .../dashboard/app/components/QuickEntryBox.tsx | 43 +- .../dashboard/app/components/SettingsModal.tsx | 2 - .../app/components/SubtaskBreakdownModal.tsx | 932 ----------------- packages/dashboard/app/components/TaskCard.tsx | 1 - packages/dashboard/app/components/TaskForm.tsx | 23 +- .../__tests__/AgentPromptsManager.test.tsx | 1 - .../app/components/__tests__/AppModals.test.tsx | 92 +- .../app/components/__tests__/Board.test.tsx | 69 +- .../components/__tests__/InlineCreateCard.test.tsx | 170 ---- .../app/components/__tests__/ListView.test.tsx | 38 - .../app/components/__tests__/NewTaskModal.test.tsx | 48 - .../components/__tests__/QuickEntryBox.test.tsx | 293 +----- .../__tests__/SubtaskBreakdownModal.test.tsx | 933 ----------------- ...skDetail.mobile-transition.board-panel.test.tsx | 1 - .../__tests__/TaskDetail.swipe-back.test.tsx | 1 - .../app/components/__tests__/TaskForm.test.tsx | 67 -- .../__tests__/WorkflowSettingsPanel.test.tsx | 51 - .../app/components/__tests__/board-mobile.test.tsx | 20 - .../composer-settings-read-isolation.test.tsx | 30 - .../components/__tests__/migratedModalFixtures.tsx | 2 - .../app/components/dashboard/MainContent.tsx | 5 - .../dashboard/__tests__/DashboardBanners.test.tsx | 1 - .../__tests__/MainContent.graph-popout.test.tsx | 1 - .../dashboard/app/components/dashboard/types.ts | 2 - .../app/components/workflow-setting-display.ts | 10 - ...ckgroundSessions.resume-instrumentation.test.ts | 1 - .../hooks/__tests__/useBackgroundSessions.test.ts | 25 +- .../app/hooks/__tests__/useModalManager.test.ts | 3 - packages/dashboard/app/hooks/modalPersistence.ts | 14 - .../dashboard/app/hooks/useBackgroundSessions.ts | 9 +- packages/dashboard/app/hooks/useModalManager.ts | 58 +- packages/dashboard/app/hooks/useProjectActions.ts | 2 +- packages/dashboard/app/hooks/useTaskHandlers.ts | 9 - packages/dashboard/app/utils/builtinPrompts.ts | 7 - packages/dashboard/app/utils/projectStorage.ts | 1 - .../src/__tests__/ai-session-diagnostics.test.ts | 5 +- .../src/__tests__/github-tracking-state.test.ts | 97 -- .../src/__tests__/gitlab-delete-close.test.ts | 6 +- .../gitlab-parity-inventory-documentation.test.ts | 1 - .../src/__tests__/gitlab-split-close.test.ts | 125 --- .../planning-flow-diagnostics-guardrail.test.ts | 1 - .../src/__tests__/process-lifecycle.test.ts | 1 - .../dashboard/src/__tests__/routes-auth.test.ts | 2 - .../src/__tests__/routes-automation.test.ts | 2 - .../dashboard/src/__tests__/routes-git.test.ts | 2 - .../dashboard/src/__tests__/routes-github.test.ts | 92 -- .../src/__tests__/routes-planning-tracking.test.ts | 130 --- .../src/__tests__/routes-planning.test.ts | 1062 +------------------- .../dashboard/src/__tests__/routes-system.test.ts | 2 - .../dashboard/src/__tests__/routes-tasks.test.ts | 902 ----------------- .../shared-branch-group-entry-points.test.ts | 93 -- packages/dashboard/src/ai-session-diagnostics.ts | 3 +- packages/dashboard/src/ai-session-store.ts | 6 +- packages/dashboard/src/ai-session-timeout.ts | 3 +- packages/dashboard/src/github-tracking-state.ts | 43 +- packages/dashboard/src/gitlab-delete-close.ts | 7 +- packages/dashboard/src/gitlab-lifecycle.ts | 4 +- packages/dashboard/src/gitlab-split-close.ts | 103 -- packages/dashboard/src/gitlab-tracking-state.ts | 2 +- packages/dashboard/src/index.ts | 1 - packages/dashboard/src/planning.ts | 171 ---- packages/dashboard/src/routes.ts | 6 - ...er-planning-subtask-routes.parent-close.test.ts | 120 --- .../dashboard/src/routes/register-git-github.ts | 6 - .../src/routes/register-planning-subtask-routes.ts | 773 +------------- .../src/routes/register-task-workflow-routes.ts | 6 +- packages/dashboard/src/server.ts | 8 - packages/dashboard/src/subtask-breakdown.ts | 833 --------------- packages/dashboard/src/triage-trait.ts | 93 +- .../src/__tests__/agent-task-read-tools.test.ts | 1 - .../triage-duplicate-search-regression.test.ts | 3 - .../triage-split-into-subtasks-delete.test.ts | 222 ---- packages/engine/src/__tests__/triage.test.ts | 519 +--------- packages/engine/src/triage.ts | 239 +---- 127 files changed, 214 insertions(+), 10001 deletions(-) Fusion-Task-Id: FN-074 Fusion-Task-Lineage: 23207799-4ec4-4ec7-bcd7-83cba4d98f53 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
0b71e9f55e |
FN-070: streamline mobile navigation and task creation
Refine mobile project navigation so task creation and view switching remain accessible without redundant header controls. - Add a Header New Task action backed by the existing full task form. - Move mobile Board/List destinations to the bottom navigation and preserve Planning quick entry. - Update responsive documentation, changeset metadata, and regression coverage. Files changed: .changeset/fn-070-mobile-navigation.md | 7 ++++ docs/dashboard-guide.md | 2 +- packages/dashboard/app/App.tsx | 1 + packages/dashboard/app/__tests__/mobile-feature-access-regression.test.tsx | 25 +++++++------ packages/dashboard/app/components/Board.tsx | 9 ++++- packages/dashboard/app/components/Header.tsx | 43 ++++++++++------------- packages/dashboard/app/components/ListView.tsx | 2 +- packages/dashboard/app/components/MobileNavBar.tsx | 20 ++++++++-- .../app/components/__tests__/App.test.tsx | 14 ++++--- .../app/components/__tests__/Board.test.tsx | 17 +++++++++ .../app/components/__tests__/Header.test.tsx | 16 +++++++- .../app/components/__tests__/ListView.test.tsx | 5 ++- .../app/components/__tests__/MobileNavBar.test.tsx | 24 +++++++----- 13 files changed, 123 insertions(+), 62 deletions(-) Fusion-Task-Id: FN-070 Fusion-Task-Lineage: 17bdd4fe-a2ef-481e-9083-6fb1c2d6425f Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
0fce621729 |
FN-071: delete tasks when descriptions are cleared
Clear a saved Task Detail description through the existing confirmed deletion lifecycle. - Detect blanking a populated description during autosave and explicit save. - Reuse destructive-action confirmation preferences and guard against stale drafts or duplicate deletion requests. - Add regression coverage, operator documentation, and a patch changeset. Files changed: .changeset/fn-071-clear-description-delete.md | 7 ++ docs/dashboard-guide.md | 1 + .../dashboard/app/components/TaskDetailModal.tsx | 65 +++++++++-- ...lModal.inline-editing-and-integrations.test.tsx | 126 +++++++++++++++++++++ 4 files changed, 189 insertions(+), 10 deletions(-) Fusion-Task-Id: FN-071 Fusion-Task-Lineage: bec428c4-8c08-47c5-b7c5-09692e101a26 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
b8a70a544d |
FN-068: repair floating Chat HUD and conversation navigation
Repair floating Chat HUD controls and keep conversation navigation consistent across Chat hosts.\n\n- Remove redundant Quick Chat minimize behavior and retain clear Close/Open in Chat actions.\n- Move the Back action beside saved conversation titles across direct and room threads.\n- Preserve model metadata as secondary identity and document the updated responsive navigation.\n\nFiles changed:\n docs/dashboard-guide.md | 13 +++-- packages/dashboard/app/App.tsx | 7 +-- packages/dashboard/app/components/ChatView.css | 22 ++++--- packages/dashboard/app/components/ChatView.tsx | 60 +++++++++---------- .../__tests__/ChatView.core-interactions.test.tsx | 67 ++++++++++++++++++++-- .../components/__tests__/ChatView.mobile.test.tsx | 11 +++- .../__tests__/ChatView.sessions-rooms.test.tsx | 17 +++--- .../__tests__/overflowViewRegistry.chat.test.tsx | 4 +- 8 files changed, 133 insertions(+), 68 deletions(-) Fusion-Task-Id: FN-068 Fusion-Task-Lineage: 4cb32c6b-77c6-4f7f-9d75-741692a149aa Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
d9a4d36c1a |
FN-067: restore desktop Board drag navigation
Restore safe Board panning for desktop and tablet without changing mobile touch behavior. - Restore primary-mouse dragging from safe noninteractive Board surfaces, including empty-column text. - Keep cards, controls, editable content, native draggables, and mobile scrolling native. - Preserve no edge auto-scroll behavior and document the updated navigation contract. Files changed: .changeset/fn-067-board-safe-surface-pan.md | 7 + docs/dashboard-guide.md | 4 +- packages/dashboard/app/components/Board.css | 6 +- packages/dashboard/app/components/Board.tsx | 12 +- .../app/components/__tests__/Board.test.tsx | 73 +++++---- .../app/components/__tests__/board-mobile.test.tsx | 4 +- .../app/hooks/__tests__/useBoardMousePan.test.tsx | 163 +++++++++++---------- packages/dashboard/app/hooks/useBoardMousePan.ts | 37 +++-- 8 files changed, 172 insertions(+), 134 deletions(-) Fusion-Task-Id: FN-067 Fusion-Task-Lineage: 410d3401-1d41-40f1-b025-26248ecd37ff Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
29010e0b0a |
FN-064: preserve bounded Board mouse panning
Keep Board dragging within safe viewport bounds while preserving usable mobile interactions. - Add a reusable bounded mouse-pan hook and wire it into the Board. - Preserve Board transforms and cursor behavior through responsive CSS updates. - Expand desktop and mobile regression coverage and document the interaction. - Add the published-package changeset for the Board fix. Files changed: .changeset/fn-064-board-safe-mouse-pan.md | 7 + docs/dashboard-guide.md | 4 +- packages/dashboard/app/components/Board.css | 10 ++ packages/dashboard/app/components/Board.tsx | 17 ++- .../app/components/__tests__/Board.test.tsx | 40 ++++- .../app/components/__tests__/board-mobile.test.tsx | 13 +- .../app/hooks/__tests__/useBoardMousePan.test.tsx | 163 +++++++++++++++++++++ packages/dashboard/app/hooks/useBoardMousePan.ts | 141 ++++++++++++++++++ 8 files changed, 374 insertions(+), 21 deletions(-) Fusion-Task-Id: FN-064 Fusion-Task-Lineage: 22e9dfeb-b565-414b-89cf-eb10725490a8 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
07125886b7 |
FN-061: refine medieval theme typography
Refine the medieval dashboard theme so its typography and responsive presentation are more balanced. - Reduce oversized theme typography and tune responsive layout styling. - Load Pixelify Sans and update theme tokens, documentation, and changesets. - Expand theme and hook coverage with desktop and mobile visual references. Files changed: .changeset/fn-058-medieval-theme.md | 2 +- .changeset/fn-061-medieval-theme-refinement.md | 7 + docs/dashboard-guide.md | 4 +- docs/settings-reference.md | 2 +- .../dashboard/app/__tests__/medieval-theme.test.ts | 172 +++++++++++++++++++-- .../dashboard/app/hooks/__tests__/useTheme.test.ts | 14 ++ packages/dashboard/app/main.tsx | 2 +- packages/dashboard/app/public/theme-data.css | 22 ++- packages/dashboard/app/styles.css | 46 +++++- packages/dashboard/package.json | 2 +- pnpm-lock.yaml | 8 +- screenshots/fn-061-medieval-desktop.png | Bin 0 -> 753177 bytes screenshots/fn-061-medieval-mobile.png | Bin 0 -> 208805 bytes 13 files changed, 244 insertions(+), 37 deletions(-) Fusion-Task-Id: FN-061 Fusion-Task-Lineage: fe95f1d1-7db4-4098-965f-f4c0aa8860e0 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
4d74560ae0 |
FN-054: add list-first chat conversation navigation
Move chat conversations to list-first navigation with explicit detail entry and back navigation. - Replace room-switcher dropdown contracts with list-to-detail coverage. - Update room composer, thread, gesture, and scroll tests for explicit detail selection. - Remove obsolete room-switcher UI and refresh dashboard documentation and release metadata. Files changed: .changeset/fn-054-removal.md | 7 + docs/dashboard-guide.md | 22 +- packages/dashboard/app/App.tsx | 2 +- packages/dashboard/app/components/ChatView.css | 365 +-- packages/dashboard/app/components/ChatView.tsx | 446 +--- .../__tests__/ChatView.context-window.test.tsx | 19 +- .../__tests__/ChatView.core-contracts.test.tsx | 158 +- .../__tests__/ChatView.mobile-render.test.tsx | 251 +- .../components/__tests__/ChatView.mobile.test.tsx | 2567 +------------------- .../__tests__/ChatView.new-chat-default.test.tsx | 20 +- .../components/__tests__/ChatView.rooms.test.tsx | 346 +-- .../__tests__/ChatView.sessions-rooms.test.tsx | 163 +- .../__tests__/ChatView.swipe-back.test.tsx | 27 +- .../components/__tests__/ChatView.test-harness.tsx | 5 +- .../app/components/overflowViewRegistry.tsx | 2 +- packages/dashboard/vitest.config.ts | 12 +- 16 files changed, 419 insertions(+), 3993 deletions(-) Fusion-Task-Id: FN-054 Fusion-Task-Lineage: 6b139504-ecf3-4b29-ab72-34a4d593676c Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
2c16a7e9ba |
FN-058: add Medieval appearance theme
Add a bundled pixel-font Medieval theme with parchment and wood visual styling across dashboard and desktop surfaces. - Add Medieval theme tokens, swatches, first-paint persistence, and selector integration.\n- Bundle Press Start 2P typography with responsive modal styling and documentation.\n- Add theme behavior tests, screenshots, and a published-package changeset.\n\nFiles changed:\n .changeset/fn-058-medieval-theme.md | 7 ++\n docs/dashboard-guide.md | 5 +-\n docs/settings-reference.md | 2 +-\n packages/core/src/types/ui/execution-and-ui.ts | 5 ++\n .../dashboard/app/__tests__/medieval-theme.test.ts | 71 +++++++++++++++++\n .../dashboard/app/components/ThemeSelector.css | 15 +++\n .../components/__tests__/ThemeDropdown.test.tsx | 2 +-\n .../components/__tests__/ThemeSelector.test.tsx | 14 ++--\n .../__tests__/CommandCenterControls.test.tsx | 10 ++-\n packages/dashboard/app/components/themeOptions.ts | 1 +\n .../dashboard/app/hooks/__tests__/useTheme.test.ts | 28 +++++++\n packages/dashboard/app/index.html | 4 +-\n packages/dashboard/app/main.tsx | 1 +\n packages/dashboard/app/public/theme-data.css | 86 +++++++++++++++++++++\n packages/dashboard/app/styles.css | 24 ++++++\n packages/dashboard/package.json | 1 +\n packages/desktop/src/renderer/index.html | 3 +-\n pnpm-lock.yaml | 8 ++\n screenshots/fn-058-medieval-theme-desktop.png | Bin 0 -> 19898 bytes\n screenshots/fn-058-medieval-theme-mobile.png | Bin 0 -> 14996 bytes\n 20 files changed, 269 insertions(+), 18 deletions(-) Fusion-Task-Id: FN-058 Fusion-Task-Lineage: b7ce1b83-59ba-4516-8073-c1e8c46bb181 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
b533220716 |
FN-052: remove Board mouse-drag panning
Remove scripted desktop Board panning while retaining native scrolling and mobile snapping. - Remove the Board mouse-pan hook and its cursor styling. - Update Board interaction tests and mobile coverage for browser-owned scrolling. - Document the revised navigation behavior and publish a patch changeset. Files changed: .changeset/fn-052-remove-board-mouse-pan.md | 7 + docs/dashboard-guide.md | 4 +- packages/dashboard/app/components/Board.css | 11 -- packages/dashboard/app/components/Board.tsx | 17 +-- .../app/components/__tests__/Board.test.tsx | 47 +++--- .../app/components/__tests__/board-mobile.test.tsx | 8 +- .../app/hooks/__tests__/useBoardMousePan.test.tsx | 164 --------------------- packages/dashboard/app/hooks/useBoardMousePan.ts | 151 ------------------- 8 files changed, 39 insertions(+), 370 deletions(-) Fusion-Task-Id: FN-052 Fusion-Task-Lineage: 7cd4c22f-09cf-4e09-8e24-729b5dd8d3fb Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
3fd4bdbc69 |
FN-051: disable native task dragging
Remove native task drag-and-drop while preserving board panning and task actions. - Remove draggable task movement and drop handling from board, columns, lanes, lists, and cards. - Add task context-menu movement actions and update related documentation and release metadata. - Update component tests to cover non-draggable cards and board-pan exclusions. Files changed: .changeset/fn-051-task-card-moves.md | 7 + docs/dashboard-guide.md | 5 +- docs/task-management.md | 6 + packages/dashboard/app/components/Board.tsx | 63 +----- packages/dashboard/app/components/Column.tsx | 140 +------------- packages/dashboard/app/components/DockTaskList.tsx | 3 +- packages/dashboard/app/components/Lane.tsx | 9 - packages/dashboard/app/components/ListView.css | 12 +- packages/dashboard/app/components/ListView.tsx | 132 ++----------- packages/dashboard/app/components/TaskCard.css | 8 - packages/dashboard/app/components/TaskCard.tsx | 58 ++---- .../dashboard/app/components/TaskContextMenu.css | 37 ++++ .../dashboard/app/components/TaskContextMenu.tsx | 145 ++++++++++++-- .../__tests__/Board.canDropTask.test.tsx | 212 --------------------- .../app/components/__tests__/Board.test.tsx | 8 +- .../app/components/__tests__/Column.test.tsx | 101 +--------- .../app/components/__tests__/DockTaskList.test.tsx | 5 +- .../app/components/__tests__/Lane.test.tsx | 26 --- .../app/components/__tests__/ListView.test.tsx | 178 +---------------- .../app/components/__tests__/TaskCard.test.tsx | 60 ++---- .../components/__tests__/TaskContextMenu.test.tsx | 55 +++++- .../dashboard/app/components/boardCanDropTask.ts | 56 ----- .../app/components/dashboard/MainContent.tsx | 1 - .../app/components/useRightDockController.tsx | 1 - packages/dashboard/app/styles.css | 14 -- 25 files changed, 297 insertions(+), 1045 deletions(-) Fusion-Task-Id: FN-051 Fusion-Task-Lineage: b5614cb1-75f3-4307-a595-123f903adc99 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
a736843cd2 |
FN-017: add authenticated image artifact viewer
Protect dashboard image artifacts while providing a dedicated preview experience. - Fetch image media with header authentication and render revocable blob URLs. - Add desktop and mobile viewer behavior across gallery, documents, task, and mailbox surfaces. - Cover viewer, blob-loading, and updated artifact-surface behavior with tests and documentation. Files changed: docs/dashboard-guide.md | 1 + .../app/components/ArtifactImageViewer.css | 9 ++ .../app/components/ArtifactImageViewer.tsx | 100 ++++++++++++++++++ .../dashboard/app/components/ArtifactMedia.tsx | 8 +- .../dashboard/app/components/ArtifactsGallery.tsx | 10 +- .../dashboard/app/components/DocumentsView.tsx | 4 +- .../app/components/MailboxArtifactAttachment.tsx | 29 +++--- .../dashboard/app/components/TaskDocumentsTab.tsx | 114 ++------------------- .../__tests__/ArtifactImageViewer.test.tsx | 48 +++++++++ .../__tests__/ArtifactsGallery.swipe-back.test.tsx | 7 +- .../components/__tests__/DocumentsView.test.tsx | 9 +- .../__tests__/MailboxArtifactAttachment.test.tsx | 34 ++++-- .../components/__tests__/TaskDocumentsTab.test.tsx | 22 ++-- .../hooks/__tests__/useArtifactImageBlob.test.tsx | 92 +++++++++++++++++ .../dashboard/app/hooks/useArtifactImageBlob.ts | 59 +++++++++++ 15 files changed, 387 insertions(+), 159 deletions(-) Fusion-Task-Id: FN-017 Fusion-Task-Lineage: 893c5a50-536a-4f54-a9a4-cba33ea111b5 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
9f10767254 |
feat: share terminal sessions across browsers
Terminal PTYs already lived in a server-side registry whose WebSocket attach supports several viewers, but the tab list is per-browser localStorage and a browser with no stored tabs skipped the session listing entirely (FN-7686's cold-open optimization) and spawned its own PTY. Two people on one Fusion — or one person in a second browser — therefore never saw each other's terminals and quietly accumulated parallel sessions. - A zero-tab client adopts the server's sessions, oldest first, so every client converges on the same set. A client with stored tabs still only validates them; adopting there would resurrect tabs the user closed here. - FN-7686's guarantee weakens from "never waits" to "waits at most ADOPT_LIST_TIMEOUT_MS (1.5s), then behaves exactly as before": auto-create fires on a 0ms timer, so a background list can never win that race. Its regression test and comment now state the bounded contract. - Closing a tab asks which close was meant — detach here (PTY keeps running for other viewers) or end the session for everyone. alwaysAsk is set: this gates an informed choice and both wrong answers are destructive. Desktop and mobile close controls both route through it. - A footer Reopen control lists sessions the server still runs that this browser is not showing and reattaches to them, so detaching is not a one-way door. Also fixes a multi-viewer data bug: the attach called getScrollbackAndClearPending(), discarding queued output and deleting a slice of every already-attached viewer's live stream. It now flushes pending output to existing viewers first, then reads scrollback for the newcomer, so each viewer receives it exactly once. Drive-by: closeTab's dependency array was empty while its body reads projectId, freezing it at the first render's project. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
0a50e2142d |
FN-9143: inherit selected workflow in New Task dialog
Make every New Task entry point seed the dialog from the active Board or List workflow. - Resolve implicit workflow selection through the modal manager while preserving explicit choices and All workflows behavior. - Forward selected workflow IDs from List view and navigation-backed dialog entry points. - Add cross-surface regression coverage, operator documentation, and a patch changeset. Files changed: .changeset/fn-9143-new-task-selected-workflow.md | 7 +++ docs/dashboard-guide.md | 2 +- packages/dashboard/app/App.tsx | 4 +- packages/dashboard/app/components/AppModals.tsx | 4 +- packages/dashboard/app/components/Column.tsx | 4 +- .../dashboard/app/components/LeftSidebarNav.tsx | 4 +- packages/dashboard/app/components/ListView.tsx | 7 ++- .../components/__tests__/LeftSidebarNav.test.tsx | 1 + .../app/components/__tests__/ListView.test.tsx | 13 +++-- .../new-task-dialog-selected-workflow.test.tsx | 46 ++++++++++++++++++ .../dashboard/app/components/dashboard/types.ts | 2 +- .../app/hooks/__tests__/useModalManager.test.ts | 55 ++++++++++++++++++++++ packages/dashboard/app/hooks/useModalManager.ts | 19 ++++++-- 13 files changed, 148 insertions(+), 20 deletions(-) Fusion-Task-Id: FN-9143 Fusion-Task-Lineage: 43951c5d-24d2-4243-826a-c6f416607882 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
83a33be353 |
feat(dashboard): persistent sign-in dialog for paste-back provider logins
Operator report: during a container login there was nowhere obvious to paste the redirect URL and no sign of what the app was waiting on. The flow was split across a pre-flight confirm that warned about paste-back and vanished, a card that shrank to a disabled "Waiting for login…" chip, and the paste field rendered inline in that card below the fold of a scrolling modal. ProviderLoginDialog now opens with the flow and stays until it ends: a two-step progress list, a button to re-open a lost sign-in tab, the paste field, and the terminal outcome inline instead of a toast that disappears while the operator is in another browser tab. Three defects found and fixed while verifying it in a real container: - It sank behind the onboarding modal and clicks landed on the modal instead. createPortal relocates the DOM node but NOT the React tree, so pointer events bubbled to the host FloatingWindow, which raises itself to a fresh nextFloatingZ() on every pointerdown — each click in the dialog lifted the window above it. Fixed by rendering the dialog as a sibling of the window, claiming z once on open (it was calling nextFloatingZ() inline on every render of a modal that re-renders on a 2s poll), and stopping propagation on the overlay. Ratcheted for every portaled .modal-overlay. - Spacing did not match any other dialog: it hand-rolled header/action padding instead of using .modal-header/.modal-actions, and padded each child separately. Every row now shares var(--modal-padding) — verified at a uniform 17px inset across header, steps, paste prompt, field, Submit, and actions. - The paste field was invisible (.form-input fills with var(--surface), and so does .modal — measured #0c0c0e on #0c0c0e), Submit was a 25px row-density btn-sm, and both could scroll out of reach. The field now sinks to var(--bg) with var(--border-strong), Submit takes standard control padding, and the paste region is pinned outside the scroll area. Dialog anatomy rules (spacing primitives, portal/stacking) documented in docs/dashboard-guide.md. Verified: 441 dashboard tests including 4 new dialog tests, eslint, dashboard typecheck, and the rendered dialog measured in a container build. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |