gsxdsm
d10ea9aef1
FN-7519: add planner-overseer intervention timeline model and UI
...
Introduces a persisted planner-overseer intervention timeline surfaced in the task-detail Planner Oversight cluster, recording stage, reason, action taken, outcome, attempt count/limit, and source links for each intervention.
- Add core `PlannerInterventionEntry` type plus `recordPlannerIntervention`/`getPlannerInterventionTimeline` helpers that persist entries via the run-audit store under the `overseer:intervention` mutation
- Add `PlannerInterventionTimeline` dashboard component rendering the timeline (stage/reason/action/outcome/attempts/links) with associated styles
- Wire the new API route/legacy handler and TaskDetailModal integration to expose and render the timeline
- Add unit tests for the core helpers and the new UI component
- Add changeset for the new minor feature and update architecture/dashboard-guide docs
Files changed:
$(cat /tmp/diffstat_7519.txt)
Fusion-Task-Id: FN-7519
Fusion-Task-Lineage: 3c4fcda3-9eb2-46d3-b142-b0c7d6334cd0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:17 -07:00
gsxdsm
6498d028f2
FN-7517: add task detail oversight quick-controls (level change, manual nudge, stop, explain-current-action)
...
Adds task detail modal controls that let an operator quickly change a task's
oversight level, nudge the planner with a manual instruction, stop oversight
entirely, and request an explanation of the overseer's current action,
backed by new dashboard API routes and engine/core plumbing.
- Add oversight quick-controls UI (level change, manual nudge, stop
oversight, explain-current-action) to TaskDetailModal with supporting
styles in TaskDetailModal.css and TaskCard.css
- Add dashboard legacy API + task-workflow routes to handle the new
oversight actions (register-task-workflow-routes.ts, api/legacy.ts)
- Extend planner-overseer-state and planner-overseer-runtime-snapshot to
track/report manual nudge and stop-oversight state
- Extend PlannerRecoveryController and project-engine to apply manual
oversight actions (level change, nudge, stop, explain) end-to-end
- Add tests: TaskDetailModal.oversight-controls.test.tsx,
tasks-overseer-controls.test.ts,
planner-recovery-controller-manual-action.test.ts, plus updates to
planner-overseer-runtime-snapshot.test.ts and test-helpers
- Update docs/dashboard-guide.md and docs/settings-reference.md
Files changed:
docs/dashboard-guide.md | 2 +
docs/settings-reference.md | 2 +-
packages/core/src/planner-overseer-state.ts | 18 +
packages/dashboard/app/api/legacy.ts | 33 ++
packages/dashboard/app/components/TaskCard.css | 13 +
packages/dashboard/app/components/TaskDetailModal.css | 122 +++++++
packages/dashboard/app/components/TaskDetailModal.tsx | 374 ++++++++++++++++++++-
packages/dashboard/app/components/__tests__/TaskDetailModal.oversight-controls.test.tsx | 290 ++++++++++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.test-helpers.ts | 11 +
packages/dashboard/src/routes/__tests__/tasks-overseer-controls.test.ts | 191 +++++++++++
packages/dashboard/src/routes/register-task-workflow-routes.ts | 68 ++++
packages/engine/src/__tests__/planner-overseer-runtime-snapshot.test.ts | 24 +-
packages/engine/src/__tests__/planner-recovery-controller-manual-action.test.ts | 84 +++++
packages/engine/src/planner-overseer-runtime-snapshot.ts | 11 +
packages/engine/src/planner-recovery-controller.ts | 40 +++
packages/engine/src/project-engine.ts | 102 ++++++
16 files changed, 1380 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7517
Fusion-Task-Lineage: eded7ff5-d126-429d-acbb-9f4bfff5ae2a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:16 -07:00
gsxdsm
c16cc9e08a
FN-7515: expose planner oversight configuration
...
Expose planner oversight as workflow-native configuration across task and workflow surfaces.
- Add a shared TaskForm selector for per-task planner oversight overrides with inherit semantics.
- Thread plannerOversightLevel through new task creation, task detail edits, and legacy dashboard API payloads.
- Add a Workflow Editor Values display group and documentation for configuring workflow defaults.
- Cover create, edit, form, and workflow settings behavior with dashboard tests.
Files changed:
.changeset/fn-7515-planner-oversight-config-exposure.md | 7 ++
docs/dashboard-guide.md | 1 +
docs/settings-reference.md | 2 +-
packages/dashboard/app/api/legacy.ts | 3 +
packages/dashboard/app/components/NewTaskModal.tsx | 12 +++-
packages/dashboard/app/components/TaskDetailModal.tsx | 11 +++-
packages/dashboard/app/components/TaskForm.tsx | 34 ++++++++++
packages/dashboard/app/components/__tests__/NewTaskModal.test.tsx | 31 +++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.inline-editing-and-integrations.test.tsx | 76 ++++++++++++++++++++++
packages/dashboard/app/components/__tests__/TaskForm.test.tsx | 28 ++++++++
packages/dashboard/app/components/__tests__/WorkflowSettingsPanel.test.tsx | 34 ++++++++++
packages/dashboard/app/components/workflow-setting-display.ts | 17 ++++-
12 files changed, 251 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7515
Fusion-Task-Lineage: aded67c0-835c-4046-b691-04dc2bb2d314
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 14:26:46 -07:00
gsxdsm
61c8bdc117
FN-7497: keep accepted chat streams waiting
...
Keep accepted-but-silent chat streams waiting so late responses can reconcile without false timeout failures.
- Stop aborting accepted chat streams when the first SSE event timer fires without content.
- Cover desktop, mobile, planner chat, reattach, hook, and SSE parser paths for late accepted responses.
- Add a patch changeset for the chat first-event timeout fix.
Files changed:
.changeset/fn-7497-chat-first-event-timeout.md | 7 +++
.../app/api/__tests__/legacy-chat-stream.test.ts | 27 ++++++--
packages/dashboard/app/api/legacy.ts | 8 ++-
.../__tests__/ChatView.core-interactions.test.tsx | 41 +++++++++++++
.../__tests__/TaskPlannerChatTab.test.tsx | 71 ++++++++++++++++++++++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 41 +++++++++++++
6 files changed, 188 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7497
Fusion-Task-Lineage: bb53793d-dc78-4a25-af22-ed1c62b73094
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
315f3bc32c
FN-7470: show Git prerequisite during onboarding
...
Add Git availability checks to the first-run GitHub onboarding flow so missing host prerequisites are visible before project setup.
- Probe the server-host Git CLI with a bounded core helper and expose status through the auth status API.
- Render ready/missing Git prerequisite guidance in the GitHub onboarding step with install instructions and localized strings.
- Cover the probe, auth route, and onboarding UI states with regression tests, docs, and a changeset.
Files changed:
.changeset/fn-7470-git-onboarding.md | 7 ++
docs/dashboard-guide.md | 2 +
docs/getting-started.md | 2 +-
packages/core/src/__tests__/git-cli-status.test.ts | 83 +++++++++++++++++++++
packages/core/src/git-cli-status.ts | 56 ++++++++++++++
packages/core/src/index.ts | 7 ++
packages/dashboard/app/api/legacy.ts | 8 ++
.../app/components/ModelOnboardingModal.css | 59 +++++++++++++++
.../app/components/ModelOnboardingModal.tsx | 53 ++++++++++++-
.../__tests__/ModelOnboardingModal.test.tsx | 87 ++++++++++++++++++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 62 ++++++++++++++-
.../dashboard/src/routes/register-auth-routes.ts | 13 +++-
packages/i18n/locales/en/app.json | 11 ++-
packages/i18n/locales/es/app.json | 44 ++++++++++-
packages/i18n/locales/fr/app.json | 44 ++++++++++-
packages/i18n/locales/ko/app.json | 44 ++++++++++-
packages/i18n/locales/zh-CN/app.json | 44 ++++++++++-
packages/i18n/locales/zh-TW/app.json | 44 ++++++++++-
packages/i18n/src/resources.d.ts | 9 +++
19 files changed, 661 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-7470
Fusion-Task-Lineage: 56d6f118-0d82-4f89-bcaa-b01e72a1bf8b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
30a11ac919
FN-7461: count footer queues across task states
...
Correct the dashboard footer counter contract so active task pressure matches board state coverage.
- Count triage and planning lanes as queued while excluding done, archived, and inactive custom lanes.
- Treat only actionable blockedBy values as blocked tasks and keep running/stuck scoped to in-progress work.
- Cover every visible footer counter, background/overlap segments, and the intentional absence of a Done footer count in regression tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7461-footer-counters.md | 7 ++
packages/dashboard/app/api/legacy.ts | 6 +-
.../__tests__/ExecutorStatusBar.test.tsx | 86 +++++++++++++++++++++-
.../app/hooks/__tests__/useExecutorStats.test.ts | 59 ++++++++-------
packages/dashboard/app/hooks/useExecutorStats.ts | 24 +++++-
5 files changed, 150 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-7461
Fusion-Task-Lineage: a1eceb98-76b2-4820-95c4-888ad61b4162
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
91737b1831
FN-7433: add explicit onboarding git setup modes
...
Expose explicit git setup choices in first-run onboarding and project registration.
- Add setup wizard modes for existing repositories, new git initialization, and remote cloning with mode-specific hints and validation.
- Extend project registration to accept gitSetupMode while preserving legacy cloneUrl-only behavior.
- Cover init and clone validation paths with dashboard tests, localized copy, docs, and a published package changeset.
Files changed:
.changeset/fn-7433-onboarding-git-setup.md | 7 +
docs/dashboard-guide.md | 10 ++
docs/getting-started.md | 10 +-
packages/dashboard/app/api/legacy.ts | 1 +
.../dashboard/app/components/SetupWizardModal.css | 77 +++++++++-
.../dashboard/app/components/SetupWizardModal.tsx | 159 ++++++++++++++-------
.../components/__tests__/SetupWizardModal.test.tsx | 107 +++++++++++++-
.../dashboard/src/__tests__/project-routes.test.ts | 98 +++++++++++++
.../src/routes/register-project-routes.ts | 25 +++-
packages/i18n/locales/en/app.json | 23 ++-
packages/i18n/locales/es/app.json | 25 +++-
packages/i18n/locales/fr/app.json | 25 +++-
packages/i18n/locales/ko/app.json | 25 +++-
packages/i18n/locales/zh-CN/app.json | 25 +++-
packages/i18n/locales/zh-TW/app.json | 25 +++-
15 files changed, 538 insertions(+), 104 deletions(-)
Fusion-Task-Id: FN-7433
Fusion-Task-Lineage: 022c25c2-3c2d-4e47-aa8c-02525caad672
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
b8e126eeaf
FN-7425: add GitLab tracking metadata to tasks
...
Persist GitLab tracking metadata and surface it across task APIs and dashboard views.
- add task-store schema, migration, and update helpers for linked GitLab items and stale state
- expose validated GitLab tracking updates through task workflow routes and legacy task payloads
- render GitLab badges, detail-panel metadata, open/unlink actions, styling, i18n strings, and docs
- cover persistence, route validation, task card badges, and task detail interactions with tests
- add a patch changeset for the published Fusion package
Files changed:
.changeset/fn-7425-gitlab-tracking.md | 7 ++
docs/cli-reference.md | 2 +-
docs/dashboard-guide.md | 3 +
packages/core/src/__tests__/db-migrate.test.ts | 29 +++++
.../src/__tests__/store-gitlab-tracking.test.ts | 138 +++++++++++++++++++++
packages/core/src/db.ts | 10 +-
packages/core/src/gitlab-tracking.ts | 10 ++
packages/core/src/index.ts | 3 +-
packages/core/src/store.ts | 135 +++++++++++++++++++-
packages/core/src/types.ts | 49 ++++++++
packages/dashboard/app/api/legacy.ts | 3 +
packages/dashboard/app/components/GitLabBadge.tsx | 33 +++++
packages/dashboard/app/components/TaskCard.tsx | 7 +-
.../dashboard/app/components/TaskCardBadge.tsx | 15 ++-
.../dashboard/app/components/TaskDetailModal.css | 47 +++++--
.../dashboard/app/components/TaskDetailModal.tsx | 134 +++++++++++++++++++-
.../app/components/__tests__/TaskCard.test.tsx | 49 ++++++++
.../TaskDetailModal.gitlab-tracking.test.tsx | 121 ++++++++++++++++++
.../__tests__/TaskDetailModal.test-helpers.ts | 1 +
packages/dashboard/app/styles.css | 9 ++
.../src/__tests__/routes-tasks-ops.test.ts | 136 ++++++++++++++++++++
packages/dashboard/src/gitlab.ts | 24 +++-
packages/dashboard/src/routes/register-gitlab.ts | 1 +
.../src/routes/register-task-workflow-routes.ts | 106 +++++++++++++++-
packages/i18n/locales/en/app.json | 31 +++++
packages/i18n/src/resources.d.ts | 31 +++++
26 files changed, 1106 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-7425
Fusion-Task-Lineage: 9b5e6005-7284-402e-995c-553be2275eff
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
865dec235b
FN-7424: add GitLab task imports
...
Adds GitLab-backed task import flows across the CLI, extension, API, and dashboard.
- Add GitLab client normalization, provenance, duplicate detection, and import routes for project issues, group issues, and merge requests.
- Extend the dashboard import modal with a GitLab provider, resource tabs, previews, imported-state detection, and import actions.
- Add CLI and extension task import commands plus usage event/gating classifications and operator documentation.
- Cover GitLab fetch/import behavior with dashboard, CLI, and gating tests.
Files changed:
.changeset/fn-7424-gitlab-imports.md | 7 +
docs/cli-reference.md | 11 +-
docs/gitlab-parity-inventory.md | 10 +-
docs/task-management.md | 6 +-
packages/cli/skill/fusion/SKILL.md | 2 +-
.../cli/skill/fusion/references/extension-tools.md | 60 ++++
.../skill/fusion/references/fusion-capabilities.md | 6 +
packages/cli/src/__tests__/extension.test.ts | 6 +
.../__tests__/task-command-gitlab-import.test.ts | 97 ++++++
packages/cli/src/bin.ts | 25 +-
packages/cli/src/commands/task.ts | 58 ++++
packages/cli/src/extension.ts | 106 +++++++
packages/core/src/__tests__/usage-events.test.ts | 2 +
packages/core/src/types.ts | 7 +
packages/core/src/usage-events.ts | 3 +
packages/dashboard/app/api/legacy.ts | 52 ++++
.../dashboard/app/components/GitHubImportModal.css | 41 +++
.../dashboard/app/components/GitHubImportModal.tsx | 143 ++++++++-
.../__tests__/GitHubImportModal.test.tsx | 33 ++
packages/dashboard/src/__tests__/gitlab.test.ts | 56 ++++
.../dashboard/src/__tests__/routes-gitlab.test.ts | 99 ++++++
packages/dashboard/src/gitlab.ts | 334 +++++++++++++++++++++
packages/dashboard/src/index.ts | 15 +
packages/dashboard/src/routes.ts | 2 +
packages/dashboard/src/routes/register-gitlab.ts | 192 ++++++++++++
.../engine/src/__tests__/agent-action-gate.test.ts | 4 +
.../gating-classifications-provisioning.test.ts | 13 +-
.../src/__tests__/gating-classifications.test.ts | 6 +
packages/engine/src/gating-classifications.ts | 9 +
29 files changed, 1388 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-7424
Fusion-Task-Lineage: 8012425c-21d5-4b20-adb7-07d2e5aa1cef
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
abb1917999
FN-7419: add Cursor CLI binary path override
...
Add a global Cursor CLI binary path override that is validated before enabling or probing Cursor routing.
- Add global settings schema/types and API support for storing a trimmed Cursor CLI binary path override.
- Surface a Settings Authentication control to save, clear, and test the Cursor CLI binary path.
- Probe configured Cursor binaries before PATH fallbacks and expose diagnostics for status/routes.
- Cover settings, route, dashboard, and cursor runtime behavior with focused tests and documentation.
Files changed:
.changeset/fn-7419-cursor-cli-binary-path.md | 7 ++
docs/cursor-cli-contract.md | 33 ++++--
docs/settings-reference.md | 2 +
.../core/src/__tests__/cursor-cli-settings.test.ts | 34 ++++++
packages/core/src/settings-schema.ts | 6 +
packages/core/src/types.ts | 8 ++
packages/dashboard/app/api/legacy.ts | 17 ++-
.../app/components/CursorCliProviderCard.css | 37 +++++-
.../app/components/CursorCliProviderCard.tsx | 78 ++++++++++++-
.../__tests__/ModelOnboardingModal.test.tsx | 4 +
.../__tests__/SettingsModal.general.test.tsx | 2 +
.../__tests__/SettingsModal.models-auth.test.tsx | 75 ++++++++++++
.../SettingsModal.remote-notifications.test.tsx | 2 +
.../SettingsModal.scheduling-merge.test.tsx | 2 +
.../__tests__/SettingsModal.test-harness.tsx | 3 +
.../dashboard/src/__tests__/routes-auth.test.ts | 130 ++++++++++++++++++++-
.../dashboard/src/routes/register-auth-routes.ts | 69 +++++++++--
.../src/__tests__/probe.test.ts | 61 +++++++++-
.../src/__tests__/process-manager.test.ts | 10 ++
.../src/__tests__/provider.test.ts | 57 +++++++++
plugins/fusion-plugin-cursor-runtime/src/probe.ts | 39 +++++--
.../fusion-plugin-cursor-runtime/src/provider.ts | 15 ++-
plugins/fusion-plugin-cursor-runtime/src/types.ts | 3 +
23 files changed, 655 insertions(+), 39 deletions(-)
Fusion-Task-Id: FN-7419
Fusion-Task-Lineage: 2c192a37-a1db-41a9-99f5-a480ed311d9c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:33 -07:00
gsxdsm
14bb7a3707
feat(FN-7360): remove legacy workflow step engine
...
The step execution engine was already gone (runWorkflowSteps deleted,
workflow_steps table dropped in migration 132). This removes what remained:
the linear step compiler (compileWorkflowToSteps/validateLinearity/
WorkflowCompileError), which survived only as a validator + step-preview
generator.
parseWorkflowIr/validateV2 (which accepts branching graphs) is now the sole
workflow validity gate at save/select/refine and in the graph task runner.
Custom branching workflows are now selectable and run on the graph
interpreter instead of being rejected as non-linear.
- core: delete workflow-compiler.ts; rework store.validateWorkflowCompilable
onto parseWorkflowIr; move MERGE_REGION_NODE_KINDS into
workflow-lifecycle-validation; retag workflow-steps-to-ir as legacy lowering
- engine: drop the compiler double-validation in workflow-graph-task-runner
- dashboard: remove POST /api/workflows/:id/compile + client wrapper; drop the
interpreterOnly response field and editor banner; no post-save compile check
- i18n: remove the orphaned workflowNodes.interpreterOnly key across locales
- tests: reframe two workflow-selection tests whose premise inverted; fix a
pre-existing red in builtin-lead-generation (completion-summary node)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-01 11:28:03 -07:00
gsxdsm
869974cd5a
FN-7383: refresh workflows after chat authoring
...
Chat-authored workflow changes now propagate immediately to workflow selectors and editors.
- Emit workflow lifecycle SSE events when chat, planner, or room workflow tools create, update, select, configure, or delete workflows.
- Force-refresh board workflow caches and the workflow editor list when workflow lifecycle events arrive.
- Add cross-surface tests for chat workflow creation visibility and room/chat workflow tool event behavior.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7383-chat-workflow-authoring.md | 7 +++
.../workflow-selection-cross-surface.test.tsx | 23 +++++++++
packages/dashboard/app/api/legacy.ts | 9 ++--
.../app/components/WorkflowNodeEditor.tsx | 23 ++++++++-
.../app/hooks/__tests__/useBoardWorkflows.test.ts | 27 +++++++---
packages/dashboard/app/hooks/useBoardWorkflows.ts | 22 +++++---
.../utils/__tests__/boardWorkflowsCache.test.ts | 12 ++++-
.../dashboard/app/utils/boardWorkflowsCache.ts | 14 +++++
.../dashboard/src/__tests__/chat-manager.test.ts | 44 ++++++++++++++--
.../dashboard/src/__tests__/chat.rooms.test.ts | 44 ++++++++++++++++
packages/dashboard/src/chat.ts | 59 +++++++++++++++++++---
11 files changed, 255 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-7383
Fusion-Task-Lineage: ebe4c982-214b-402f-b829-a58ace19ffe0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 11:12:59 -07:00
gsxdsm
a65633d878
FN-7368: keep accepted chat sends visible after provider errors
...
Preserve sent chat turns when provider failures arrive after the server accepts a stream.
- Track whether chat stream errors happen before or after server acceptance.
- Reconcile persisted user-message echoes with optimistic bubbles across global chat and planner chat.
- Preserve delivered room-chat messages when reply generation or recovery refresh fails.
- Cover accepted-error and pre-acceptance rollback behavior with focused dashboard tests.
Files changed:
.changeset/fn-7368-chat-provider-error.md | 7 ++
packages/dashboard/app/api/legacy.ts | 25 ++++--
.../app/components/TaskPlannerChatTab.tsx | 47 ++++++++++-
.../__tests__/TaskPlannerChatTab.test.tsx | 71 ++++++++++++++++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 96 ++++++++++++++++++++++
.../app/hooks/__tests__/useChatRooms.test.ts | 25 ++++++
.../app/hooks/createChatStreamHandlers.ts | 10 +--
packages/dashboard/app/hooks/useChat.ts | 48 ++++++++---
packages/dashboard/app/hooks/useChatRooms.ts | 5 +-
9 files changed, 305 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-7368
Fusion-Task-Lineage: b7935c3f-3604-4ed5-b32e-a6ead536a991
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:50:52 -07:00
gsxdsm
7d2bd9794e
FN-7337: make planner chats lazy and archive-scoped
...
Task planner chats now stay out of global chat history until a user interacts and are retained until task archive.
- Load task planner chat tabs with lookup-only resume before any user send.
- Show task-planner sessions in global Chat only after messages exist, including SSE refresh handling.
- Keep interacted planner chats for done tasks while deleting task-scoped planner sessions on archive.
- Cover chat store deletion, planner tab behavior, route filtering, and chat-list refresh with regression tests.
Files changed:
.changeset/fn-7337-planner-chat-retention.md | 7 ++
docs/dashboard-guide.md | 4 +-
packages/core/src/__tests__/chat-store.test.ts | 44 +++++++++
packages/core/src/chat-store.ts | 22 +++++
packages/dashboard/app/api/legacy.ts | 35 ++++++-
.../app/components/TaskPlannerChatTab.tsx | 13 ++-
.../__tests__/TaskPlannerChatTab.test.tsx | 91 +++++++++++++-----
.../dashboard/app/hooks/__tests__/useChat.test.ts | 41 ++++++++
packages/dashboard/app/hooks/useChat.ts | 15 ++-
.../dashboard/src/__tests__/chat-routes.test.ts | 105 +++++++++++++++++++++
.../dashboard/src/routes/register-chat-routes.ts | 17 +++-
packages/dashboard/src/server.ts | 10 +-
packages/engine/src/runtimes/in-process-runtime.ts | 8 ++
13 files changed, 378 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-7337
Fusion-Task-Lineage: 7ef9ed8f-af2e-4fa9-a2b6-0e8c8a805d5e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 23:45:01 -07:00
gsxdsm
ddfd841b53
FN-7312: send task context to planner chat
...
Send bounded task state into task-detail planner chat so status and progress questions can be answered in context.
- Build reusable server-side planner chat context from task metadata, dependencies, steps, comments, activity, source, and review state.
- Pass and validate the task id on planner chat sends to keep sessions scoped to the current task.
- Update planner chat copy, docs, tests, and changeset coverage for task-aware status/progress questions.
Files changed:
.changeset/fn-7312-task-planner-chat-context.md | 7 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/api/legacy.ts | 5 +-
.../app/components/TaskPlannerChatTab.tsx | 5 +-
.../__tests__/TaskPlannerChatTab.test.tsx | 22 ++
.../dashboard/src/__tests__/chat-manager.test.ts | 17 +-
.../dashboard/src/__tests__/chat-routes.test.ts | 76 +++++
.../__tests__/task-planner-chat-context.test.ts | 165 +++++++++++
packages/dashboard/src/chat.ts | 92 +-----
.../dashboard/src/routes/register-chat-routes.ts | 11 +-
.../dashboard/src/task-planner-chat-context.ts | 326 +++++++++++++++++++++
11 files changed, 634 insertions(+), 96 deletions(-)
Fusion-Task-Id: FN-7312
Fusion-Task-Lineage: 90cf0fe3-3984-4a67-bb44-fce492c256eb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 18:51:41 -07:00
gsxdsm
db7b46f60f
FN-7310: add task planner chat tab
...
Add a dedicated task-detail Chat surface for planner-model conversations separate from Activity steering.
- Add task-scoped planner chat session creation and routing with planning-model overrides.
- Render a new top-level Chat tab next to Activity, including streaming responses, tool-call cards, and retry/error states.
- Cover planner chat tab ordering, session reuse, route validation, manager dispatch, and dashboard documentation.
Files changed:
.changeset/fn-7310-planner-chat.md | 7 +
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/api/legacy.ts | 35 +++
.../dashboard/app/components/TaskDetailModal.tsx | 40 ++-
.../app/components/TaskPlannerChatTab.css | 149 ++++++++++
.../app/components/TaskPlannerChatTab.tsx | 322 +++++++++++++++++++++
...etailModal.responsive-and-dependencies.test.tsx | 13 +-
.../__tests__/TaskDetailModal.test-helpers.ts | 3 +
.../components/__tests__/TaskDetailModal.test.tsx | 58 ++++
.../__tests__/TaskPlannerChatTab.test.tsx | 193 ++++++++++++
.../dashboard/src/__tests__/chat-manager.test.ts | 65 +++++
.../dashboard/src/__tests__/chat-routes.test.ts | 106 +++++++
packages/dashboard/src/chat.ts | 132 ++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 68 +++++
14 files changed, 1181 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-7310
Fusion-Task-Lineage: a276c356-599e-4495-9879-472d157d95e5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 17:20:42 -07:00
gsxdsm
5f67c85fea
FN-7285: add workflow icons and trim built-in labels
...
Adds workflow icon metadata while preserving readable workflow names without built-in suffixes.
- Store and validate compact plain-text workflow icons across core APIs, imports, exports, tools, and analytics.
- Render Fusion marks for built-in workflows and custom text icons beside existing workflow labels on board, switcher, detail, and editor surfaces.
- Update workflow editor creation/copy flows, docs, release notes, and tests for icon metadata and shorter built-in names.
Files changed:
.changeset/fn-7285-workflow-icons.md | 7 ++
docs/dashboard-guide.md | 12 +--
.../cli/skill/fusion/references/extension-tools.md | 2 +
.../core/src/__tests__/builtin-workflows.test.ts | 8 +-
packages/core/src/__tests__/db-migrate.test.ts | 7 +-
.../core/src/__tests__/workflow-analytics.test.ts | 15 +--
.../__tests__/workflow-definition-store.test.ts | 31 ++++++
packages/core/src/builtin-workflows.ts | 20 ++--
packages/core/src/db.ts | 11 +-
packages/core/src/index.ts | 4 +
packages/core/src/store.ts | 24 ++++-
packages/core/src/workflow-analytics.ts | 7 +-
packages/core/src/workflow-definition-types.ts | 31 ++++++
packages/dashboard/app/api/legacy.ts | 2 +
packages/dashboard/app/components/Board.tsx | 18 ++--
packages/dashboard/app/components/Column.tsx | 2 +-
packages/dashboard/app/components/TaskCard.tsx | 7 +-
.../dashboard/app/components/TaskDetailModal.tsx | 20 ++--
packages/dashboard/app/components/WorkflowIcon.css | 42 ++++++++
packages/dashboard/app/components/WorkflowIcon.tsx | 49 +++++++++
.../app/components/WorkflowNodeEditor.css | 32 ++++++
.../app/components/WorkflowNodeEditor.tsx | 113 ++++++++++++++++-----
.../dashboard/app/components/WorkflowSwitcher.css | 9 ++
.../dashboard/app/components/WorkflowSwitcher.tsx | 15 ++-
.../dashboard/app/components/WorktreeGroup.tsx | 2 +-
.../app/components/__tests__/Board.test.tsx | 12 +--
.../app/components/__tests__/Lane.test.tsx | 6 +-
.../__tests__/WorkflowNodeEditor.test.tsx | 57 +++++++++--
.../components/__tests__/WorkflowSwitcher.test.tsx | 68 ++++++++-----
.../__tests__/board-mobile-initial-render.test.tsx | 2 +-
.../__tests__/CommandCenter.test.tsx | 4 +-
.../command-center/areas/WorkflowArea.tsx | 2 +
.../areas/__tests__/WorkflowArea.test.tsx | 6 +-
.../settings/sections/GeneralSection.tsx | 6 +-
.../register-command-center-routes.test.ts | 2 +-
.../__tests__/workflow-import-export.test.ts | 32 +++++-
packages/dashboard/src/routes/board-workflows.ts | 6 +-
.../src/routes/register-workflow-routes.ts | 32 +++++-
packages/engine/src/__tests__/agent-tools.test.ts | 4 +-
packages/engine/src/agent-tools.ts | 6 +-
40 files changed, 590 insertions(+), 145 deletions(-)
Fusion-Task-Id: FN-7285
Fusion-Task-Lineage: 0fa689a2-f19d-4d1b-9a40-cc0b2181200a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 12:21:25 -07:00
gsxdsm
04f06e6b70
FN-7269: preserve workflow settings and prompts across import
...
Workflow exports now carry project-specific settings and prompt overrides through import.
- Add settingValues and promptOverrides to workflow export envelopes and client API types.\n- Restore imported setting values and prompt overrides onto the freshly created workflow with validation and rollback on failure.\n- Cover custom and built-in workflow round-trips plus invalid restore-map rejection cases.\n- Document portable workflow exports and add a patch changeset.\n\nFiles changed:\n ...7269-workflow-export-import-settings-prompts.md | 7 ++\n docs/workflow-editor.md | 4 +-\n packages/dashboard/app/api/legacy.ts | 10 +-\n .../__tests__/workflow-import-export.test.ts | 113 ++++++++++++++++++++-\n .../src/routes/register-workflow-routes.ts | 86 +++++++++++++++-\n 5 files changed, 210 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7269
Fusion-Task-Lineage: 718f42d0-c72d-4818-8f8c-979d01e960af
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:28:33 -07:00
gsxdsm
b5da5d310a
FN-7263: refresh custom provider model lists
...
Refresh persisted custom-provider model lists from saved endpoints and expose manual refresh controls.
- Add dashboard API helpers and routes to refresh one or all custom-provider model lists while preserving concurrent settings edits.
- Start background model refresh from serve, dashboard, and daemon startup paths after the server begins listening.
- Add Settings UI refresh actions, row-level status messaging, styles, docs, and regression coverage for refresh behavior.
Files changed:
.changeset/fn-7263-custom-provider-model-refresh.md | 7 +
docs/dashboard-guide.md | 6 +-
docs/settings-reference.md | 2 +-
packages/cli/src/commands/__tests__/daemon.test.ts | 59 +++++
.../cli/src/commands/__tests__/dashboard.test.ts | 51 ++++
packages/cli/src/commands/__tests__/serve.test.ts | 59 ++++-
packages/cli/src/commands/daemon.ts | 39 +++-
packages/cli/src/commands/dashboard.ts | 10 +
packages/cli/src/commands/serve.ts | 11 +-
.../app/__tests__/api-custom-providers.test.ts | 43 ++++
packages/dashboard/app/api/legacy.ts | 11 +
.../app/components/CustomProvidersSection.css | 41 +++-
.../app/components/CustomProvidersSection.tsx | 68 +++++-
.../__tests__/CustomProvidersSection.test.tsx | 227 ++++++++++++++++++
packages/dashboard/src/index.ts | 6 +
.../__tests__/custom-provider-routes.test.ts | 255 ++++++++++++++++++++
.../src/routes/__tests__/custom-providers.test.ts | 12 +
.../src/routes/register-custom-provider-routes.ts | 259 ++++++++++++++++-----
18 files changed, 1101 insertions(+), 65 deletions(-)
Fusion-Task-Id: FN-7263
Fusion-Task-Lineage: 60ee0637-ac85-409f-a376-c01f4bc8e8c5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-30 01:23:09 -07:00
gsxdsm
480d4d03fd
FN-7254: add worktree commit history targets
...
Allow Git Manager users to inspect commits and diffs from registered worktrees without changing mutation targets.
- Add read-only worktreePath targeting to Git commit list and commit diff APIs with registered-worktree validation.
- Add a Commits history target selector and Worktrees "View commits" shortcuts that clear stale diff state when targets change.
- Document the read-only scope and cover API, UI, responsive layout, and mutation-target invariants with tests.
Files changed:
.changeset/fn-7254-git-manager-worktree-commits.md | 7 +
.changeset/fn-7254-worktree-commit-target-ui.md | 7 +
.changeset/fn-7254-worktree-commits.md | 7 +
docs/dashboard-guide.md | 6 +-
packages/dashboard/app/api/legacy.ts | 15 +-
.../dashboard/app/components/GitManagerModal.tsx | 133 ++++++++++++++--
packages/dashboard/app/components/ScriptsModal.css | 113 ++++++++++++++
.../components/__tests__/GitManagerModal.test.tsx | 167 +++++++++++++++++++++
.../dashboard/src/__tests__/routes-git.test.ts | 34 +++++
.../dashboard/src/routes/register-git-github.ts | 31 +++-
10 files changed, 497 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7254
Fusion-Task-Lineage: 37314175-fef4-4f8d-8268-cf27fee09857
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 20:24:24 -07:00
gsxdsm
03d4f95e8a
FN-7224: separate Anthropic subscription and API-key auth
...
Separate Claude subscription OAuth from raw Anthropic API-key authentication surfaces.
- Add synthetic Anthropic Subscription and Anthropic API Key provider IDs while preserving upstream credential storage compatibility.\n- Map dashboard auth routes, CLI auth storage, Settings, and onboarding flows so OAuth login/logout and API-key save/clear no longer share one user-facing card.\n- Extend auth tests, docs, icons, and the release changeset for the split Anthropic authentication behavior.\n\nFiles changed:\n .changeset/fn-7224-separate-anthropic-api-key.md | 7 +\n docs/dashboard-guide.md | 2 +-\n docs/settings-reference.md | 2 +-\n .../src/commands/__tests__/provider-auth.test.ts | 233 +++++++++++++++++++--\n packages/cli/src/commands/provider-auth.ts | 202 +++++++++++++++---\n packages/dashboard/app/api/legacy.ts | 2 -\n .../app/components/ModelOnboardingModal.tsx | 146 ++++---------\n packages/dashboard/app/components/ProviderIcon.tsx | 7 +\n .../__tests__/AuthenticationSection.test.tsx | 89 ++++----\n .../__tests__/SettingsModal.models-auth.test.tsx | 77 ++++---\n .../components/__tests__/onboarding-flow.test.tsx | 29 ++-\n .../components/__tests__/settings-mobile.test.tsx | 17 +-\n .../settings/sections/AuthenticationSection.tsx | 20 +-\n .../dashboard/src/__tests__/routes-auth.test.ts | 111 ++++++----\n .../dashboard/src/routes/register-auth-routes.ts | 93 +++++---\n 15 files changed, 713 insertions(+), 324 deletions(-)
Fusion-Task-Id: FN-7224
Fusion-Task-Lineage: a2db2cf6-3452-4516-81e5-41dcdf47e1d2
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-29 18:32:36 -07:00
gsxdsm
998a7f2745
fix(FN-7226): make plan review the single pre-execution gate
...
Fusion-Task-Id: FN-7226
2026-06-29 01:48:27 -07:00
gsxdsm
013d50fe8b
FN-7206: add Anthropic API-key authentication
...
Add Anthropic API-key authentication alongside the existing OAuth flow.
- Expose Anthropic as a built-in API-key provider without hiding its OAuth controls.
- Render dual-auth Anthropic cards in Settings and model onboarding with key hints, save, and clear actions.
- Cover API status, CLI provider classification, desktop/mobile settings, and onboarding flows with tests and docs.
Files changed:
.changeset/fn-7206-anthropic-api-key.md | 7 +
docs/dashboard-guide.md | 2 +
docs/settings-reference.md | 4 +
.../src/commands/__tests__/provider-auth.test.ts | 51 ++++---
packages/cli/src/commands/provider-auth.ts | 10 +-
packages/dashboard/app/api/legacy.ts | 2 +
.../app/components/ModelOnboardingModal.tsx | 121 +++++++++++++++-
.../__tests__/AuthenticationSection.test.tsx | 141 +++++++++++++++++++
.../__tests__/SettingsModal.models-auth.test.tsx | 51 +++++++
.../__tests__/SettingsModal.test-harness.tsx | 2 +
.../components/__tests__/onboarding-flow.test.tsx | 28 ++++
.../components/__tests__/settings-mobile.test.tsx | 16 ++-
.../settings/sections/AuthenticationSection.tsx | 153 ++++++++++-----------
.../dashboard/src/__tests__/routes-auth.test.ts | 70 ++++++++++
.../dashboard/src/routes/register-auth-routes.ts | 17 ++-
15 files changed, 569 insertions(+), 106 deletions(-)
Fusion-Task-Id: FN-7206
Fusion-Task-Lineage: 3559b7ea-47c6-4f8c-9aa1-5318f47ce07e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 17:03:11 -07:00
gsxdsm
9050ee1a42
FN-7185: add PR feedback addressing action
...
Add a dashboard action that starts an AI pass for actionable pull-request review feedback.
- Add a lifecycle route that validates linked PR tasks, seeds a ce-resolve-pr-feedback steering prompt, returns in-review tasks to active work, and wakes assigned agents when needed.
- Add shared PR feedback gating plus task-card and Review tab buttons with loading states, toasts, styling, docs, and translations.
- Cover the route, API client, task card, and Review tab behavior with regression tests.
Files changed:
.changeset/fn-7185-address-pr-feedback.md | 7 +
docs/dashboard-guide.md | 1 +
packages/dashboard/app/__tests__/api-tasks.test.ts | 12 ++
packages/dashboard/app/api/legacy.ts | 11 ++
packages/dashboard/app/components/TaskCard.css | 7 +-
packages/dashboard/app/components/TaskCard.tsx | 44 +++++-
.../dashboard/app/components/TaskReviewTab.tsx | 41 ++++-
.../app/components/__tests__/TaskCard.test.tsx | 164 +++++++++++++++++++-
.../components/__tests__/TaskReviewTab.test.tsx | 127 ++++++++++++++++
packages/dashboard/app/utils/prFeedback.ts | 22 +++
.../dashboard/src/__tests__/routes-tasks.test.ts | 165 +++++++++++++++++++++
.../src/routes/register-task-workflow-routes.ts | 67 +++++++++
packages/i18n/locales/en/app.json | 10 ++
packages/i18n/locales/es/app.json | 22 ++-
packages/i18n/locales/fr/app.json | 22 ++-
packages/i18n/locales/ko/app.json | 22 ++-
packages/i18n/locales/zh-CN/app.json | 22 ++-
packages/i18n/locales/zh-TW/app.json | 22 ++-
18 files changed, 764 insertions(+), 24 deletions(-)
Fusion-Task-Id: FN-7185
Fusion-Task-Lineage: b2e98163-4fc6-45c9-8ace-a14eeb096e10
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 02:04:31 -07:00
gsxdsm
0956214009
FN-7184: render pull request review context
...
Render pull-request review details in the task Review tab so PR-backed tasks show actionable context.\n\n- Preserve PR review metadata when mapping legacy review API data.\n- Show PR reviewers, checks, blocking reasons, comment state, author, path, and GitHub links.\n- Add responsive Review-tab styles and coverage for empty, partial, and populated PR review states.\n\nFiles changed:\n packages/dashboard/app/api/legacy.ts | 51 ++++++--\n .../dashboard/app/components/TaskReviewTab.css | 101 +++++++++++++++\n .../dashboard/app/components/TaskReviewTab.tsx | 94 +++++++++++++-\n .../components/__tests__/TaskReviewTab.test.tsx | 143 ++++++++++++++++++++-\n 4 files changed, 368 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-7184
Fusion-Task-Lineage: 59680355-1afa-44e1-b5e1-33e26335a2c8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-28 00:02:24 -07:00
gsxdsm
59803c243d
FN-7123: use workflow settings for task models
...
Task model displays now resolve task-scoped workflow settings consistently with execution.
- Add a shared workflow settings overlay helper for stored workflow values and declaration defaults.
- Expose task effective settings through the dashboard API and consume them in TaskDetail model surfaces.
- Cover core overlay behavior, route output, and Workflow tab model rendering with regression tests.
- Document workflow model lane precedence and add a published package changeset.
Files changed:
.changeset/fn-7123-workflow-tab-project-model.md | 7 ++
docs/settings-reference.md | 14 ++-
.../__tests__/effective-settings-overlay.test.ts | 70 ++++++++++++++
packages/core/src/effective-settings-overlay.ts | 27 ++++++
packages/core/src/index.ts | 4 +
packages/dashboard/app/api/legacy.ts | 5 +
.../dashboard/app/components/TaskDetailModal.tsx | 13 ++-
...skDetailModal.models-progress-workflow.test.tsx | 46 +++++++++
.../__tests__/TaskDetailModal.test-helpers.ts | 1 +
.../__tests__/WorkflowResultsTab.test.tsx | 33 +++++++
packages/dashboard/app/test/mockApi.ts | 9 ++
.../task-effective-settings-route.test.ts | 107 +++++++++++++++++++++
.../src/routes/register-task-workflow-routes.ts | 21 ++++
packages/engine/src/effective-settings.ts | 25 ++---
14 files changed, 355 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-7123
Fusion-Task-Lineage: 5fa9d338-c886-44aa-bdba-0d361b3602d5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-06-27 12:20:42 -07:00
gsxdsm
7137e36ccb
FN-7073: serve file previews inline
...
File viewer previews now request inline-safe responses while downloads remain attachments.
- Add an inline preview query option to file download URL helpers and preview consumers.
- Serve known media and PDF preview extensions with real MIME types, inline disposition, nosniff, and sandbox CSP headers.
- Keep explicit downloads and unknown file types on attachment/octet-stream behavior.
- Cover preview and download header behavior with dashboard route and component tests.
Files changed:
.changeset/fn-7073-file-viewer-inline-preview.md | 7 +
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/api/legacy.ts | 9 +-
.../dashboard/app/components/DockFilesView.tsx | 2 +-
.../dashboard/app/components/FileBrowserModal.tsx | 2 +-
.../components/__tests__/DockFilesView.test.tsx | 14 +-
.../components/__tests__/FileBrowserModal.test.tsx | 12 +-
.../register-file-workspace-routes.test.ts | 141 +++++++++++++++++++++
.../src/routes/register-file-workspace-routes.ts | 111 +++++++++++-----
9 files changed, 260 insertions(+), 40 deletions(-)
Fusion-Task-Id: FN-7073
Fusion-Task-Lineage: 922b4aa4-ac6d-4a59-b94f-bab4eeb65530
2026-06-26 14:33:58 -07:00
gsxdsm
3ee47dec86
merge: integrate origin/main into feature/workflow-steps (FN-7039)
...
Resolve conflicts from 56 upstream commits:
- db.ts: renumber my migrations around main's new migration 130 (columnDwellMs) —
enable-id normalization 130→131, drop-table 131→132, SCHEMA_VERSION→132.
- index.ts / routes.ts: take main's new MCP exports/imports; keep WORKFLOW_STEP_TEMPLATES
array removed (kept the WorkflowStepTemplate type).
- merger.ts: keep the legacy post-merge execution path removed (U7c) over main's version.
- ci-workflow.test.ts (from main): add port-4040/process-supervisor allowlist markers to
the gate-script assertions that reference the checker filenames (pre-existing self-match).
Gate green (engine-core 299, ci-shape 62); boot smoke PASS; migration tests + typecheck clean.
2026-06-26 08:50:22 -07:00
gsxdsm
8131d541ca
FN-7038: add live automation run output
...
Add configurable automation tool access with live manual-run streaming for schedules and routines.
- Add an automation tool allowlist model and dashboard selectors for AI prompt steps.
- Stream manual automation and routine run progress, output, step updates, and tool events over SSE.
- Surface live run transcripts in automation/routine cards and document the operator workflow.
- Cover validation, runner callbacks, API streaming, and UI behavior with targeted tests.
Files changed:
.changeset/fn-7038-automation-tools-live-output.md | 7 +
docs/dashboard-guide.md | 9 +
packages/core/src/__tests__/automation.test.ts | 27 +-
packages/core/src/automation.ts | 18 +
packages/core/src/index.ts | 4 +-
packages/core/src/types.ts | 6 +
packages/dashboard/app/api/legacy.ts | 48 +++
packages/dashboard/app/components/RoutineCard.tsx | 16 +-
packages/dashboard/app/components/ScheduleForm.tsx | 53 ++-
.../app/components/ScheduleStepsEditor.tsx | 49 ++-
.../app/components/ScheduledTasksModal.tsx | 72 +++-
packages/dashboard/app/components/ScriptsModal.css | 79 ++++
.../app/components/__tests__/RoutineCard.test.tsx | 45 +++
.../app/components/__tests__/ScheduleForm.test.tsx | 100 +++++-
.../__tests__/ScheduleStepsEditor.test.tsx | 67 +++-
.../__tests__/ScheduledTasksModal.test.tsx | 36 +-
.../src/__tests__/routes-automation.test.ts | 151 +++++++-
packages/dashboard/src/routes.ts | 400 ++++++++++++++++++++-
packages/dashboard/src/server.ts | 7 +-
packages/engine/src/__tests__/cron-runner.test.ts | 56 ++-
.../src/__tests__/pi-create-fn-agent.test.ts | 44 +++
.../engine/src/__tests__/routine-runner.test.ts | 28 ++
packages/engine/src/cron-runner.ts | 20 +-
packages/engine/src/pi.ts | 32 +-
packages/engine/src/routine-runner.ts | 39 +-
packages/i18n/locales/en/app.json | 9 +
packages/i18n/src/resources.d.ts | 21 ++
27 files changed, 1374 insertions(+), 69 deletions(-)
Fusion-Task-Id: FN-7038
Fusion-Task-Lineage: 7f5871d0-1de0-4d22-a9c9-ee9418658677
2026-06-26 02:45:29 -07:00
gsxdsm
347842faca
refactor(FN-7039): drop the legacy workflow_steps table; remove all table readers
...
Final cutover — nothing reads workflow_steps at runtime, so migration 131 drops it.
- Removed the merger post-merge execution path entirely (runPostMergeWorkflowSteps,
hasEnabledPostMergeWorkflowSteps, executePostMerge{Prompt,Script}Step, post-merge
worktree helpers + call site). Graph owns post-merge.
- Executor recovery no longer reads getWorkflowStep().gateMode; gate-ness comes from the
recorded WorkflowStepResult.status.
- Removed store CRUD (create/update/deleteWorkflowStep), materializeWorkflowSteps, and
migrateLegacyWorkflowSteps; selectTaskWorkflow now seeds default-on optional-group node
ids (consistent with create-time). KEPT the plugin step-template palette (getWorkflowStep
plugin-only resolver / listWorkflowSteps plugin-only) — never touches the table.
Removed the dashboard migrate-legacy-steps route + editor migration UI.
- SCHEMA_VERSION 130→131; migration 131 DROP TABLE IF EXISTS workflow_steps; SCHEMA_SQL
table def removed; historical migrations 77/105/109/130 guarded with tableExists().
Proof nothing stranded: the graph executes IR nodes resolved from workflowId (never
stepIds/compiled rows) — materializeWorkflowSteps writes were vestigial. Full @fusion/core
suite (6290), reliability backstop (154), boot smoke, and a seed-at-130 drop test all pass
with the table gone.
Plan U7c.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 02:29:32 -07:00
gsxdsm
a7eb3c4dd8
refactor(FN-7039): delete WORKFLOW_STEP_TEMPLATES + legacy workflow-step management surface
...
U6: delete the built-in WORKFLOW_STEP_TEMPLATES catalog + its materializer
(getBuiltInWorkflowTemplate/ensureWorkflowStepForTemplate/toBuiltInWorkflowStep);
inline the browser-verification + code-review name/prompt/toolMode/gateMode into
their optional-group IR builders (node bytes unchanged); simplify
resolveEnabledWorkflowSteps to an identity-stable pass-through (no materialization,
so the optionalGroupIdSet collision guard is no longer needed). Plugin-contributed
step templates are kept as the editor palette.
U5: remove the legacy /api/workflow-steps REST surface (GET/POST/PATCH/DELETE +
/refine + /workflow-step-templates/:id/create), the dead client fns, and the
Settings management UI; GET /api/workflow-step-templates now serves plugin
templates only. The create-time optional-step toggles remain.
Scope: the workflow_steps store CRUD + table are intentionally KEPT — still consumed
by the engine (merger/recovery) and needed by U7's migration; their removal + the
table drop land in U7.
Plan U5 + U6.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 00:06:31 -07:00
gsxdsm
a0954c7f27
FN-6975: make mission planning modal movable and resilient
...
Make the AI mission planning workspace movable on desktop and safer when streams fail.
- Host the Plan Mission with AI modal in FloatingWindow with desktop drag/resize geometry and mobile full-screen preservation.
- Normalize terminal mission interview stream failures, close SSE/keepalive once, and suppress duplicate late terminal events.
- Cover modal geometry and stream-error behavior with dashboard tests and document the operator-facing behavior.
Files changed:
.changeset/fn-6975-mission-modal-stream.md | 7 ++
docs/dashboard-guide.md | 7 ++
.../api/__tests__/mission-interview-stream.test.ts | 98 ++++++++++++++++++
packages/dashboard/app/api/legacy.ts | 66 ++++++++++---
.../app/components/MissionInterviewModal.css | 51 ++++++++++
.../app/components/MissionInterviewModal.tsx | 37 ++++---
.../__tests__/MissionInterviewModal.test.tsx | 110 ++++++++++++++++++++-
7 files changed, 344 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-6975
Fusion-Task-Lineage: b2ffa558-8b7e-4a46-8882-f2c4f6189831
2026-06-25 16:31:10 -07:00
gsxdsm
e46ea00ff5
FN-6827: add engine status banner
...
Add project-scoped engine connectivity remediation to the dashboard.
- Add engine status/start API helpers and server routes that can resume paused projects or start missing engines.
- Render a project banner with dashboard-only guidance, polling, disabled starting state, localized copy, and focused tests.
- Document the engine status banner behavior and add a changeset for the published CLI package.
Files changed:
.changeset/fn-6827-engine-disconnected-banner.md | 7 +
docs/dashboard-guide.md | 8 +
packages/dashboard/app/api/legacy.ts | 20 +++
.../app/components/EngineStatusBanner.css | 87 +++++++++++
.../app/components/EngineStatusBanner.tsx | 62 ++++++++
.../__tests__/EngineStatusBanner.test.tsx | 145 +++++++++++++++++
.../app/components/dashboard/DashboardBanners.tsx | 3 +
.../app/hooks/__tests__/useEngineStatus.test.ts | 171 +++++++++++++++++++++
packages/dashboard/app/hooks/useEngineStatus.ts | 111 +++++++++++++
packages/dashboard/src/__tests__/server.test.ts | 129 ++++++++++++++++
packages/dashboard/src/server.ts | 89 +++++++++++
packages/i18n/locales/en/app.json | 10 ++
packages/i18n/locales/es/app.json | 10 ++
packages/i18n/locales/fr/app.json | 10 ++
packages/i18n/locales/ko/app.json | 10 ++
packages/i18n/locales/zh-CN/app.json | 10 ++
packages/i18n/locales/zh-TW/app.json | 10 ++
17 files changed, 892 insertions(+)
Fusion-Task-Id: FN-6827
Fusion-Task-Lineage: 56821ca3-04c8-4674-9400-3639f10e463d
2026-06-25 08:35:44 -07:00
gsxdsm
6df4043059
FN-6942: preserve mission workflow selection
...
Missions now carries the selected header workflow through feature and slice triage so created tasks land in the intended lane.
- Add a reusable header workflow switcher slot and share it between Planning and Missions.
- Thread the selected workflow through mission triage UI, API client calls, routes, and MissionStore task creation.
- Cover mission workflow triage behavior with core, dashboard UI, and route tests.
- Document Missions workflow behavior and add a patch changeset.
Files changed:
.changeset/fn-6942-mission-workflow-selection.md | 7 +
docs/dashboard-guide.md | 11 ++
packages/core/src/__tests__/mission-store.test.ts | 114 ++++++++++++
packages/core/src/mission-store.ts | 8 +
packages/dashboard/app/api/legacy.ts | 10 +-
.../app/components/HeaderWorkflowSwitcherSlot.tsx | 99 +++++++++++
.../dashboard/app/components/MissionManager.tsx | 23 ++-
.../components/PlanningWorkflowSwitcherSlot.tsx | 81 +--------
.../__tests__/HeaderWorkflowSwitcherSlot.test.tsx | 124 +++++++++++++
.../MissionManager.workflow-triage.test.tsx | 191 +++++++++++++++++++++
.../app/components/dashboard/MainContent.tsx | 15 +-
packages/dashboard/src/mission-routes.ts | 21 ++-
.../mission-workflow-triage-route.test.ts | 149 ++++++++++++++++
13 files changed, 765 insertions(+), 88 deletions(-)
Fusion-Task-Id: FN-6942
Fusion-Task-Lineage: 53d7b2ea-01cc-4eb6-bdda-988fb684602c
2026-06-25 08:35:44 -07:00
Phil Larson
8cc5fd895e
feat(FN-783): add supported overlap blocker repair API
2026-06-25 03:44:23 -07:00
gsxdsm
28ceca2cbd
Address PR review feedback ( #1747 )
...
- core/store: include workspaceWorktrees in the slim and activity-log-limited
SELECT lists (rowToTask reads it, but the explicit column lists omitted it, so
slim/limited reads dropped the field and could misclassify workspace tasks);
add regression tests for both read surfaces
- dashboard/register-git-github: validate caller-supplied repoPath in resolveGitDir
via isPathWithin containment check (path-traversal hardening for all git
endpoints); make loadWorkspaceConfig a static @fusion/core import per AGENTS.md
- dashboard/legacy: preserve repoPath in the string-form pullBranch overload
- dashboard/GitManagerModal: revalidate selectedRepo against the fetched repo list
so a stale selection can't persist across project switches
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-24 15:43:12 -07:00
gsxdsm
be2866ee66
feat(git-manager): multi-repo workspace support with repo selector
...
- Add GET /api/git/workspace-repos endpoint returning sub-repo list
- Add resolveGitDir() helper: resolves repoPath query param to sub-repo dir
- Update all 34 git endpoints to use resolveGitDir for workspace targeting
- Add repoPath param to 30+ frontend git API functions
- GitManagerModal: auto-detect workspace repos on mount, show repo selector
dropdown at top of sidebar, pass selected repo to all git API calls
- Auto-select first repo when workspace mode is detected
- Repo change triggers data refetch via gitRepoPath dependency
2026-06-24 15:02:12 -07:00
gsxdsm
9e7c85d221
feat(dashboard): workspace detection + task prefix in import wizard
...
- Add POST /api/projects/detect-workspace endpoint for sub-repo scanning
- Modify POST /api/projects to accept workspaceMode + taskPrefix params
- SetupWizardModal: auto-detect sub-repos when path is entered, show
workspace mode checkbox with detected repo count, add task prefix field
auto-derived from project name
- Wire workspaceMode and taskPrefix through registration API call
2026-06-24 14:08:32 -07:00
gsxdsm
90cba95bdd
FN-6933: show stopped engine state in footer
...
Show the dashboard footer when the global AI engine stop control is active.
- Add a stopped executor state derived from globalPause and expose it through the legacy API types.
- Render Stopped with error-red styling and a stop-rectangle icon in the executor status bar.
- Cover stopped state derivation, footer rendering, API responses, and localized labels.
Files changed:
.../dashboard/app/__tests__/api-projects.test.ts | 3 ++-
packages/dashboard/app/api/legacy.ts | 14 +++++++----
.../dashboard/app/components/ExecutorStatusBar.tsx | 11 ++++++---
.../__tests__/ExecutorStatusBar.test.tsx | 27 ++++++++++++++++++++++
.../app/hooks/__tests__/useExecutorStats.test.ts | 22 ++++++++++++++++--
packages/dashboard/app/hooks/useExecutorStats.ts | 10 +++++---
packages/i18n/locales/en/app.json | 1 +
packages/i18n/locales/es/app.json | 2 ++
packages/i18n/locales/fr/app.json | 2 ++
packages/i18n/locales/ko/app.json | 2 ++
packages/i18n/locales/zh-CN/app.json | 2 ++
packages/i18n/locales/zh-TW/app.json | 2 ++
12 files changed, 85 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-6933
Fusion-Task-Lineage: 1f128b36-105a-4133-87ce-75bb8df8a42f
2026-06-23 00:45:00 -07:00
gsxdsm
a1cac3a6a3
fix(dashboard): replace quick chat with modal chat
2026-06-22 15:23:43 -07:00
gsxdsm
5697d2c98b
feat(dashboard): Skills detail renders SKILL.md as markdown + compact file browser
...
SKILL.md now renders via MailboxMessageContent (markdown + sanitized HTML + mermaid) instead of raw <pre>. Files strip is compact and lists all files; clicking a file loads its content in the detail pane (markdown via MailboxMessageContent, other text via <pre>, binary/oversized notice) with a Back-to-SKILL.md affordance. New GET /api/skills/:id/file endpoint (readSkillFileContent: path-traversal-guarded, 2MB ceiling, binary detection) + fetchSkillFileContent client fn.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 11:49:52 -07:00
gsxdsm
35b1838c5f
feat(dashboard): richer GitHub import comments — avatar, time, human/bot badge, nav, filter
...
Comment shape gains authorAvatarUrl + authorIsBot (gh GraphQL Bot/__typename or REST user.type==Bot or [bot] login; avatar from API or github.com/{login}.png, suppressed for bots). New shared CommentsThread (PR + issue) shows author avatar (lucide Bot/User fallback), readable localized timestamp (ISO title), a Human/Bot badge + data-comment-author-type, prev/next chevron nav that scrolls+highlights, and an All/Human/Bot filter defaulting to All.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 11:18:12 -07:00
gsxdsm
a9b0e6c0d1
feat(dashboard): GitHub import issues show comments + a Close-issue action
...
Mirrors the PR detail pattern for issues: GitHubClient.getIssueDetail (gh issue view --json comments, REST fallback) + closeIssue (gh issue close, REST PATCH fallback); new POST /api/github/issues/detail + /issues/close routes. The Issues preview fetches comments on selection (cached, non-blocking) and renders them below the body; a Close-issue button in the preview header (open issues only) closes via the API, toasts, and reflects the closed state without dismissing the view.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 11:10:43 -07:00
gsxdsm
2dc36d9ef4
feat(dashboard): Import Tasks PR preview shows full comments + checks with per-check status
...
New POST /api/github/pulls/detail endpoint + GitHubClient.getPullRequestDetail (gh pr view --json comments,statusCheckRollup, REST fallback). On PR select, the preview fetches detail (cached per PR, body never blocked) and renders below the body: a Checks section (each check name + status pill success/failure/pending/neutral, linked to detailsUrl) and a Comments section (chronological, markdown via MailboxMessageContent). Issues tab unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 10:19:12 -07:00
gsxdsm
e6aebdc316
feat(dashboard): full issue/PR preview, floating dock pop-out, header dedups, gm one-row, single-line quick entry
...
- GitHub import preview shows the full issue/PR body (markdown) + metadata (list already returned full bodies; removed client truncation).
- Task-detail main view: constrain width (no right cutoff); move 'Back to board' into the gray header far right.
- Dock pop-out: smoother touch drag (touch-action:none + captured-element listeners); popping out closes the dock but keeps the floating modal; modal survives dock dismiss.
- Remove duplicate inner headers in Git Manager / Activity Log / Dev Server / Secrets (dock + pop-out chrome already titles them); keep the title on mobile narrow; relocate gm Refresh into the section tab strip.
- Git Manager tabs: one scrollable row of compact icon-only tabs (max visible, scroll if needed).
- List quick entry is single-line (not tall) via singleLine prop; Board unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-22 04:37:28 -07:00
gsxdsm
8dd9697468
FN-6714: backfill commit-association diff stats
...
Backfill historical commit-association diff stats so Command Center LOC can use real persisted git data.
- Add a core backfill API that inspects local git commits for associations with missing additions/deletions and supports dry-run reporting.
- Expose an authenticated Command Center productivity backfill endpoint and route it through the legacy API shim.
- Keep productivity LOC/hour sentinels safe for legacy payloads and document the backfill contract.
- Cover the backfill path, auth gate, productivity analytics, and route registration with tests.
Files changed:
.changeset/fn-6714-command-center-loc-backfill.md | 5 +
docs/architecture.md | 4 +-
docs/storage.md | 4 +-
...mmit-association-diff-backfill.real-git.test.ts | 140 +++++++++++++++++++++
packages/core/src/index.ts | 1 +
packages/core/src/store.ts | 76 ++++++++++-
packages/core/src/types.ts | 9 ++
packages/dashboard/app/api/legacy.ts | 16 +++
.../command-center/areas/ProductivityArea.tsx | 8 +-
.../register-command-center-routes.auth.test.ts | 48 ++++---
.../register-command-center-routes.test.ts | 49 +++++++-
.../src/routes/register-command-center-routes.ts | 20 +++
12 files changed, 354 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-6714
Fusion-Task-Lineage: 657c7789-bbe4-4611-abca-127af05b0300
2026-06-22 03:42:24 -07:00
gsxdsm
26c8d960a2
FN-6893: add editable built-in workflow prompts
...
Enable project-scoped prompt overrides for built-in workflows without allowing structural edits.
- Add workflow prompt override storage, normalization, and IR overlay support for prompt and gate nodes.
- Expose dashboard API routes and Workflow Node Editor controls to edit or reset built-in prompts.
- Cover override persistence, route behavior, editor flows, and engine workflow resolution with tests.
- Document editable built-in prompts and reset-to-default behavior.
Files changed:
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 2 +
docs/workflow-steps.md | 20 ++-
.../__tests__/workflow-definition-store.test.ts | 25 +++
.../workflow-prompt-overrides-store.test.ts | 190 ++++++++++++++++++++
.../__tests__/workflow-prompt-overrides.test.ts | 58 +++++++
packages/core/src/db.ts | 35 +++-
packages/core/src/index.ts | 7 +
packages/core/src/store.ts | 97 ++++++++++-
packages/core/src/workflow-ir-resolver.ts | 21 ++-
packages/core/src/workflow-prompt-overrides.ts | 65 +++++++
packages/dashboard/app/api/legacy.ts | 34 ++++
.../app/components/WorkflowNodeEditor.css | 35 ++++
.../app/components/WorkflowNodeEditor.tsx | 191 ++++++++++++++++++++-
.../__tests__/WorkflowNodeEditor.test.tsx | 136 ++++++++++++++-
.../src/__tests__/workflow-routes.test.ts | 59 +++++++
.../src/routes/register-workflow-routes.ts | 86 +++++++++-
.../workflow-prompt-overrides-resolution.test.ts | 61 +++++++
packages/i18n/locales/en/app.json | 14 +-
packages/i18n/locales/es/app.json | 14 +-
packages/i18n/locales/fr/app.json | 14 +-
packages/i18n/locales/ko/app.json | 14 +-
packages/i18n/locales/zh-CN/app.json | 14 +-
packages/i18n/locales/zh-TW/app.json | 14 +-
24 files changed, 1168 insertions(+), 40 deletions(-)
Fusion-Task-Id: FN-6893
Fusion-Task-Lineage: 961eb119-32e1-44c3-9b51-6edd982fa565
2026-06-21 21:23:41 -07:00
gsxdsm
ef4889585f
FN-6779: add artifacts gallery to Documents
...
Adds a Documents-view artifact gallery backed by dashboard artifact registry APIs.
- Add artifact listing and media-serving endpoints with project scoping, validation, and safe artifact path resolution.
- Add client artifact API helpers, SWR caching, and a useArtifacts hook for background-refresh gallery data.
- Extend Documents view with an Artifacts tab, media previews, localized labels, documentation, tests, and a published package changeset.
Files changed:
.changeset/fn-6779-artifacts-gallery.md | 5 +
docs/dashboard-guide.md | 6 +-
packages/dashboard/app/api/legacy.ts | 34 ++++
.../dashboard/app/components/DocumentsView.css | 142 ++++++++++++++++
.../dashboard/app/components/DocumentsView.tsx | 178 ++++++++++++++++++--
.../components/__tests__/DocumentsView.test.tsx | 163 +++++++++++++++++-
.../app/hooks/__tests__/useArtifacts.test.ts | 136 +++++++++++++++
packages/dashboard/app/hooks/useArtifacts.ts | 145 ++++++++++++++++
packages/dashboard/app/utils/swrCache.ts | 1 +
.../src/routes/__tests__/artifacts-routes.test.ts | 182 +++++++++++++++++++++
.../src/routes/register-task-workflow-routes.ts | 125 ++++++++++++++
packages/i18n/locales/en/app.json | 22 ++-
packages/i18n/locales/es/app.json | 27 ++-
packages/i18n/locales/fr/app.json | 27 ++-
packages/i18n/locales/ko/app.json | 27 ++-
packages/i18n/locales/zh-CN/app.json | 27 ++-
packages/i18n/locales/zh-TW/app.json | 27 ++-
scripts/line-count-baseline.json | 16 +-
18 files changed, 1255 insertions(+), 35 deletions(-)
Fusion-Task-Id: FN-6779
Fusion-Task-Lineage: 1d71e4be-4bfc-4706-9cbf-7214f91a79d1
2026-06-21 16:01:07 -07:00
gsxdsm
eb3477aba4
FN-6835: add system stats node selection
...
Add Command Center controls for inspecting local or remote node system telemetry.
- add a System area node selector with local defaults, remote stats loading, and per-node sample resets
- expose proxied node system-stats fetching and route local node requests through the shared stats builder
- route Vitest kill requests through node-aware proxy plumbing and cover node stats behavior with tests
- add localized node selector copy, docs, and a published package changeset
Files changed:
.changeset/fuzzy-nodes-watch.md | 5 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/api/legacy.ts | 14 +-
.../__tests__/CommandCenter.mobile-scroll.test.tsx | 2 +
.../__tests__/CommandCenter.tablet-layout.test.tsx | 2 +
.../__tests__/CommandCenter.test.tsx | 1 +
.../__tests__/SystemStatsArea.test.tsx | 160 +++++++++++++++++
.../command-center/areas/SystemStatsArea.css | 13 ++
.../command-center/areas/SystemStatsArea.tsx | 72 +++++++-
.../dashboard/src/__tests__/routes-system.test.ts | 122 +++++++++++++
packages/dashboard/src/routes.ts | 190 +++++++++++++--------
packages/i18n/locales/en/app.json | 10 ++
packages/i18n/locales/es/app.json | 10 ++
packages/i18n/locales/fr/app.json | 10 ++
packages/i18n/locales/ko/app.json | 10 ++
packages/i18n/locales/zh-CN/app.json | 10 ++
packages/i18n/locales/zh-TW/app.json | 10 ++
17 files changed, 562 insertions(+), 83 deletions(-)
Fusion-Task-Id: FN-6835
Fusion-Task-Lineage: 8f9a047b-78d0-477e-824e-f7592966cdc0
2026-06-21 13:25:41 -07:00
gsxdsm
7ef381762a
feat: start engines by default
2026-06-20 23:57:37 -07:00