Fusion Agent
2bdc4448ef
FN-103: support large request payloads
...
Allow large chat logs and workspace file-editor saves to pass through the dashboard without payload-too-large failures.
- Increase request-body handling capacity for large text endpoints.
- Document the payload limits and add integration coverage for chat and workspace-file APIs.
- Add the FN-103 release changeset.
Files changed:
.changeset/fn-103-large-text-payloads.md | 7 +
packages/dashboard/README.md | 15 +-
.../app/api/__tests__/chat-rooms-api.test.ts | 11 ++
.../app/api/__tests__/legacy-chat-stream.test.ts | 19 ++
.../app/api/__tests__/workspace-files-api.test.ts | 30 ++++
.../large-text-body-parser-integration.test.ts | 195 +++++++++++++++++++++
packages/dashboard/src/routes/README.md | 21 +++
packages/dashboard/src/server.ts | 29 ++-
8 files changed, 325 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-103
Fusion-Task-Lineage: 05cb2642-1f55-4939-8a28-78badf9b7caa
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 14:41:37 +00:00
gsxdsm
9e0f64af9a
chore(release): v0.77.0-beta.5
...
Version bump via changesets.
2026-08-20 22:40:47 -07:00
gsxdsm
7c329d8bf2
fix(FN-094): remove stray brace that broke the core build
...
FN-094 closed resolveInitialRepositoryScope twice, so tsc failed with
TS1128 and `pnpm release` aborted at pnpm build:full.
2026-08-20 22:26:59 -07:00
gsxdsm
a96f0dd932
fix: ship git-lfs in the Docker image
...
The repo keeps binary assets as Git LFS objects, but the runner stage
installed plain git. Without git-lfs, checkout writes ~130-byte pointer files
in place of the real content and reports a clean tree, so an agent reads a
text stub where an image should be and any `git lfs` subcommand fails. That
is silent corruption of a working checkout, not a visibly missing tool, which
is why it goes in beside git rather than with the optional tooling.
Confirmed in the running container: screenshots/fn-061-medieval-desktop.png
was a `version https://git-lfs.github.com/spec/v1 ` stub — 129 tracked files
in that state — and became a valid 753KB PNG (signature and IEND intact)
after installing git-lfs and running `git lfs pull`.
The Dockerfile manifest guard now asserts the package so it cannot be dropped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-20 21:42:30 -07:00
Fusion Agent
c21f628174
FN-101: separate update installation and restart automation
...
Separate automatic update installation from restart recovery so dashboard reloads only after the replacement host is healthy.
- Add scoped update automation settings and localized descriptions.
- Coordinate update installation, restart recovery, timeout handling, and manual refresh guidance.
- Update settings UI, banner behavior, API routes, documentation, screenshots, and regression coverage.
Files changed:
.changeset/fn-101-update-restart-lifecycle.md | 7 ++
docs/assets/fn-101-update-automation-desktop.png | Bin 0 -> 17744 bytes
docs/assets/fn-101-update-automation-mobile.png | Bin 0 -> 11367 bytes
docs/dashboard-guide.md | 6 +-
docs/settings-reference.md | 12 ++-
packages/core/src/config/settings-schema.ts | 9 ++
packages/core/src/config/update-automation.ts | 17 +++
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/types/settings/settings-scope.ts | 8 ++
packages/dashboard/app/api/settings/settings.ts | 4 +
.../dashboard/app/components/SettingsModal.tsx | 38 +++++--
.../app/components/UpdateAvailableBanner.tsx | 33 +++++-
.../__tests__/SettingsModal.general.test.tsx | 39 +++++++
.../__tests__/UpdateAvailableBanner.test.tsx | 59 ++++++++++-
.../app/components/settings/save-split.ts | 5 +-
.../sections/GlobalGeneralSection.search.ts | 22 ++--
.../settings/sections/GlobalGeneralSection.tsx | 29 +++--
.../settings-default-descriptions.test.tsx | 2 +
.../__tests__/useSystemRestartRecovery.test.ts | 118 +++++++++++++++++++++
.../app/hooks/useSystemRestartRecovery.ts | 118 +++++++++++++++++++++
packages/dashboard/src/auto-update.ts | 22 +++-
.../src/routes/register-update-check-routes.ts | 24 +++-
.../dashboard/src/update-install-coordinator.ts | 37 +++++++
packages/i18n/locales/en/app.json | 4 +
packages/i18n/locales/es/app.json | 4 +
packages/i18n/locales/fr/app.json | 4 +
packages/i18n/locales/ko/app.json | 4 +
packages/i18n/locales/pt-BR/app.json | 8 ++
packages/i18n/locales/zh-CN/app.json | 4 +
packages/i18n/locales/zh-TW/app.json | 4 +
packages/i18n/src/resources.d.ts | 4 +
32 files changed, 602 insertions(+), 45 deletions(-)
Fusion-Task-Id: FN-101
Fusion-Task-Lineage: 2d00e84e-a01d-4d19-bb02-aa87a818165b
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:36:21 +00:00
Fusion Agent
bbca7a1ffc
FN-094: add mono- and multi-repository lifecycle parity
...
Extend workspace lifecycle behavior so mono-repository and multi-repository tasks share the same durable scope, workflow, review, and merge semantics.
- Add repository-scope persistence, migrations, serialization, and task mutation support.
- Align dashboard task creation, detail, and workspace worktree views with repository-aware lifecycle state.
- Extend executor, reviewer, merger, triage, and self-healing paths with parity coverage and tests.
- Document the lifecycle contract and publish the operator-facing changeset.
Files changed:
.changeset/fn-094-multi-repository-lifecycle.md | 7 +
docs/agents.md | 8 +
docs/architecture.md | 6 +
docs/dashboard-guide.md | 4 +
docs/multi-project.md | 6 +
docs/settings-reference.md | 2 +-
docs/testing.md | 12 ++
docs/workspaces.md | 6 +
...workspace-worktrees-concurrent-merge.pg.test.ts | 19 +++
packages/core/src/index.ts | 2 +-
.../core/src/postgres/migrations/0000_initial.sql | 1 +
.../0064_fn_094_task_repository_scope.sql | 2 +
packages/core/src/postgres/schema-applier.ts | 13 +-
packages/core/src/postgres/schema/project.ts | 2 +
packages/core/src/store.ts | 21 ++-
.../core/src/task-store/branch-and-pr-entities.ts | 2 +-
packages/core/src/task-store/persistence.ts | 4 +-
packages/core/src/task-store/serialization.ts | 2 +
packages/core/src/task-store/task-creation.ts | 31 ++++
packages/core/src/task-store/task-mutation-ops.ts | 131 +++++++++++++++-
packages/core/src/task-store/task-row-mappers.ts | 2 +-
packages/core/src/task-store/task-update.ts | 55 +++++--
packages/core/src/tasks/repository-scope.ts | 29 ++++
packages/core/src/types.ts | 4 +
packages/core/src/types/task/task-core.ts | 35 ++++-
packages/core/src/types/workflow/workflow-steps.ts | 21 +++
packages/dashboard/app/api/tasks/tasks.ts | 14 ++
packages/dashboard/app/components/NewTaskModal.tsx | 16 +-
.../dashboard/app/components/TaskDetailModal.css | 27 ++++
.../dashboard/app/components/TaskDetailModal.tsx | 15 +-
.../app/components/WorkspaceWorktreesSummary.tsx | 68 ++++++++-
.../app/components/__tests__/NewTaskModal.test.tsx | 1 +
.../__tests__/WorkspaceWorktreesSummary.test.tsx | 27 +++-
.../src/routes/register-task-workflow-routes.ts | 48 ++++++
.../__tests__/executor-workspace-taskdone.test.ts | 20 +++
.../src/__tests__/reviewer-workspace.test.ts | 170 ++++++++++++++++++++-
.../src/__tests__/self-healing-workspace.test.ts | 4 +
.../workflow-graph-optional-group.test.ts | 32 ++++
.../workflow-graph-optional-step-fix.test.ts | 58 +++++++
.../engine/src/__tests__/workspace-e2e.test.ts | 91 ++++++++++-
.../__tests__/workspace-lifecycle-parity.test.ts | 61 ++++++++
.../src/__tests__/workspace-merger-lease.test.ts | 25 +++
.../__tests__/workspace-merger-scope-gates.test.ts | 58 +++++++
.../engine/src/__tests__/workspace-merger.test.ts | 59 ++++++-
packages/engine/src/agent-tools.ts | 92 ++++++++++-
packages/engine/src/execution/reviewer.ts | 10 +-
.../create-authoritative-workflow-seams.ts | 95 ++++++++++--
.../engine/src/executor/execute-workflow-graph.ts | 37 ++++-
.../request-pre-merge-optional-step-fix.ts | 70 +++++++++
.../engine/src/executor/run-graph-custom-node.ts | 124 ++++++++++-----
.../engine/src/executor/workflow-step-verdict.ts | 6 +-
.../src/executor/workspace-review-per-repo.ts | 118 +++++++++++++-
.../src/executor/worktree-task-done-scope-leak.ts | 109 ++++++++++++-
packages/engine/src/merge/merger-ai.ts | 88 ++++++++++-
packages/engine/src/self-healing.ts | 19 ++-
packages/engine/src/triage.ts | 9 ++
.../src/workflows/workflow-graph-executor.ts | 73 +++++++--
.../engine/src/workflows/workflow-node-handlers.ts | 12 +-
58 files changed, 1962 insertions(+), 121 deletions(-)
Fusion-Task-Id: FN-094
Fusion-Task-Lineage: 483f958f-cc67-474e-9383-26856c329543
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:35:58 +00:00
Fusion Agent
3066123516
FN-100: prevent false interrupted-response save errors on new chats
...
Make starting or clearing an idle chat a successful cancellation no-op while preserving durable cancellation barriers for active responses.
- Return success for idle generation cancellation instead of showing a false save warning.
- Await cancellation and reconciliation from the chat hook before queue/session transitions.
- Update chat API, route handling, documentation, regression tests, and the published fix changeset.
Files changed:
.changeset/fn-100-chat-new-cancel.md | 7 +++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/api/chat/chat.ts | 5 +-
packages/dashboard/app/components/ChatView.tsx | 25 +++++----
.../__tests__/ChatView.streaming-thread.test.tsx | 59 ++++++++++++++++++++++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 37 ++++++++++++++
packages/dashboard/app/hooks/useChat.ts | 14 ++---
.../dashboard/src/__tests__/chat-manager.test.ts | 11 +++-
.../src/__tests__/routes-chat-cancellation.test.ts | 7 +--
packages/dashboard/src/chat.ts | 8 ++-
.../dashboard/src/routes/register-chat-routes.ts | 6 +--
11 files changed, 153 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-100
Fusion-Task-Lineage: caa5fe20-4abd-4884-ba1d-f9473c12b52f
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:34:43 +00:00
Fusion Agent
b5e366da62
FN-099: match task Chat model menu width to Direct Chat
...
Match the task Chat model selector to Direct Chat sizing so provider and model names remain readable across desktop and mobile.
- Apply the shared readable, viewport-clamped dropdown width to Task Chat.
- Add regression coverage and desktop/mobile screenshots.
- Document the behavior and publish a patch changeset.
Files changed:
.changeset/fn-099-task-chat-model-menu-width.md | 7 ++
docs/dashboard-guide.md | 2 +-
.../app/components/TaskPlannerChatTab.tsx | 5 ++
.../ChatThinkingLevelControl.portal.test.tsx | 3 +-
.../__tests__/TaskPlannerChatTab.test.tsx | 92 ++++++++++++++++++++-
.../fn-099-task-chat-model-menu-desktop.png | Bin 0 -> 9534 bytes
screenshots/fn-099-task-chat-model-menu-mobile.png | Bin 0 -> 7240 bytes
7 files changed, 105 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-099
Fusion-Task-Lineage: fec67d58-9ca9-4878-8a0a-ac83984a3766
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:34:43 +00:00
Fusion Agent
3903d3c383
FN-096: add New Chat to active conversation headers
...
Expose the shared New Chat action wherever an active conversation is open.
- Keep New Chat available in list and selected-detail headers across Chat hosts.
- Reset room launches to a persisted Direct session and preserve existing navigation behavior.
- Update responsive styling, documentation, regression coverage, screenshots, and release metadata.
Files changed:
.changeset/fn-096-chat-header-new-chat.md | 7 +++
docs/dashboard-guide.md | 6 +--
packages/dashboard/app/components/ChatView.css | 3 ++
packages/dashboard/app/components/ChatView.tsx | 23 +++++----
.../components/__tests__/ChatView.mobile.test.tsx | 15 +++++-
.../__tests__/ChatView.new-chat-default.test.tsx | 53 +++++++++++++++++++--
.../__tests__/ChatView.sessions-rooms.test.tsx | 36 +++++++++++---
screenshots/fn-096-chat-header-new-desktop.png | Bin 0 -> 7476 bytes
screenshots/fn-096-chat-header-new-mobile.png | Bin 0 -> 4881 bytes
9 files changed, 120 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-096
Fusion-Task-Lineage: b63ddd12-87bb-470e-9cc9-a80817270257
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:34:43 +00:00
Fusion Agent
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 >
2026-08-21 04:34:43 +00:00
Fusion Agent
ab812880d0
FN-087: resume failed workspace merges
...
Recover retryable workspace merge failures immediately while preserving ownership and safety guards.
- Dispatch operator retries only after a fail-closed pending-owner check.
- Reconcile partial workspace lands during startup using existing guarded recovery logic.
- Add dashboard and self-healing regression coverage.
Files changed:
.../routes-task-retry-stale-merge-status.test.ts | 110 ++++++++++++++++++++-
.../src/routes/register-task-workflow-routes.ts | 24 ++++-
.../src/__tests__/self-healing-workspace.test.ts | 29 ++++++
packages/engine/src/self-healing.ts | 7 ++
4 files changed, 164 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-087
Fusion-Task-Lineage: fbfc4db5-e154-4e41-90b4-4b4514627f47
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:34:10 +00:00
Fusion Agent
aa9fb0553c
FN-089: publish refinement tasks to the board immediately
...
Publish newly created refinement children to shared board state immediately after the server confirms creation.
- Thread refinement-created callbacks through modal, list, detail, and dock surfaces.
- Ingest server-returned refinement tasks without overwriting their workflow-selected columns.
- Verify duplicate live arrivals reconcile correctly and callbacks fire on chat and modal refinement flows.
Files changed:
packages/dashboard/app/App.tsx | 2 ++
packages/dashboard/app/components/AppModals.tsx | 4 +++
packages/dashboard/app/components/ListView.tsx | 4 +++
packages/dashboard/app/components/TaskChatTab.tsx | 12 +++++--
.../dashboard/app/components/TaskDetailModal.tsx | 12 ++++++-
.../app/components/__tests__/TaskChatTab.test.tsx | 4 +++
.../__tests__/TaskDetailModal.refine.test.tsx | 9 ++++-
.../app/components/dashboard/MainContent.tsx | 2 ++
.../app/components/useRightDockController.tsx | 1 +
.../dashboard/app/hooks/__tests__/useTasks.test.ts | 38 ++++++++++++++++++++++
10 files changed, 84 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-089
Fusion-Task-Lineage: b6849502-fc6d-4490-89f4-e0b5c1017b9e
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:33:56 +00:00
Fusion Agent
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 >
2026-08-21 04:33:56 +00:00
Fusion Agent
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 >
2026-08-21 04:32:53 +00:00
Fusion Agent
91ad40a30d
FN-080: prioritize acquired workspace repositories
...
Treat acquired workspace repositories as the authoritative task assignment and presentation source.\n\n- Route populated workspace entries ahead of stale singular worktree values.\n- Sort repository summaries and use singular-aware acquisition labels.\n- Expand regression coverage for full, compact, and grouped workspace views.\n\nFiles changed:\n .../app/components/WorkspaceWorktreesSummary.tsx | 20 ++++++++++++-----\n .../app/components/__tests__/Column.test.tsx | 5 +++--\n .../__tests__/WorkspaceWorktreesSummary.test.tsx | 26 +++++++++++++++++++---\n .../app/utils/__tests__/worktreeGrouping.test.ts | 24 +++++++++++---------\n packages/dashboard/app/utils/worktreeGrouping.ts | 15 +++++++------\n 5 files changed, 62 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-080
Fusion-Task-Lineage: 4e864429-e4e5-418a-86db-c1ba3c25da30
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:53 +00:00
Fusion Agent
89427dab11
FN-076: disable chat textarea mouse resizing
...
Disable mouse-driven composer resizing while preserving automatic five-line sizing across chat surfaces.
- Remove pointer-based manual resize handling and related CSS affordances.
- Apply consistent autosizing and shrink-to-minimum behavior to all chat composers.
- Update regression coverage, documentation, and the published package changeset.
Files changed:
.changeset/fn-076-removal.md | 7 ++
docs/dashboard-guide.md | 6 +-
.../app/components/ChatQuestionResponse.css | 4 +-
.../app/components/ChatQuestionResponse.tsx | 23 ++--
packages/dashboard/app/components/ChatView.css | 8 +-
packages/dashboard/app/components/ChatView.tsx | 18 +--
.../dashboard/app/components/ComposeChatPanel.css | 4 +-
.../dashboard/app/components/ComposeChatPanel.tsx | 20 +++-
.../app/components/StandardChatSurface.tsx | 20 +++-
packages/dashboard/app/components/TaskChatTab.css | 4 +-
packages/dashboard/app/components/TaskChatTab.tsx | 12 +-
.../app/components/TaskPlannerChatTab.css | 4 +-
.../app/components/TaskPlannerChatTab.tsx | 8 +-
.../__tests__/ChatQuestionResponse.test.tsx | 38 ++++++
.../__tests__/ChatView.autosize.test.tsx | 26 ++--
.../ChatView.chat-input-autosize.test.tsx | 61 ++--------
.../__tests__/ChatView.message-edit.test.tsx | 10 ++
.../components/__tests__/ComposeChatPanel.test.tsx | 25 ++++
.../app/components/__tests__/TaskChatTab.test.tsx | 13 +-
.../__tests__/TaskPlannerChatTab.test.tsx | 13 +-
packages/dashboard/app/utils/chatInputAutosize.ts | 132 ++-------------------
21 files changed, 195 insertions(+), 261 deletions(-)
Fusion-Task-Id: FN-076
Fusion-Task-Lineage: d4580427-640b-41c1-b5d1-837da43c7438
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:53 +00:00
Fusion Agent
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 >
2026-08-21 04:32:53 +00:00
Fusion Agent
eb3eeb887a
FN-074: remove task splitting and parent deletion
...
Remove complex-task splitting and parent-deletion behavior across core, dashboard, and engine.
- Remove subtask splitting, breakdown UI, and related API routes and lifecycle handling.
- Add the migration and prompt/documentation updates that enforce the simplified task model.
- Update affected tests and integrations for the removed behavior.
Files changed:
.changeset/fn-074-removal.md | 7 +
docs/dashboard-guide.md | 17 +-
docs/gitlab-parity-inventory.md | 7 +-
docs/mcp.md | 6 +-
docs/settings-reference.md | 16 +-
docs/task-management.md | 31 +-
docs/workflow-steps.md | 10 +-
.../cli/skill/fusion/references/task-structure.md | 2 +-
.../cli/skill/fusion/workflows/specifications.md | 4 +-
packages/core/src/__tests__/agent-prompts.test.ts | 19 +-
.../builtin-workflow-settings-triage.test.ts | 32 +-
.../src/__tests__/postgres/schema-applier.test.ts | 2 +-
.../core/src/__tests__/prompt-overrides.test.ts | 3 +-
...-deleted-observed-dispatch-side-effects.test.ts | 3 -
.../task-deleted-outbox-consumer-backoff.test.ts | 1 -
packages/core/src/agents/agent-prompts.ts | 56 +-
packages/core/src/index.ts | 2 +-
.../0062_remove_task_subtask_splitting.sql | 2 +
packages/core/src/postgres/schema-applier.ts | 14 +-
packages/core/src/postgres/schema/project.ts | 1 -
packages/core/src/store.ts | 12 +-
packages/core/src/task-delete-attribution.ts | 20 +-
packages/core/src/task-delete-notice.ts | 7 +-
.../__tests__/lifecycle-outbox-writer.test.ts | 4 +-
.../core/src/task-store/archive-lifecycle-2.ts | 13 +-
packages/core/src/task-store/archive-lifecycle.ts | 6 +-
packages/core/src/task-store/lifecycle-outbox.ts | 2 -
packages/core/src/task-store/persistence.ts | 2 -
packages/core/src/task-store/serialization.ts | 2 -
packages/core/src/task-store/task-creation.ts | 2 -
.../src/task-store/task-deleted-outbox-consumer.ts | 4 -
packages/core/src/task-store/task-mutation-ops.ts | 2 +-
packages/core/src/task-store/task-row-mappers.ts | 2 +-
packages/core/src/tasks/prompt-overrides.ts | 35 -
packages/core/src/types.ts | 12 -
packages/core/src/types/mesh/archive-planning.ts | 1 -
packages/core/src/types/task/task-core.ts | 3 -
.../src/workflows/builtin-workflow-settings.ts | 86 --
packages/dashboard/app/App.tsx | 15 -
.../mission-planning-modals-mobile.test.ts | 15 -
packages/dashboard/app/api/legacy.ts | 18 +-
packages/dashboard/app/api/planning/ai-text.ts | 171 +---
packages/dashboard/app/api/planning/planning.ts | 46 -
packages/dashboard/app/api/tasks/tasks.ts | 4 +-
packages/dashboard/app/components/AppModals.tsx | 39 +-
packages/dashboard/app/components/Board.tsx | 10 +-
packages/dashboard/app/components/Column.tsx | 9 +-
.../dashboard/app/components/InlineCreateCard.tsx | 63 +-
packages/dashboard/app/components/Lane.tsx | 3 +-
packages/dashboard/app/components/ListView.tsx | 10 +-
packages/dashboard/app/components/NewTaskModal.tsx | 8 +-
.../dashboard/app/components/PlanningModeModal.css | 128 ---
.../dashboard/app/components/PlanningModeModal.tsx | 566 +----------
.../dashboard/app/components/QuickEntryBox.tsx | 43 +-
.../dashboard/app/components/SettingsModal.tsx | 2 -
.../app/components/SubtaskBreakdownModal.tsx | 932 -----------------
packages/dashboard/app/components/TaskCard.tsx | 1 -
packages/dashboard/app/components/TaskForm.tsx | 23 +-
.../__tests__/AgentPromptsManager.test.tsx | 1 -
.../app/components/__tests__/AppModals.test.tsx | 92 +-
.../app/components/__tests__/Board.test.tsx | 69 +-
.../components/__tests__/InlineCreateCard.test.tsx | 170 ----
.../app/components/__tests__/ListView.test.tsx | 38 -
.../app/components/__tests__/NewTaskModal.test.tsx | 48 -
.../components/__tests__/QuickEntryBox.test.tsx | 293 +-----
.../__tests__/SubtaskBreakdownModal.test.tsx | 933 -----------------
...skDetail.mobile-transition.board-panel.test.tsx | 1 -
.../__tests__/TaskDetail.swipe-back.test.tsx | 1 -
.../app/components/__tests__/TaskForm.test.tsx | 67 --
.../__tests__/WorkflowSettingsPanel.test.tsx | 51 -
.../app/components/__tests__/board-mobile.test.tsx | 20 -
.../composer-settings-read-isolation.test.tsx | 30 -
.../components/__tests__/migratedModalFixtures.tsx | 2 -
.../app/components/dashboard/MainContent.tsx | 5 -
.../dashboard/__tests__/DashboardBanners.test.tsx | 1 -
.../__tests__/MainContent.graph-popout.test.tsx | 1 -
.../dashboard/app/components/dashboard/types.ts | 2 -
.../app/components/workflow-setting-display.ts | 10 -
...ckgroundSessions.resume-instrumentation.test.ts | 1 -
.../hooks/__tests__/useBackgroundSessions.test.ts | 25 +-
.../app/hooks/__tests__/useModalManager.test.ts | 3 -
packages/dashboard/app/hooks/modalPersistence.ts | 14 -
.../dashboard/app/hooks/useBackgroundSessions.ts | 9 +-
packages/dashboard/app/hooks/useModalManager.ts | 58 +-
packages/dashboard/app/hooks/useProjectActions.ts | 2 +-
packages/dashboard/app/hooks/useTaskHandlers.ts | 9 -
packages/dashboard/app/utils/builtinPrompts.ts | 7 -
packages/dashboard/app/utils/projectStorage.ts | 1 -
.../src/__tests__/ai-session-diagnostics.test.ts | 5 +-
.../src/__tests__/github-tracking-state.test.ts | 97 --
.../src/__tests__/gitlab-delete-close.test.ts | 6 +-
.../gitlab-parity-inventory-documentation.test.ts | 1 -
.../src/__tests__/gitlab-split-close.test.ts | 125 ---
.../planning-flow-diagnostics-guardrail.test.ts | 1 -
.../src/__tests__/process-lifecycle.test.ts | 1 -
.../dashboard/src/__tests__/routes-auth.test.ts | 2 -
.../src/__tests__/routes-automation.test.ts | 2 -
.../dashboard/src/__tests__/routes-git.test.ts | 2 -
.../dashboard/src/__tests__/routes-github.test.ts | 92 --
.../src/__tests__/routes-planning-tracking.test.ts | 130 ---
.../src/__tests__/routes-planning.test.ts | 1062 +-------------------
.../dashboard/src/__tests__/routes-system.test.ts | 2 -
.../dashboard/src/__tests__/routes-tasks.test.ts | 902 -----------------
.../shared-branch-group-entry-points.test.ts | 93 --
packages/dashboard/src/ai-session-diagnostics.ts | 3 +-
packages/dashboard/src/ai-session-store.ts | 6 +-
packages/dashboard/src/ai-session-timeout.ts | 3 +-
packages/dashboard/src/github-tracking-state.ts | 43 +-
packages/dashboard/src/gitlab-delete-close.ts | 7 +-
packages/dashboard/src/gitlab-lifecycle.ts | 4 +-
packages/dashboard/src/gitlab-split-close.ts | 103 --
packages/dashboard/src/gitlab-tracking-state.ts | 2 +-
packages/dashboard/src/index.ts | 1 -
packages/dashboard/src/planning.ts | 171 ----
packages/dashboard/src/routes.ts | 6 -
...er-planning-subtask-routes.parent-close.test.ts | 120 ---
.../dashboard/src/routes/register-git-github.ts | 6 -
.../src/routes/register-planning-subtask-routes.ts | 773 +-------------
.../src/routes/register-task-workflow-routes.ts | 6 +-
packages/dashboard/src/server.ts | 8 -
packages/dashboard/src/subtask-breakdown.ts | 833 ---------------
packages/dashboard/src/triage-trait.ts | 93 +-
.../src/__tests__/agent-task-read-tools.test.ts | 1 -
.../triage-duplicate-search-regression.test.ts | 3 -
.../triage-split-into-subtasks-delete.test.ts | 222 ----
packages/engine/src/__tests__/triage.test.ts | 519 +---------
packages/engine/src/triage.ts | 239 +----
127 files changed, 214 insertions(+), 10001 deletions(-)
Fusion-Task-Id: FN-074
Fusion-Task-Lineage: 23207799-4ec4-4ec7-bcd7-83cba4d98f53
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:53 +00:00
Fusion Agent
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 >
2026-08-21 04:32:52 +00:00
Fusion Agent
c82e0cdeee
FN-072: preserve the TaskStore receiver during reset publication
...
Ensure confirmed task resets invoke publication with the scoped TaskStore receiver.\n\n- Call resetTaskPublication as a bound store method so async state remains available.\n- Strengthen the lifecycle test to verify receiver identity and publication arguments.\n\nFiles changed:\n .../src/__tests__/task-reset-lifecycle.test.ts | 18 +++++++++++++++---\n .../src/routes/register-task-workflow-routes.ts | 14 ++++++++++----\n 2 files changed, 25 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-072
Fusion-Task-Lineage: 4d75f824-7176-4030-bbaa-c5ce76aab45f
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:52 +00:00
Fusion Agent
0b71e9f55e
FN-070: streamline mobile navigation and task creation
...
Refine mobile project navigation so task creation and view switching remain accessible without redundant header controls.
- Add a Header New Task action backed by the existing full task form.
- Move mobile Board/List destinations to the bottom navigation and preserve Planning quick entry.
- Update responsive documentation, changeset metadata, and regression coverage.
Files changed:
.changeset/fn-070-mobile-navigation.md | 7 ++++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/App.tsx | 1 +
packages/dashboard/app/__tests__/mobile-feature-access-regression.test.tsx | 25 +++++++------
packages/dashboard/app/components/Board.tsx | 9 ++++-
packages/dashboard/app/components/Header.tsx | 43 ++++++++++-------------
packages/dashboard/app/components/ListView.tsx | 2 +-
packages/dashboard/app/components/MobileNavBar.tsx | 20 ++++++++--
.../app/components/__tests__/App.test.tsx | 14 ++++---
.../app/components/__tests__/Board.test.tsx | 17 +++++++++
.../app/components/__tests__/Header.test.tsx | 16 +++++++-
.../app/components/__tests__/ListView.test.tsx | 5 ++-
.../app/components/__tests__/MobileNavBar.test.tsx | 24 +++++++-----
13 files changed, 123 insertions(+), 62 deletions(-)
Fusion-Task-Id: FN-070
Fusion-Task-Lineage: 17bdd4fe-a2ef-481e-9083-6fb1c2d6425f
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:52 +00:00
Fusion Agent
0fce621729
FN-071: delete tasks when descriptions are cleared
...
Clear a saved Task Detail description through the existing confirmed deletion lifecycle.
- Detect blanking a populated description during autosave and explicit save.
- Reuse destructive-action confirmation preferences and guard against stale drafts or duplicate deletion requests.
- Add regression coverage, operator documentation, and a patch changeset.
Files changed:
.changeset/fn-071-clear-description-delete.md | 7 ++
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/TaskDetailModal.tsx | 65 +++++++++--
...lModal.inline-editing-and-integrations.test.tsx | 126 +++++++++++++++++++++
4 files changed, 189 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-071
Fusion-Task-Lineage: bec428c4-8c08-47c5-b7c5-09692e101a26
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:52 +00:00
Fusion Agent
b8a70a544d
FN-068: repair floating Chat HUD and conversation navigation
...
Repair floating Chat HUD controls and keep conversation navigation consistent across Chat hosts.\n\n- Remove redundant Quick Chat minimize behavior and retain clear Close/Open in Chat actions.\n- Move the Back action beside saved conversation titles across direct and room threads.\n- Preserve model metadata as secondary identity and document the updated responsive navigation.\n\nFiles changed:\n docs/dashboard-guide.md | 13 +++--
packages/dashboard/app/App.tsx | 7 +--
packages/dashboard/app/components/ChatView.css | 22 ++++---
packages/dashboard/app/components/ChatView.tsx | 60 +++++++++----------
.../__tests__/ChatView.core-interactions.test.tsx | 67 ++++++++++++++++++++--
.../components/__tests__/ChatView.mobile.test.tsx | 11 +++-
.../__tests__/ChatView.sessions-rooms.test.tsx | 17 +++---
.../__tests__/overflowViewRegistry.chat.test.tsx | 4 +-
8 files changed, 133 insertions(+), 68 deletions(-)
Fusion-Task-Id: FN-068
Fusion-Task-Lineage: 4cb32c6b-77c6-4f7f-9d75-741692a149aa
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:52 +00:00
Fusion Agent
f561d45177
FN-069: show agent mention dropdown above composer
...
Agent mention suggestions now consistently open above the chat composer in direct and room conversations.
- Set a shared above-composer position for both mention popup render paths.
- Extend direct-chat and room interaction coverage for popup placement and active conversation selection.
Files changed:
packages/dashboard/app/components/ChatView.tsx | 10 +++++--
.../__tests__/ChatView.core-interactions.test.tsx | 31 ++++++++++++++--------
2 files changed, 28 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-069
Fusion-Task-Lineage: 69344c00-c076-4299-8edd-528378812309
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:52 +00:00
Fusion Agent
d9a4d36c1a
FN-067: restore desktop Board drag navigation
...
Restore safe Board panning for desktop and tablet without changing mobile touch behavior.
- Restore primary-mouse dragging from safe noninteractive Board surfaces, including empty-column text.
- Keep cards, controls, editable content, native draggables, and mobile scrolling native.
- Preserve no edge auto-scroll behavior and document the updated navigation contract.
Files changed:
.changeset/fn-067-board-safe-surface-pan.md | 7 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/components/Board.css | 6 +-
packages/dashboard/app/components/Board.tsx | 12 +-
.../app/components/__tests__/Board.test.tsx | 73 +++++----
.../app/components/__tests__/board-mobile.test.tsx | 4 +-
.../app/hooks/__tests__/useBoardMousePan.test.tsx | 163 +++++++++++----------
packages/dashboard/app/hooks/useBoardMousePan.ts | 37 +++--
8 files changed, 172 insertions(+), 134 deletions(-)
Fusion-Task-Id: FN-067
Fusion-Task-Lineage: 410d3401-1d41-40f1-b025-26248ecd37ff
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:52 +00:00
Fusion Agent
dfa25335d0
FN-066: add task-ID search to Activity Log
...
Add task-ID filtering across the Activity Log data, API, and dashboard UI.\n\n- Index and expose task IDs in central activity audit queries.\n- Add API, hook, modal, styling, localization, and regression-test coverage for search.\n- Include the published-package changeset and PostgreSQL migration.\n\nFiles changed:\n .changeset/fn-066-activity-log-task-search.md | 7 +++\n .../postgres/activity-log-parity.pg.test.ts | 20 ++++++-\n .../postgres/central-core-backend.test.ts | 16 +++++\n .../src/__tests__/postgres/schema-applier.test.ts | 4 +-\n .../core/src/async-stores/async-central-core.ts | 16 ++++-\n packages/core/src/central/central-core.ts | 5 +\n .../core/src/postgres/migrations/0000_initial.sql | 2 +\n .../0061_fn_066_activity_log_task_id_index.sql | 7 +++\n packages/core/src/postgres/schema-applier.ts | 13 ++++\n packages/core/src/postgres/schema/central.ts | 1 +\n packages/core/src/store.ts | 2 +\n packages/core/src/task-store/async/async-audit.ts | 19 +++--\n packages/dashboard/README.md | 1 +\n .../app/__tests__/activity-log-layout.test.ts | 5 ++\n .../dashboard/app/__tests__/api-projects.test.ts | 4 +\n packages/dashboard/app/api/projects/projects.ts | 4 +\n packages/dashboard/app/api/system/scheduling.ts | 3 +\n .../dashboard/app/components/ActivityLogModal.css | 14 +++++\n .../dashboard/app/components/ActivityLogModal.tsx | 68 +++++++++++-------\n packages/dashboard/app/components/ScriptsModal.css | 21 +++++++\n .../components/__tests__/ActivityLogModal.test.tsx | 58 ++++++++++++++++++\n .../app/hooks/__tests__/useActivityLog.test.ts | 35 +++++++++++\n packages/dashboard/app/hooks/useActivityLog.ts | 14 +++--\n .../src/__tests__/activity-log-route.test.ts | 35 +++++++++++\n .../src/routes/register-setup-activity-routes.ts | 28 +++++---\n packages/i18n/locales/en/app.json | 5 +\n packages/i18n/locales/es/app.json | 5 +\n packages/i18n/locales/fr/app.json | 5 +\n packages/i18n/locales/ko/app.json | 5 +\n packages/i18n/locales/pt-BR/app.json | 5 +\n packages/i18n/locales/zh-CN/app.json | 5 +\n packages/i18n/locales/zh-TW/app.json | 5 +\n packages/i18n/src/resources.d.ts | 3 +\n 33 files changed, 384 insertions(+), 56 deletions(-)
Fusion-Task-Id: FN-066
Fusion-Task-Lineage: 055e2383-9701-4b7e-9f7d-92c2fe175049
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-21 04:32:52 +00:00
gsxdsm
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 >
2026-08-20 03:36:07 -07:00
gsxdsm
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 >
2026-08-20 00:54:56 -07:00
gsxdsm
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 >
2026-08-20 00:36:50 -07:00
gsxdsm
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 >
2026-08-20 00:28:59 -07:00
gsxdsm
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 >
2026-08-19 23:29:37 -07:00
gsxdsm
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 >
2026-08-19 23:20:27 -07:00
gsxdsm
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 >
2026-08-19 22:44:46 -07:00
gsxdsm
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 >
2026-08-19 22:37:12 -07:00
gsxdsm
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 >
2026-08-19 21:42:29 -07:00
gsxdsm
53b57735f5
chore(release): v0.77.0-beta.4
...
Version bump via changesets.
2026-08-19 21:19:08 -07:00
gsxdsm
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 >
2026-08-19 21:14:31 -07:00
gsxdsm
7ae238cc67
fix(FN-061): store medieval theme screenshots as Git LFS pointers
...
These four screenshots/*.png were committed as raw blobs despite the
screenshots/**/*.png LFS rule, so git reported them as files that should
have been pointers. Re-add them through the LFS clean filter.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-19 21:04:55 -07:00
ischindl
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 >
2026-08-19 21:01:56 -07:00
Fusion Agent
e099511b10
docs(FN-062): retain merge review architecture guidance
2026-08-20 03:57:56 +00:00
Fusion Agent
29010e0b0a
FN-064: preserve bounded Board mouse panning
...
Keep Board dragging within safe viewport bounds while preserving usable mobile interactions.
- Add a reusable bounded mouse-pan hook and wire it into the Board.
- Preserve Board transforms and cursor behavior through responsive CSS updates.
- Expand desktop and mobile regression coverage and document the interaction.
- Add the published-package changeset for the Board fix.
Files changed:
.changeset/fn-064-board-safe-mouse-pan.md | 7 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/components/Board.css | 10 ++
packages/dashboard/app/components/Board.tsx | 17 ++-
.../app/components/__tests__/Board.test.tsx | 40 ++++-
.../app/components/__tests__/board-mobile.test.tsx | 13 +-
.../app/hooks/__tests__/useBoardMousePan.test.tsx | 163 +++++++++++++++++++++
packages/dashboard/app/hooks/useBoardMousePan.ts | 141 ++++++++++++++++++
8 files changed, 374 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-064
Fusion-Task-Lineage: 22e9dfeb-b565-414b-89cf-eb10725490a8
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:39 +00:00
Fusion Agent
14befb76bc
FN-062: enforce AI merge review finding reconciliation
...
Make AI merge reviews preserve actionable reasons and require explicit resolution of prior blockers before landing.
- Recover reviewer rejection reasons and preserve bounded squash-fidelity findings across corrective passes.
- Require explicit prior-finding acknowledgement, reject unknown acknowledgements as new blockers, and keep advisory concerns landable.
- Park typed AI review blocks without git-conflict retries and cover the reconciliation contract with regression tests and release notes.
Files changed:
.changeset/fn-062-ai-merge-review-livelock.md | 7 ++
docs/architecture.md | 1 +
.../src/__tests__/merge-error-recovery.test.ts | 29 ++++-
.../engine/src/__tests__/merger-ai-prompts.test.ts | 25 +++-
packages/engine/src/__tests__/merger-ai.test.ts | 80 ++++++++++---
packages/engine/src/__tests__/workspace-merger.test.ts | 27 +++-
packages/engine/src/merge/merger-ai-prompts.ts | 74 +++++++++---
packages/engine/src/merge/merger-ai.ts | 127 ++++++++++++++-------
packages/engine/src/project-engine.ts | 27 +++++
9 files changed, 325 insertions(+), 72 deletions(-)
Fusion-Task-Id: FN-062
Fusion-Task-Lineage: 59d6d94d-a9e3-4f6a-9d16-d434a335e6a3
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:39 +00:00
Fusion Agent
07125886b7
FN-061: refine medieval theme typography
...
Refine the medieval dashboard theme so its typography and responsive presentation are more balanced.
- Reduce oversized theme typography and tune responsive layout styling.
- Load Pixelify Sans and update theme tokens, documentation, and changesets.
- Expand theme and hook coverage with desktop and mobile visual references.
Files changed:
.changeset/fn-058-medieval-theme.md | 2 +-
.changeset/fn-061-medieval-theme-refinement.md | 7 +
docs/dashboard-guide.md | 4 +-
docs/settings-reference.md | 2 +-
.../dashboard/app/__tests__/medieval-theme.test.ts | 172 +++++++++++++++++++--
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 14 ++
packages/dashboard/app/main.tsx | 2 +-
packages/dashboard/app/public/theme-data.css | 22 ++-
packages/dashboard/app/styles.css | 46 +++++-
packages/dashboard/package.json | 2 +-
pnpm-lock.yaml | 8 +-
screenshots/fn-061-medieval-desktop.png | Bin 0 -> 753177 bytes
screenshots/fn-061-medieval-mobile.png | Bin 0 -> 208805 bytes
13 files changed, 244 insertions(+), 37 deletions(-)
Fusion-Task-Id: FN-061
Fusion-Task-Lineage: fe95f1d1-7db4-4098-965f-f4c0aa8860e0
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:23 +00:00
Fusion Agent
967ea6ee91
revert(FN-054): FN-054: preserve list-first chat navigation contracts
...
Fusion-Task-Id: FN-054
Reverts work landed by task FN-054 (FN-054: preserve list-first chat navigation contracts @ bdb7fcf9).
2026-08-20 03:57:23 +00:00
Fusion Agent
66ebbb1aa4
FN-054: preserve list-first chat navigation contracts
...
Migrate Chat detail mounting and room coverage to preserve accessible list-to-detail navigation contracts.
- Gate thread anchoring and live-tail updates on detail mode.
- Replace stale room-switcher tests with list selection and explicit detail entry.
- Retain composer, keyboard overlap, gesture, and scroll assertions across room and direct modes.
Files changed:
packages/dashboard/app/components/ChatView.tsx | 13 +-
.../components/__tests__/ChatView.rooms.test.tsx | 334 ++++++++++++++-------
2 files changed, 239 insertions(+), 108 deletions(-)
Fusion-Task-Id: FN-054
Fusion-Task-Lineage: 6b139504-ecf3-4b29-ab72-34a4d593676c
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:23 +00:00
Fusion Agent
4d74560ae0
FN-054: add list-first chat conversation navigation
...
Move chat conversations to list-first navigation with explicit detail entry and back navigation.
- Replace room-switcher dropdown contracts with list-to-detail coverage.
- Update room composer, thread, gesture, and scroll tests for explicit detail selection.
- Remove obsolete room-switcher UI and refresh dashboard documentation and release metadata.
Files changed:
.changeset/fn-054-removal.md | 7 +
docs/dashboard-guide.md | 22 +-
packages/dashboard/app/App.tsx | 2 +-
packages/dashboard/app/components/ChatView.css | 365 +--
packages/dashboard/app/components/ChatView.tsx | 446 +---
.../__tests__/ChatView.context-window.test.tsx | 19 +-
.../__tests__/ChatView.core-contracts.test.tsx | 158 +-
.../__tests__/ChatView.mobile-render.test.tsx | 251 +-
.../components/__tests__/ChatView.mobile.test.tsx | 2567 +-------------------
.../__tests__/ChatView.new-chat-default.test.tsx | 20 +-
.../components/__tests__/ChatView.rooms.test.tsx | 346 +--
.../__tests__/ChatView.sessions-rooms.test.tsx | 163 +-
.../__tests__/ChatView.swipe-back.test.tsx | 27 +-
.../components/__tests__/ChatView.test-harness.tsx | 5 +-
.../app/components/overflowViewRegistry.tsx | 2 +-
packages/dashboard/vitest.config.ts | 12 +-
16 files changed, 419 insertions(+), 3993 deletions(-)
Fusion-Task-Id: FN-054
Fusion-Task-Lineage: 6b139504-ecf3-4b29-ab72-34a4d593676c
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:23 +00:00
Fusion Agent
2c16a7e9ba
FN-058: add Medieval appearance theme
...
Add a bundled pixel-font Medieval theme with parchment and wood visual styling across dashboard and desktop surfaces.
- Add Medieval theme tokens, swatches, first-paint persistence, and selector integration.\n- Bundle Press Start 2P typography with responsive modal styling and documentation.\n- Add theme behavior tests, screenshots, and a published-package changeset.\n\nFiles changed:\n .changeset/fn-058-medieval-theme.md | 7 ++\n docs/dashboard-guide.md | 5 +-\n docs/settings-reference.md | 2 +-\n packages/core/src/types/ui/execution-and-ui.ts | 5 ++\n .../dashboard/app/__tests__/medieval-theme.test.ts | 71 +++++++++++++++++\n .../dashboard/app/components/ThemeSelector.css | 15 +++\n .../components/__tests__/ThemeDropdown.test.tsx | 2 +-\n .../components/__tests__/ThemeSelector.test.tsx | 14 ++--\n .../__tests__/CommandCenterControls.test.tsx | 10 ++-\n packages/dashboard/app/components/themeOptions.ts | 1 +\n .../dashboard/app/hooks/__tests__/useTheme.test.ts | 28 +++++++\n packages/dashboard/app/index.html | 4 +-\n packages/dashboard/app/main.tsx | 1 +\n packages/dashboard/app/public/theme-data.css | 86 +++++++++++++++++++++\n packages/dashboard/app/styles.css | 24 ++++++\n packages/dashboard/package.json | 1 +\n packages/desktop/src/renderer/index.html | 3 +-\n pnpm-lock.yaml | 8 ++\n screenshots/fn-058-medieval-theme-desktop.png | Bin 0 -> 19898 bytes\n screenshots/fn-058-medieval-theme-mobile.png | Bin 0 -> 14996 bytes\n 20 files changed, 269 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-058
Fusion-Task-Lineage: b7ce1b83-59ba-4516-8073-c1e8c46bb181
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:23 +00:00
Fusion Agent
47a8b53ad2
FN-059: deduplicate failure activity logging
...
Record task failure activity only when a task enters the failed state, while preserving lifecycle metadata compatibility.
- Emit failure-transition metadata only for non-failed to failed updates.
- Preserve warm-cache lane decoration and cold-cache absent metadata.
- Add PostgreSQL parity coverage and a published-package changeset.
Files changed:
.changeset/fn-059-activity-log-failure-dedup.md | 7 +++
.../postgres/activity-log-parity.pg.test.ts | 50 ++++++++++++++++++++++
packages/core/src/store.ts | 13 ++++--
packages/core/src/task-store/lifecycle-ops.ts | 11 +++--
packages/core/src/task-store/task-update.ts | 6 ++-
5 files changed, 80 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-059
Fusion-Task-Lineage: 28c28c0d-d325-4fa6-844d-33a05a18e5ed
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:23 +00:00
Fusion Agent
b533220716
FN-052: remove Board mouse-drag panning
...
Remove scripted desktop Board panning while retaining native scrolling and mobile snapping.
- Remove the Board mouse-pan hook and its cursor styling.
- Update Board interaction tests and mobile coverage for browser-owned scrolling.
- Document the revised navigation behavior and publish a patch changeset.
Files changed:
.changeset/fn-052-remove-board-mouse-pan.md | 7 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/components/Board.css | 11 --
packages/dashboard/app/components/Board.tsx | 17 +--
.../app/components/__tests__/Board.test.tsx | 47 +++---
.../app/components/__tests__/board-mobile.test.tsx | 8 +-
.../app/hooks/__tests__/useBoardMousePan.test.tsx | 164 ---------------------
packages/dashboard/app/hooks/useBoardMousePan.ts | 151 -------------------
8 files changed, 39 insertions(+), 370 deletions(-)
Fusion-Task-Id: FN-052
Fusion-Task-Lineage: 7cd4c22f-09cf-4e09-8e24-729b5dd8d3fb
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:23 +00:00
Fusion Agent
3fd4bdbc69
FN-051: disable native task dragging
...
Remove native task drag-and-drop while preserving board panning and task actions.
- Remove draggable task movement and drop handling from board, columns, lanes, lists, and cards.
- Add task context-menu movement actions and update related documentation and release metadata.
- Update component tests to cover non-draggable cards and board-pan exclusions.
Files changed:
.changeset/fn-051-task-card-moves.md | 7 +
docs/dashboard-guide.md | 5 +-
docs/task-management.md | 6 +
packages/dashboard/app/components/Board.tsx | 63 +-----
packages/dashboard/app/components/Column.tsx | 140 +-------------
packages/dashboard/app/components/DockTaskList.tsx | 3 +-
packages/dashboard/app/components/Lane.tsx | 9 -
packages/dashboard/app/components/ListView.css | 12 +-
packages/dashboard/app/components/ListView.tsx | 132 ++-----------
packages/dashboard/app/components/TaskCard.css | 8 -
packages/dashboard/app/components/TaskCard.tsx | 58 ++----
.../dashboard/app/components/TaskContextMenu.css | 37 ++++
.../dashboard/app/components/TaskContextMenu.tsx | 145 ++++++++++++--
.../__tests__/Board.canDropTask.test.tsx | 212 ---------------------
.../app/components/__tests__/Board.test.tsx | 8 +-
.../app/components/__tests__/Column.test.tsx | 101 +---------
.../app/components/__tests__/DockTaskList.test.tsx | 5 +-
.../app/components/__tests__/Lane.test.tsx | 26 ---
.../app/components/__tests__/ListView.test.tsx | 178 +----------------
.../app/components/__tests__/TaskCard.test.tsx | 60 ++----
.../components/__tests__/TaskContextMenu.test.tsx | 55 +++++-
.../dashboard/app/components/boardCanDropTask.ts | 56 -----
.../app/components/dashboard/MainContent.tsx | 1 -
.../app/components/useRightDockController.tsx | 1 -
packages/dashboard/app/styles.css | 14 --
25 files changed, 297 insertions(+), 1045 deletions(-)
Fusion-Task-Id: FN-051
Fusion-Task-Lineage: b5614cb1-75f3-4307-a595-123f903adc99
Co-authored-by: Fusion <noreply@runfusion.ai >
2026-08-20 03:57:23 +00:00