Add first-load loading states so task activity and agent log views do not flash empty states.
- show a loading status row in the task detail Activity tab while detail history is still loading
- keep agent logs in a loading state until the active task/project context has completed its initial fetch
- add accessible loading markup, regression tests, and dashboard guide documentation for the new behavior
Files changed:
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/AgentLogViewer.css | 18 +++
.../dashboard/app/components/AgentLogViewer.tsx | 2 +-
.../dashboard/app/components/TaskDetailModal.css | 17 +++
.../dashboard/app/components/TaskDetailModal.tsx | 7 +-
.../components/__tests__/AgentLogViewer.test.tsx | 3 +-
.../components/__tests__/TaskDetailModal.test.tsx | 144 +++++++++++++++++++++
.../app/hooks/__tests__/useAgentLogs.test.ts | 74 +++++++++++
packages/dashboard/app/hooks/useAgentLogs.ts | 14 +-
9 files changed, 276 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-6040
Fusion-Task-Lineage: cd4b8f7f-63cd-4d75-be00-d362e915f4e8
Use the shared model picker for workflow lane settings instead of raw provider/model text entry.
- replace built-in workflow model provider/model string fields with combined dropdown controls in the Values tab
- fetch available models and save or clear paired provider/model workflow values together, including fallback lanes
- add regression coverage for dropdown rendering, selection, clearing, empty registries, and paired-key validation errors
- update dashboard and settings documentation to describe the shared workflow model picker behavior
Files changed:
docs/dashboard-guide.md | 4 +-
docs/settings-reference.md | 22 +-
packages/dashboard/app/components/WorkflowSettingsPanel.tsx | 241 +++++++++++++++++++--
packages/dashboard/app/components/__tests__/WorkflowSettingsPanel.test.tsx | 133 +++++++++++-
4 files changed, 369 insertions(+), 31 deletions(-)
Fusion-Task-Id: FN-6026
Fusion-Task-Lineage: 7f41120f-f764-4011-9aa5-a323e0aa64d6
Keep the workflow editor mobile-first selection flow usable and improve tap targets on phones.
- start the mobile workflow editor on the workflow list with no preselected workflow and show a select-a-workflow prompt
- keep mobile list/editor stage transitions in sync after create, duplicate, import, and delete actions
- increase workflow editor mobile touch targets and padding without changing desktop sizing
- add regression coverage for mobile viewport selection behavior and CSS touch-target scoping
- update the dashboard guide to document the mobile workflow editor behavior
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/WorkflowNodeEditor.css | 56 +++++++++++++++++-
packages/dashboard/app/components/WorkflowNodeEditor.tsx | 24 ++++++--
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts | 36 ++++++++++++
packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx | 68 ++++++++++++++++++++++
Fusion-Task-Id: FN-6033
Fusion-Task-Lineage: c9da29ef-c099-4e14-8671-24995106c78c
Keep summarization and PR metadata model selection on project settings while leaving workflow lanes on the workflow.
- restore the project summarization model lane in Project Models and replace per-phase workflow lanes with a workflow-settings redirect stub
- remove moved workflow model keys from project settings defaults/save paths and update settings docs/tests for the restored project lane behavior
- make PR metadata generation resolve its model from the title summarizer settings lane instead of task planning settings
Files changed:
docs/settings-reference.md | 4 +-
.../core/src/__tests__/settings-migration.test.ts | 18 +-
.../core/src/__tests__/settings-parity.test.ts | 17 +-
packages/core/src/__tests__/store-settings.test.ts | 54 ++--
.../core/src/__tests__/task-creation-hook.test.ts | 10 +-
packages/core/src/builtin-workflow-settings.ts | 24 --
packages/core/src/settings-schema.ts | 13 +-
.../components/__tests__/SettingsModal.test.tsx | 11 +-
.../app/components/settings/save-split.ts | 11 +-
.../settings/sections/ProjectModelsSection.tsx | 330 +++------------------
.../src/__tests__/pr-metadata-generator.test.ts | 25 +-
packages/dashboard/src/pr-metadata-generator.ts | 4 +-
12 files changed, 140 insertions(+), 381 deletions(-)
Fusion-Task-Id: FN-5994
Fusion-Task-Lineage: f7f6f1ff-5d06-4d16-b46d-644eb219e7c1
Refresh the FTS migration guidance with fresh evidence and reconcile workflow interpreter naming.
- document post-FN-5943 production evidence showing the single-file tasks_fts index remains bounded and rebuild-free
- keep the storage guidance explicitly deferred until recurring corruption or sustained bloat is observed
- relax the foreach parser test to accept the current nested loop/foreach error wording
- align the authoritative workflow driver ID with the task branch change during conflict resolution
Files changed:
docs/storage.md | 7 ++++++-
packages/core/src/__tests__/workflow-ir-foreach.test.ts | 2 +-
packages/engine/src/workflow-authoritative-driver.ts | 2 +-
3 files changed, 8 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-6008
Fusion-Task-Lineage: d8c7c05c-f003-453d-bbd1-d9f0dda62f7c
Align mission goal link write paths on the documented GOAL_NOT_FOUND contract.
- return 400 GOAL_NOT_FOUND from linkable goal validation instead of 404 when a goal is missing
- update mission goal route tests to assert the new error payload across create, patch, set, and add flows
- document the link-vs-unlink missing-goal behavior and add a patch changeset for the published CLI package
Files changed:
.../FN-5985-mission-goal-not-found-contract.md | 5 ++++
docs/missions.md | 2 +-
.../__tests__/mission-goal-links-routes.test.ts | 32 +++++++++++++++++-----
packages/dashboard/src/mission-routes.ts | 9 +++++-
4 files changed, 39 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-5985
Fusion-Task-Lineage: 5649266e-5813-41b4-8a54-c7c46df61a35
Reduce SQLite and FTS churn on hot task-update paths.
- switch hot task writes to column-scoped UPDATE statements that touch only changed fields plus updatedAt
- keep create and replication-style persistence on full-row INSERT/UPSERT paths and rewrite task.json from the refreshed DB row after partial updates
- route executor lease renewals through renewCheckoutLease and add regression coverage plus storage docs for the narrower write paths
Files changed:
docs/storage.md | 5 +-
.../core/src/__tests__/task-partial-update.test.ts | 191 ++++++
packages/core/src/store.ts | 638 +++++++++++----------
.../src/__tests__/executor-lease-renewal.test.ts | 66 +++
packages/engine/src/executor.ts | 2 +-
5 files changed, 603 insertions(+), 299 deletions(-)
Fusion-Task-Id: FN-5945
Fusion-Task-Lineage: ad0c5b64-f411-4379-85ab-f81edfc18101
Document why live task FTS tables should stay in fusion.db for now.
- expand the storage audit note to cover FN-5976 alongside FN-5943
- explain why moving tasks_fts into an attached database would require abandoning external-content FTS and trigger-based sync
- capture the operational tradeoffs, current code paths, and defer/revisit criteria for a future redesign
Files changed:
docs/storage.md | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-5976
Fusion-Task-Lineage: 5e6c6eea-d1d6-4997-9f2b-a8597a7640be
Add explicit visibility for active missions that remain intentionally unlinked to goals.
- document the no-backfill decision with an engine-emitted unlinked mission advisory
- add a scheduler reporter that emits one deduped workflow insight for active missions without goal links and falls back to task logs when insight storage is unavailable
- cover the advisory reporter and scheduler integration with focused tests
- clear PR remediation errors when changing the Create Pull Request base branch
Files changed:
docs/missions.md | 2 +
.../dashboard/app/components/PrCreateModal.tsx | 2 +
packages/engine/src/__tests__/scheduler.test.ts | 8 +
.../unlinked-missions-advisory-reporter.test.ts | 170 +++++++++++++++++++++
packages/engine/src/scheduler.ts | 18 +++
.../src/unlinked-missions-advisory-reporter.ts | 117 ++++++++++++++
6 files changed, 317 insertions(+)
Fusion-Task-Id: FN-5960
Fusion-Task-Lineage: efdbb4f5-fbd5-4ed7-9b9e-58706041d993
Adds the requirements brainstorm and implementation plan for replacing
fusion's split PR machinery with a first-class PR entity whose lifecycle
is expressed as workflow-graph nodes (pr-create, pr-respond, pr-merge),
plus CONCEPTS.md entries for the PR entity and review-response loop.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>