b5e366da6293aff2bcd80968d68172ccc8210c73
3074 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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> |
||
|
|
f714e45bda |
FN-090: reconcile AI merge review state
Reconcile AI merge-review outcomes with durable task state and operator-visible workflow controls. - Persist merge-review findings and reconciliation metadata through the core task store and schema migration. - Update merger prompts, execution, recovery handling, and workflow routes for approved review outcomes. - Add dashboard task-detail presentation and release documentation for the reconciliation flow. Files changed: .../fn-090-ai-merge-review-reconciliation.md | 7 + docs/architecture.md | 6 + .../src/__tests__/postgres/schema-applier.test.ts | 2 +- .../0063_fn_090_ai_merge_review_reconciliation.sql | 2 + packages/core/src/postgres/schema-applier.ts | 19 +- packages/core/src/postgres/schema/project.ts | 1 + packages/core/src/store.ts | 24 +- packages/core/src/task-store/persistence.ts | 2 + packages/core/src/task-store/reset-lifecycle.ts | 1 + packages/core/src/task-store/serialization.ts | 1 + packages/core/src/task-store/task-mutation-ops.ts | 2 +- packages/core/src/task-store/task-row-mappers.ts | 2 +- packages/core/src/task-store/task-update.ts | 5 + packages/core/src/types/task/task-core.ts | 27 ++ .../dashboard/app/api/tasks/tasks-lifecycle.ts | 9 + .../dashboard/app/components/TaskDetailModal.css | 19 ++ .../dashboard/app/components/TaskDetailModal.tsx | 29 ++ .../src/routes/register-task-workflow-routes.ts | 17 ++ .../src/__tests__/merge-error-recovery.test.ts | 5 +- packages/engine/src/__tests__/merger-ai.test.ts | 234 +++++---------- packages/engine/src/merge/merger-ai-prompts.ts | 31 +- packages/engine/src/merge/merger-ai.ts | 319 ++++++++++----------- packages/engine/src/project-engine.ts | 4 +- 23 files changed, 416 insertions(+), 352 deletions(-) Fusion-Task-Id: FN-090 Fusion-Task-Lineage: 13450a9f-f17f-46b4-ab39-4887520c2a82 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
525ecc9f25 |
FN-083: position auto-summarize task titles toggle
Align the auto-summarize task titles setting with task-language controls and preserve language-aware title generation behavior. - Place the project toggle directly after the AI-authored task language selector. - Verify toggle placement, state updates, and resolved title-output language instructions. - Update settings documentation for language snapshotting and bounded fallback behavior. Files changed: docs/settings-reference.md | 4 +-- packages/core/src/__tests__/ai-summarize.test.ts | 18 +++++++++++ .../app/__tests__/settings-sections.test.tsx | 23 ++++++++++++-- .../settings/sections/ProjectModelsSection.tsx | 37 ++++++++++------------ 4 files changed, 58 insertions(+), 24 deletions(-) Fusion-Task-Id: FN-083 Fusion-Task-Lineage: 4a018f7e-3e8d-4478-8d9d-266fd04ada4c Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
926dda6fc7 |
FN-078: repair multi-repository workspace merge coordination
Keep long-running workspace land operations live and enforce repository-local scope isolation. - Renew workspace land leases throughout dependency sync, AI merge, push, and intent resolution. - Abort stale land bodies before durable or remote commit points and fence lease-dependent writes. - Centralize repository File Scope resolution across squash, completion, and checkout guards. - Add regression coverage, architecture documentation, and a patch changeset. Files changed: .changeset/fn-078-workspace-lease-and-scope.md | 7 + docs/architecture.md | 3 +- .../executor-workspace-main-checkout-guard.test.ts | 13 ++ .../__tests__/executor-workspace-taskdone.test.ts | 21 +++ .../src/__tests__/workspace-merger-lease.test.ts | 195 ++++++++++++++++++++- .../src/executor/workspace-main-checkout-guard.ts | 4 +- .../src/executor/worktree-task-done-scope-leak.ts | 4 +- .../engine/src/merge/merger-ai-squash-gates.ts | 9 +- packages/engine/src/merge/merger-ai.ts | 55 +++++- packages/engine/src/worktree/workspace-paths.ts | 26 +++ 10 files changed, 321 insertions(+), 16 deletions(-) Fusion-Task-Id: FN-078 Fusion-Task-Lineage: 8ddfa438-d6c0-4d3a-972a-3594bfc05ffb 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> |
||
|
|
a2856ba629 |
FN-075: allow explicit dependency reference removal on task delete
Expose the safe, explicit dependency-cleanup retry through the task deletion tool. - Add removeDependencyReferences plumbing to fn_task_delete. - Verify refusal without the explicit option and replanning after cleanup. - Document the operator-facing deletion behavior and publish the fix changeset. Files changed: .changeset/fn-075-dependency-delete-option.md | 7 ++ docs/storage.md | 3 +- .../cli/skill/fusion/references/extension-tools.md | 3 +- .../cli/skill/fusion/references/fusion-capabilities.md | 2 +- .../cli/src/__tests__/task-lineage-unlink.test.ts | 81 +++++++++++++++++++++- packages/cli/src/extension.ts | 10 ++- 6 files changed, 99 insertions(+), 7 deletions(-) Fusion-Task-Id: FN-075 Fusion-Task-Lineage: 952c3563-079c-45a8-8b52-46a551ab6779 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> |
||
|
|
be34be7430 |
FN-073: prevent durable blocks from missing dependencies
Reconcile missing dependency references so task completion and self-healing do not leave durable lifecycle blocks. - Validate and repair dependency references during task creation and lifecycle operations. - Reconcile missing dependencies during self-healing and preserve honest blocked completion behavior. - Add PostgreSQL and executor regression coverage and document the recovery behavior. Files changed: docs/task-management.md | 5 +- packages/core/src/__tests__/postgres/task-dependency-mutation.pg.test.ts | 124 ++++++++++++++++++++ packages/core/src/task-store/archive-lifecycle-2.ts | 71 +++++++++++- packages/core/src/task-store/async/async-lifecycle.ts | 19 ++++ packages/core/src/task-store/project-store-ops.ts | 46 +++++++- packages/core/src/task-store/task-creation.ts | 43 ++++++- packages/engine/src/__tests__/executor-task-done-blocked.test.ts | 65 ++++++++++- packages/engine/src/__tests__/missing-dependency-reconcile.test.ts | 63 +++++++++++ packages/engine/src/executor/create-task-done-tool.ts | 25 ++++- packages/engine/src/self-healing.ts | 58 ++++++++++ 10 files changed, 502 insertions(+), 17 deletions(-) Fusion-Task-Id: FN-073 Fusion-Task-Lineage: 863a07f9-a9d4-4195-b09a-a318689c6382 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> |
||
|
|
5c008bab97 |
FN-9181: bound recall-capture audit emission
Route detached recall-capture telemetry through the bounded core audit seam. - Preserve the injectable audit adapter while bounding production recorded and failed events. - Add hostile-sink, metadata-contract, and source-routing regression coverage. - Document the class-A decision and add a patch changeset. Files changed: .changeset/fn-9181-recall-capture-bounded-audit.md | 7 +++ AGENTS.md | 1 + docs/run-audit.md | 4 +- .../core-run-audit-emitter-isolation.test.ts | 3 +- .../__tests__/core-run-audit-sink-health.test.ts | 62 ++++++++++++++++++- .../src/__tests__/memory/recall-capture.test.ts | 71 +++++++++++++++++++++- packages/core/src/memory/recall-capture.ts | 43 +++++++------ 7 files changed, 166 insertions(+), 25 deletions(-) Fusion-Task-Id: FN-9181 Fusion-Task-Lineage: 4700caca-7182-4aa7-9355-b0bfdef0e4e1 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
fdebfba8a1 |
FN-9180: Route deleted-task outbox audits through the bounded seam
Keep deleted-task outbox processing resilient to hostile audit sinks while preserving durable ordering. - Route catch-up, reconciliation fallback, lease-fenced, and retention-pruned events through the core bounded audit emitter. - Add production-path sink-health coverage and update emitter routing ratchets. - Document the class-A decision and add a patch changeset. Files changed: .changeset/fn-9180-outbox-run-audit.md | 7 + AGENTS.md | 1 + docs/run-audit.md | 2 +- .../core-run-audit-emitter-isolation.test.ts | 13 +- .../excluded-awaited-run-audit-layer-sites.test.ts | 203 +-------------------- .../task-deleted-outbox-audit-sink-health.test.ts | 117 ++++++++++++ ...k-lifecycle-retention-audit-sink-health.test.ts | 64 +++++++ .../src/task-store/task-deleted-outbox-consumer.ts | 13 +- .../task-store/task-lifecycle-event-retention.ts | 8 +- 9 files changed, 215 insertions(+), 213 deletions(-) Fusion-Task-Id: FN-9180 Fusion-Task-Lineage: 33e126fd-23d6-4f3b-a377-1c4bfd7b2941 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
c8f6afe124 |
FN-9182: Bound reconciliation audit emissions
Keep reconciliation responsive while preserving audit-dependent outcomes. - add a bounded core audit emitter that reports recorded, absent, failed, and timed-out outcomes - route workflow-switch and phantom-reservation reconciliation through the outcome-aware seam - cover hostile sink behavior, caller-visible failures, routing invariants, and operator documentation Files changed: .changeset/fn-9182-bounded-run-audit-outcome.md | 7 ++ AGENTS.md | 1 + docs/run-audit.md | 4 +- .../core-run-audit-emitter-isolation.test.ts | 10 +-- .../__tests__/core-run-audit-sink-health.test.ts | 51 ++++++++++++++- .../src/__tests__/emit-bounded-run-audit.test.ts | 58 ++++++++++++++++- .../phantom-reservation-audit-outcome.test.ts | 76 ++++++++++++++++++++++ .../core/src/run-audit/emit-bounded-run-audit.ts | 41 +++++++++--- .../task-store/async/async-phantom-reservations.ts | 31 +++++---- .../core/src/task-store/workflow-definitions.ts | 48 ++++++++------ 10 files changed, 277 insertions(+), 50 deletions(-) Fusion-Task-Id: FN-9182 Fusion-Task-Lineage: c98e8e5e-2dae-47a0-b969-4156f4beccb3 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
649b901bbd |
FN-9178: Classify awaited core run-audit emitters
Document and ratchet which core run-audit writers may remain lifecycle-coupled. - classify awaited emitters by bounded-isolation safety and preserve transactional boundaries - characterize hostile sink behavior across store- and data-layer call sites - fail closed when new awaited audit writers lack an explicit classification Files changed: AGENTS.md | 1 + docs/run-audit.md | 6 + .../core-run-audit-emitter-isolation.test.ts | 71 ++++- .../excluded-awaited-run-audit-layer-sites.test.ts | 332 +++++++++++++++++++++ .../excluded-awaited-run-audit-store-sites.test.ts | 236 +++++++++++++++ 5 files changed, 645 insertions(+), 1 deletion(-) Fusion-Task-Id: FN-9178 Fusion-Task-Lineage: 25fed6a5-4f2f-4d4b-8724-838eff4323c8 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
f5192a5d15 |
FN-9177: route core run-audit emitters through bounded seam
Make best-effort core telemetry unable to block or alter lifecycle operations. - Add a bounded core run-audit helper that absorbs missing, throwing, rejecting, hanging, and late-settling sinks. - Route planner and task-store best-effort emitters through the helper while preserving transactional audit writes. - Add sink-health, source-routing, and helper regressions plus operator-facing policy documentation and a release changeset. Files changed: .changeset/fn-9177-core-run-audit.md | 7 + AGENTS.md | 5 +- docs/run-audit.md | 6 +- .../core-run-audit-emitter-isolation.test.ts | 21 ++ .../__tests__/core-run-audit-sink-health.test.ts | 317 +++++++++++++++++++++ .../src/__tests__/emit-bounded-run-audit.test.ts | 35 +++ packages/core/src/planner/planner-intervention.ts | 9 +- .../core/src/planner/planner-overseer-events.ts | 15 +- .../core/src/run-audit/emit-bounded-run-audit.ts | 51 ++++ packages/core/src/task-store/audit-ops.ts | 6 +- packages/core/src/task-store/branch-group-ops.ts | 6 +- packages/core/src/task-store/lifecycle-ops.ts | 4 +- packages/core/src/task-store/merge-queue-ops-2.ts | 4 +- packages/core/src/task-store/task-artifacts-ops.ts | 4 +- packages/core/src/task-store/task-id-integrity.ts | 52 ++-- packages/core/src/task-store/task-mutation-ops.ts | 13 +- packages/core/src/task-store/workflow-integrity.ts | 4 +- .../src/task-store/workflow-workitems-ops-2.ts | 4 +- .../core/src/task-store/workflow-workitems-ops.ts | 4 +- 19 files changed, 512 insertions(+), 55 deletions(-) Fusion-Task-Id: FN-9177 Fusion-Task-Lineage: 95082837-1670-4c25-9503-60ad983b9d68 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
6d51ae84c3 |
FN-9176: Route remaining run-audit emitters through bounded seam
Prevent audit sink failures and hangs from blocking engine lifecycle progress. - Route hold release, goal diagnostics, overseer, mesh lease, credential rotation, and workflow boundary telemetry through emitBoundedRunAudit. - Add hostile sink regression coverage and a source-level isolation ratchet for migrated emitters. - Document the bounded audit contract, scoped exclusions, and release impact. Files changed: ...n-9176-remaining-run-audit-emitter-isolation.md | 7 ++ AGENTS.md | 5 + docs/run-audit.md | 2 +- ...on-executor-run-audit-emitter-isolation.test.ts | 8 ++ ...un-audit-sink-health-boundary-heartbeat.test.ts | 116 +++++++++++++++++++++ .../__tests__/run-audit-sink-health-goals.test.ts | 71 +++++++++++++ .../run-audit-sink-health-hold-release.test.ts | 102 ++++++++++++++++++ .../run-audit-sink-health-overseer.test.ts | 71 +++++++++++++ .../run-audit-sink-health-runtime-leases.test.ts | 82 +++++++++++++++ .../engine/src/credential-instance-rotation.ts | 6 +- packages/engine/src/execution/hold-release.ts | 32 +++--- packages/engine/src/goals/goal-anchoring-audit.ts | 9 +- .../engine/src/goals/goal-injection-diagnostics.ts | 5 +- .../src/overseer/overseer-advisor-service.ts | 11 +- packages/engine/src/project-engine.ts | 10 +- packages/engine/src/project/mesh-lease-manager.ts | 17 +-- packages/engine/src/runtimes/in-process-runtime.ts | 32 ++++-- .../engine/src/workflow-column-boundary-hooks.ts | 3 +- 18 files changed, 524 insertions(+), 65 deletions(-) Fusion-Task-Id: FN-9176 Fusion-Task-Lineage: 5205deeb-57e8-424e-aba4-3aed6a66f85c Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
a426e28781 |
FN-9165: Add optional JIRA workspace branch derivation
Add opt-in JIRA-backed workspace branch naming while preserving editable manual branch workflows. - add scoped JIRA configuration, secret resolution, and documented inheritance - expose a bounded JIRA issue client and branch-derivation API route - add settings and task-form controls with recoverable errors and coverage - derive sanitized branch names from configurable issue-key and summary templates Files changed: .changeset/fn-9165-jira-branch-name.md | 7 ++ docs/secrets.md | 4 + docs/settings-reference.md | 18 ++++ docs/workspaces.md | 4 + packages/core/src/__tests__/jira-config.test.ts | 6 ++ .../core/src/__tests__/settings-parity.test.ts | 12 +++ packages/core/src/config/settings-schema.ts | 14 +++ packages/core/src/index.ts | 2 + packages/core/src/jira/index.ts | 1 + packages/core/src/jira/jira-config.ts | 34 +++++++ packages/core/src/types/settings/settings-scope.ts | 16 ++++ .../app/__tests__/settings-save-split.test.ts | 43 +++++++++ .../dashboard/app/components/SettingsModal.tsx | 29 +++++- packages/dashboard/app/components/TaskForm.tsx | 23 ++++- .../app/components/__tests__/TaskForm.test.tsx | 31 +++++++ .../settings/__tests__/section-keys.test.ts | 2 + .../app/components/settings/save-split.ts | 64 ++++++++++++- .../app/components/settings/section-keys.ts | 1 + .../sections/SourceControlGlobalSection.search.ts | 9 ++ .../sections/SourceControlGlobalSection.tsx | 20 ++++- .../sections/SourceControlSection.search.ts | 9 ++ .../settings/sections/SourceControlSection.tsx | 12 +++ .../settings-default-descriptions.test.tsx | 7 ++ .../dashboard/src/__tests__/jira-client.test.ts | 58 ++++++++++++ .../src/__tests__/register-jira-routes.test.ts | 70 +++++++++++++++ packages/dashboard/src/jira-auth.ts | 18 ++++ packages/dashboard/src/jira.ts | 75 ++++++++++++++++ packages/dashboard/src/routes.ts | 2 + packages/dashboard/src/routes/README.md | 100 +++++++++++---------- .../src/routes/create-api-routes-mount-sequence.ts | 2 +- packages/dashboard/src/routes/register-jira.ts | 66 ++++++++++++++ packages/engine/src/index.ts | 2 + .../worktree/__tests__/jira-branch-name.test.ts | 7 ++ packages/engine/src/worktree/jira-branch-name.ts | 6 ++ packages/i18n/locales/en/app.json | 23 +++++ 35 files changed, 739 insertions(+), 58 deletions(-) Fusion-Task-Id: FN-9165 Fusion-Task-Lineage: 88ab5fa3-f66e-421d-8139-5c3e8917348d Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
07be287e32 |
FN-9175: isolate engine run-audit emitters
Make run-audit telemetry best-effort across engine lifecycle paths. - centralize bounded sink handling for absent, throwing, rejecting, hanging, and late-settling audit writers - route merger, recovery, scheduler, plugin, mission, project, and run-auditor emissions through the shared seam - add hostile-sink regression coverage, emitter routing checks, documentation, and a patch changeset Files changed: .../fn-9175-non-executor-run-audit-isolation.md | 7 + AGENTS.md | 7 +- docs/run-audit.md | 4 +- .../src/__tests__/emit-bounded-run-audit.test.ts | 31 ++- ...on-executor-run-audit-emitter-isolation.test.ts | 29 +++ .../non-executor-run-audit-sink-health.test.ts | 280 +++++++++++++++++++++ packages/engine/src/__tests__/self-healing.test.ts | 7 +- .../engine/src/executor/emit-bounded-run-audit.ts | 52 +--- packages/engine/src/logger.ts | 3 + packages/engine/src/merge/merger-ai.ts | 47 ++-- packages/engine/src/merge/pr-reconcile.ts | 5 +- packages/engine/src/merger.ts | 41 +-- .../engine/src/missions/mission-execution-loop.ts | 5 +- packages/engine/src/plugins/plugin-runner.ts | 9 +- packages/engine/src/project-engine.ts | 55 ++-- packages/engine/src/scheduler.ts | 17 +- packages/engine/src/self-healing.ts | 39 +-- packages/engine/src/util/emit-bounded-run-audit.ts | 69 +++++ packages/engine/src/util/run-audit.ts | 9 +- 19 files changed, 564 insertions(+), 152 deletions(-) Fusion-Task-Id: FN-9175 Fusion-Task-Lineage: bf74cd37-19bd-4d99-a5d6-b05a4bb43576 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
e40bcebc27 |
FN-9161: support operator workspace branches
Allow workspace tasks to use one operator-selected branch consistently across every sub-repository while preserving ownership during recovery. - validate and persist operator branch provenance at task creation and update boundaries - reuse custom branches across workspace worktrees, PR flows, cleanup, and self-healing without deleting operator-owned refs - expose branch validation in task forms and document the workspace behavior - add coverage and a release changeset for shared custom branch handling Files changed: .changeset/fn-9161-workspace-custom-branch.md | 7 ++ docs/workspaces.md | 6 ++ packages/cli/src/commands/pr.ts | 10 ++- packages/cli/src/commands/task-lifecycle.ts | 10 +-- packages/cli/src/commands/task.ts | 4 +- packages/cli/src/extension.ts | 2 +- .../core/src/__tests__/branch-assignment.test.ts | 37 ++++++++++ .../task-update-awaiting-approval-reason.test.ts | 8 +++ .../core/src/async-stores/async-mission-store.ts | 1 + packages/core/src/branch/branch-assignment.ts | 64 +++++++++++++++++ packages/core/src/index.gate.ts | 7 ++ packages/core/src/index.ts | 7 ++ packages/core/src/missions/mission-store.ts | 1 + packages/core/src/store.ts | 2 +- packages/core/src/task-store/branch-context.ts | 35 +++++++-- packages/core/src/task-store/merge-queue-ops.ts | 31 ++++---- packages/core/src/task-store/task-creation.ts | 30 ++++++++ packages/core/src/task-store/task-mutation-ops.ts | 18 ++++- packages/core/src/task-store/task-update.ts | 60 ++++++++++++++-- packages/core/src/types.ts | 5 ++ packages/core/src/types/task/task-core.ts | 20 +++++- packages/dashboard/app/components/NewTaskModal.tsx | 25 +++++-- packages/dashboard/app/components/TaskForm.tsx | 18 ++++- .../app/components/__tests__/NewTaskModal.test.tsx | 12 ++++ packages/dashboard/src/pr-conflict-resolver.ts | 14 ++-- packages/dashboard/src/routes/branch-selection.ts | 7 ++ .../dashboard/src/routes/register-git-github.ts | 18 +++-- .../src/routes/register-task-workflow-routes.ts | 17 ++++- .../engine/src/__tests__/worktree-hooks.test.ts | 6 ++ .../engine/src/__tests__/worktree-pool.test.ts | 8 +++ .../src/auto-recovery-handlers/branch-worktree.ts | 20 +++--- .../engine/src/execution/step-session-executor.ts | 6 +- .../src/executor/build-foreach-worktree-deps.ts | 5 +- .../engine/src/executor/create-task-done-tool.ts | 8 +-- packages/engine/src/executor/dep-abort-cleanup.ts | 4 +- packages/engine/src/executor/mark-stuck-aborted.ts | 2 +- .../src/executor/release-pre-execution-worktree.ts | 2 +- packages/engine/src/executor/run-implementation.ts | 14 ++-- .../src/executor/task-done-refusal-handler.ts | 4 +- .../executor/worktree-branch-conflict-handle.ts | 10 +-- .../src/executor/worktree-cleanup-conflicting.ts | 39 +++++----- .../src/executor/worktree-create-conflict.ts | 1 + .../engine/src/executor/worktree-stale-branch.ts | 9 +++ .../src/healing/restart-recovery-coordinator.ts | 2 +- packages/engine/src/merger.ts | 33 +++++---- .../src/recovery/foreign-only-contamination.ts | 8 ++- packages/engine/src/self-healing.ts | 82 +++++++++++++++------- .../engine/src/worktree/worktree-acquisition.ts | 52 ++++++++++---- packages/engine/src/worktree/worktree-backend.ts | 42 ++++++++--- packages/engine/src/worktree/worktree-hooks.ts | 24 +++++-- packages/engine/src/worktree/worktree-names.ts | 13 ++++ packages/engine/src/worktree/worktree-pool.ts | 17 ++++- 52 files changed, 708 insertions(+), 179 deletions(-) Fusion-Task-Id: FN-9161 Fusion-Task-Lineage: 5b0b9ecc-bead-471f-96f7-bec6698b69fc Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
338dc173ff |
feat: pnpm dev --isolated runs against its own database and project
Working on Fusion from inside a machine that already runs one, a plain
`pnpm dev` shares that instance's LIVE database. Everything durable hangs off
$HOME/.fusion — settings, credentials, central DB, the embedded Postgres data
dir — and a process pointed at a data dir whose postmaster is already running
attaches to it instead of starting its own.
--isolated spawns the dev child with HOME pointed at a sandbox, so it gets its
own settings, credentials and Postgres cluster on its own port. It also moves
the child's cwd, which is the half that is easy to miss: `fn dashboard`
derives its project from the working directory and has no project flag, so
isolating HOME alone leaves both instances on `<repo>/.fusion` — including
`.fusion/tasks/<id>/`, which the orphaned-task-dir sweep re-imports, so a
fresh dev database would adopt the real instance's tasks.
The sandbox defaults to ~/.fusion-dev/<checkout-name>/{home,project}: outside
the work tree so it neither shows up in git status nor dies on a clean
checkout, and keyed by checkout so two clones cannot collide. The project dir
is git init-ed on first use because Fusion projects are git work trees.
Changing cwd is safe because PRELOAD/LOADER/ENTRY are already absolute.
Verified in a container beside a running Fusion: the isolated instance
reported zero projects while the real one reported two, on separate Postgres
clusters (ports 42617 and 38311).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
|
|
3d355465c7 |
feat(missions): done-credit via reverse lineage, feature re-point/unlink tools, and live unlink SSE (#3491)
## What this PR does Closes three lifecycle gaps in the Mission → Milestone → Slice → **Feature** model, where a feature links to exactly one delivery task (single-valued `feature.taskId`, one-feature-one-task): 1. **Reverse-lineage done-credit** — a terminal, non-failed task carrying a feature's reverse `missionLineage` (featureId/sliceId/missionId) now credits the feature as satisfying its acceptance criteria, independent of where the forward `feature.taskId` points (e.g. a newer follow-up task). Credit is only applied when **none** of the feature's lineage candidates is live, so a live follow-up keeps the feature active. Fixes features that otherwise sit "in-progress" forever after their delivering task completes. 2. **Re-point / unlink surface** — new `fn_feature_repoint_task` / `fn_feature_unlink_task` agent tools (engine + CLI) backed by an atomic `repointFeatureToTask` store primitive, so a mis-linked feature can be re-attached to the correct delivery task or unlinked — without a manual DB edit. Single-valued `feature.taskId` and one-feature-one-task invariants are preserved; unlinking an already-unlinked feature errors clearly. Classified as mutation tools, same class as the existing `fn_feature_link_task`. 3. **Live SSE update** — the `feature:unlinked` store event is now emitted over SSE (`event: feature:unlinked`) so the dashboard refreshes immediately after a re-point/unlink instead of waiting for the next poll. ## Why The forward-only `feature.taskId` link made three real failure modes unrecoverable from the product surface: stale done-features after task replacement, permanently mis-linked features, and a stale dashboard after a repair. This closes the feature lifecycle end-to-end. ## Invariants - `feature.taskId` stays single-valued; one feature is linked to at most one task at any time (atomic store primitive). - Done-credit requires: terminal column, non-failed, and no live lineage candidate. - No new run-audit prose; store events carry ids/counts/outcomes only. ## Tests - `mission-state-reconcile.test.ts` — reverse-lineage credit matrix (live vs. terminal vs. failed candidates) - `mission-store.pg.test.ts` — `repointFeatureToTask` atomicity + invariants (PG; gate-safe auto-skip without Postgres) - `agent-mission-tools.test.ts` — tool delegation (unlink / re-point exactly once) - `heartbeat-executor.test.ts`, `extension.test.ts` — tool exposure and heartbeat interaction - Changeset: `@runfusion/fusion: minor` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added tools to reassign a feature to another live task or remove its task link. - Unlinking resets the feature to a defined state and provides clear errors when applicable. - Added live updates for feature unlink events. - Improved reconciliation to recognize completed reverse-lineage work while respecting active follow-up tasks and failures. - Improved relationship consistency when concurrent task-link operations occur. - **Documentation** - Documented feature linking, unlinking, reassignment, lifecycle events, and reconciliation behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
e099511b10 | docs(FN-062): retain merge review architecture guidance | ||
|
|
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> |
||
|
|
7563fcfe1b |
FN-037: configure AI-authored task output language
Configure a persisted output-language setting and apply it across AI-authored task text and workflow summaries. - Add project/global output-language settings with defaults, validation, UI controls, translations, and documentation. - Propagate the selected language through planning, execution, review, summaries, and task creation. - Add focused coverage for language resolution and update affected dashboard, engine, and localization tests. Files changed: .changeset/fn-037-task-output-language.md | 7 ++ docs/settings-reference.md | 4 + docs/task-management.md | 4 + .../core/src/__tests__/ai-output-language.test.ts | 21 +++++ packages/core/src/ai/ai-output-language.ts | 42 +++++++++ packages/core/src/ai/ai-summarize.ts | 16 +++- packages/core/src/config/settings-schema.ts | 2 + packages/core/src/index.gate.ts | 2 + packages/core/src/index.ts | 2 + packages/core/src/task-store/settings-ops.ts | 7 ++ packages/core/src/task-store/task-creation.ts | 4 + packages/core/src/types/settings/settings-scope.ts | 2 + .../app/__tests__/settings-sections.test.tsx | 21 +++-- .../__tests__/SettingsModal.models-auth.test.tsx | 10 +- .../app/components/settings/section-keys.ts | 2 +- .../sections/ProjectModelsSection.search.ts | 13 ++- .../settings/sections/ProjectModelsSection.tsx | 28 ++++-- .../settings-default-descriptions.test.tsx | 4 +- .../src/__tests__/github-tracking.test.ts | 4 +- .../__tests__/planning-prompt-resolution.test.ts | 29 ++++-- .../src/__tests__/routes-planning.test.ts | 32 ++++++- packages/dashboard/src/ai-session-store.ts | 15 ++- packages/dashboard/src/github-tracking.ts | 3 + packages/dashboard/src/planning.ts | 75 +++++++++++++-- .../routes/register-ai-text-assistant-routes.ts | 11 ++- .../src/routes/register-planning-subtask-routes.ts | 6 +- .../src/routes/register-task-workflow-routes.ts | 9 +- packages/dashboard/src/shared/settings-sections.ts | 2 +- .../__tests__/ce-workflow-step-executor.test.ts | 45 ++++++++- .../__tests__/executor-review-artifacts.test.ts | 65 +++++++++++++ packages/engine/src/__tests__/triage.test.ts | 7 +- .../src/__tests__/workflow-task-runtime.test.ts | 23 +++++ .../create-authoritative-workflow-primitives.ts | 14 ++- .../create-authoritative-workflow-seams.ts | 17 +++- .../engine/src/executor/execute-workflow-graph.ts | 19 +++- .../engine/src/executor/execute-workflow-step.ts | 13 ++- packages/engine/src/executor/execution-prompt.ts | 10 +- .../engine/src/executor/handoff-task-to-review.ts | 10 +- .../engine/src/executor/run-graph-custom-node.ts | 6 +- .../src/executor/task-executor-graph-facades.ts | 8 +- packages/engine/src/triage.ts | 35 ++----- .../src/workflows/workflow-completion-summary.ts | 101 ++++++++++++++++++--- .../engine/src/workflows/workflow-task-runtime.ts | 12 +++ packages/i18n/locales/en/app.json | 7 +- packages/i18n/locales/es/app.json | 7 +- packages/i18n/locales/fr/app.json | 7 +- packages/i18n/locales/ko/app.json | 7 +- packages/i18n/locales/pt-BR/app.json | 14 ++- packages/i18n/locales/zh-CN/app.json | 7 +- packages/i18n/locales/zh-TW/app.json | 7 +- packages/i18n/src/resources.d.ts | 13 ++- 51 files changed, 680 insertions(+), 151 deletions(-) Fusion-Task-Id: FN-037 Fusion-Task-Lineage: 968a707e-7ffe-43ba-b983-d679b031f7a5 Co-authored-by: Fusion <noreply@runfusion.ai> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |