gsxdsm
9c2a264322
FN-7398: restore Anthropic model selection
...
Restore Anthropic model selector discovery across API-key, OAuth subscription, and Claude CLI flows.
- Read injected auth storage when building /api/models so Settings connection state feeds model availability.
- Keep Anthropic subscription OAuth separate from direct Anthropic API-key rows while allowing enabled Claude CLI models to appear.
- Add regression coverage for selector rendering, stale empty catalog refresh, and authenticated model-route filtering.
- Document the restored Anthropic provider surfaces and add a patch changeset.
Files changed:
.changeset/fn-7398-anthropic-model-selector.md | 7 ++
docs/settings-reference.md | 4 +-
.../components/__tests__/ModelSelectorTab.test.tsx | 105 +++++++++++++++++
.../app/hooks/__tests__/useModelsCache.test.ts | 40 +++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 125 ++++++++++++++++++++-
.../dashboard/src/routes/register-model-routes.ts | 60 +++++++++-
6 files changed, 333 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-7398
Fusion-Task-Lineage: 5d1b1b8e-9b8b-40fe-b76f-7d6142e0e21f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
07aa1a0085
FN-7399: widen Project Models model menus
...
Make Project Models dropdown menus easier to scan without changing shared selector defaults.
- Add an opt-in readable menu width mode to the shared custom model dropdown.
- Apply the wider menu only to Project Models lane, workflow, and preset model selectors.
- Cover readable sizing, viewport clamping, and default trigger-width behavior with dashboard tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/wide-project-model-dropdowns.md | 7 +
.../app/__tests__/settings-sections.test.tsx | 66 ++++++-
.../app/components/CustomModelDropdown.tsx | 17 +-
.../__tests__/CustomModelDropdown.test.tsx | 210 +++++++++++++++++++++
.../settings/sections/ProjectModelsSection.tsx | 8 +-
5 files changed, 301 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-7399
Fusion-Task-Lineage: 40aae990-37bc-4ed8-8e2a-7e78a543053b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
519d8dfbc8
FN-7394: stabilize broad App test setup
...
Stabilize App.test.tsx by resetting shared dashboard shell mocks for broad runs.
- Add default workflow and dashboard health API mock responses for App-level setup.
- Keep the default project list, current project, and persisted project view mode aligned between tests.
- Use persistent auth/settings mocks where App onboarding checks can re-fetch state.
Files changed:
.../app/components/__tests__/App.test.tsx | 65 ++++++++++++++++++----
1 file changed, 55 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7394
Fusion-Task-Lineage: 9b59ad83-817d-4285-940d-42d1bec29c20
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
19e59ec6c8
FN-7396: separate Anthropic OAuth routing paths
...
Separate Anthropic subscription OAuth execution from raw API-key and Claude CLI routing.
- Route subscription-backed Anthropic selections through a dedicated anthropic-subscription provider instead of raw anthropic API-key storage or implicit CLI execution.
- Preserve Anthropic OAuth refresh, status, usage, and re-login banner behavior across separated and legacy credential rows.
- Add dashboard and engine coverage for OAuth subscription auth, raw API-key isolation, and explicit Claude CLI routing.
- Document the separated Anthropic subscription, API-key, and CLI surfaces and add a release changeset.
Files changed:
.../fn-7396-anthropic-oauth-cli-api-paths.md | 7 ++
docs/dashboard-guide.md | 4 +-
docs/settings-reference.md | 12 ++-
.../__tests__/OAuthReloginBanner.test.tsx | 118 +++++++++++++++++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 29 +++++
packages/dashboard/src/__tests__/usage.test.ts | 109 ++++++++++++++++++-
.../dashboard/src/routes/register-auth-routes.ts | 20 +++-
packages/dashboard/src/usage.ts | 21 +++-
packages/engine/src/__tests__/auth-storage.test.ts | 65 ++++++++++++
.../src/__tests__/pi-create-fn-agent.test.ts | 55 ++++++++--
packages/engine/src/auth-storage.ts | 61 +++++++++--
packages/engine/src/pi.ts | 70 ++++++++----
12 files changed, 521 insertions(+), 50 deletions(-)
Fusion-Task-Id: FN-7396
Fusion-Task-Lineage: f5f42a40-b855-46ad-b2ae-3509e903f286
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
1ccef81950
FN-7393: add planner chat task metrics access
...
Planner chat can now answer read-only task usage and timing questions with scoped metrics context.
- Add a task-scoped metrics tool for token, cost, runtime, timing-event, workflow-step, and per-model usage summaries.
- Wire planner chat to expose the metrics tool only for task-detail planner sessions.
- Cover metric aggregation, stale pricing uncertainty, chat tool routing, and planner context behavior with dashboard tests.
- Document planner chat metrics support and add a published package changeset.
Files changed:
.changeset/fn-7393-planner-metrics.md | 7 +
docs/dashboard-guide.md | 2 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 153 +++++++
.../__tests__/task-planner-chat-metrics.test.ts | 243 +++++++++++
packages/dashboard/src/chat.ts | 61 ++-
.../dashboard/src/task-planner-chat-context.ts | 5 +-
.../dashboard/src/task-planner-chat-metrics.ts | 445 +++++++++++++++++++++
7 files changed, 912 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-7393
Fusion-Task-Lineage: aed7574e-67cf-49af-982f-dfd4620ebe0a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
4beae7130d
FN-7392: suppress hidden planner chat unread badges
...
Suppress hidden task-planner chat replies from triggering the global unread badge while preserving opt-in common-feed behavior.
- Enrich chat message SSE payloads with session agent metadata and task chat common-feed visibility.
- Ignore hidden `task-planner:` assistant events in the chat unread badge hook.
- Cover hidden, visible, and legacy payload behavior with dashboard SSE and hook tests.
- Document the unread badge scope and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7392-planner-chat-unread.md | 7 +
docs/dashboard-guide.md | 2 +-
.../app/components/__tests__/App.test.tsx | 55 ++++++++
.../app/hooks/__tests__/useChatUnreadBadge.test.ts | 110 ++++++++++++++++
packages/dashboard/app/hooks/useChatUnreadBadge.ts | 32 ++++-
packages/dashboard/src/__tests__/sse.test.ts | 141 ++++++++++++++++++++-
packages/dashboard/src/sse.ts | 36 +++++-
7 files changed, 378 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7392
Fusion-Task-Lineage: 13fd5c51-eefa-4088-979b-005c8b217f89
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:34 -07:00
gsxdsm
bfe5ceddc8
FN-7389: dedupe Claude CLI Sonnet 5 models
...
Keep Claude Sonnet 5 visible only through eligible provider catalogs without duplicate picker rows.
- Dedupe API model rows by provider/model after registry and supplemental catalog merges.
- Cover Claude CLI Sonnet 5 visibility, disabled-toggle filtering, and duplicate suppression in API tests.
- Add dropdown coverage for stale direct-Anthropic favorite shells when Claude CLI Sonnet 5 is selected.
- Add a patch changeset for the model picker fix.
Files changed:
.changeset/fn-7389-sonnet-5-model-list.md | 7 +++++
.../__tests__/CustomModelDropdown.test.tsx | 33 ++++++++++++++++++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 15 ++++++++--
.../dashboard/src/routes/register-model-routes.ts | 12 ++++++++
4 files changed, 65 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7389
Fusion-Task-Lineage: d41b422e-60f9-46c3-9c6f-d115a86e9e2a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:33 -07:00
gsxdsm
775ff5fb9c
FN-7391: route Anthropic subscription chats through Claude CLI
...
Keep Anthropic OAuth subscription credentials away from the direct /v1 provider while preserving raw API-key routing.
- Treat direct anthropic auth as raw API-key-only in auth storage and model discovery.
- Re-route persisted anthropic model selections to the Claude CLI provider when no raw Anthropic API key is configured.
- Add regression coverage for OAuth-only routing, raw API-key preservation, and provider list separation.
- Document the distinct raw API key, OAuth subscription, and Claude CLI routes.
Files changed:
.../fn-7391-anthropic-subscription-cli-routing.md | 7 ++
docs/settings-reference.md | 2 +-
.../dashboard/src/__tests__/routes-auth.test.ts | 74 ++++++++++++++
.../dashboard/src/routes/register-model-routes.ts | 27 +++++-
packages/engine/src/__tests__/auth-storage.test.ts | 108 +++++++--------------
.../src/__tests__/pi-create-fn-agent.test.ts | 100 +++++++++++++++++++
packages/engine/src/auth-storage.ts | 45 ++++-----
packages/engine/src/pi.ts | 61 ++++++++++++
8 files changed, 319 insertions(+), 105 deletions(-)
Fusion-Task-Id: FN-7391
Fusion-Task-Lineage: d1fecc2d-7f31-408c-bf65-0e65b7fd88b1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:33 -07:00
gsxdsm
18b07b5b7d
FN-7388: Fix folded Android terminal mobile sizing
...
Fix Android foldable terminal surfaces so initial folded panes use mobile viewport geometry.\n\n- Use touch visualViewport dimensions when classifying terminal mobile mode.\n- Apply mobile TerminalModal shell styles outside media queries for folded Android panes.\n- Cover folded Android viewport behavior in terminal and viewport-mode tests.\n- Document the folded viewport baseline invariant and add a patch changeset.\n\nFiles changed:\n .changeset/fn-7388-android-folded-terminal-spacing.md | 7 +++\n docs/solutions/ui-bugs/mobile-terminal-folded-viewport-baseline.md | 8 ++-\n packages/dashboard/app/components/SessionTerminal.tsx | 18 +++++-\n packages/dashboard/app/components/TerminalModal.css | 37 +++++++++++\n packages/dashboard/app/components/TerminalModal.tsx | 31 ++++++++-\n packages/dashboard/app/components/__tests__/SessionTerminal.mobile.test.tsx | 31 +++++++++\n packages/dashboard/app/components/__tests__/TerminalModal.test.tsx | 73 ++++++++++++++++++++++\n packages/dashboard/app/hooks/__tests__/useViewportMode.test.ts | 29 ++++++++-\n packages/dashboard/app/hooks/useViewportMode.ts | 26 +++++++-\n 9 files changed, 251 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7388
Fusion-Task-Lineage: cdf2ef0d-be1f-4414-9113-17ffebdecde5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39: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
4694b4a8c9
FN-7387: move destructive task actions to menu bottom
...
Task context menus now place destructive actions after safer task operations.
- Reorder shared task action descriptors so Reset and Delete render at the bottom, with Delete last.
- Update context-menu model coverage for lifecycle, GitHub tracking, pause, and workflow column states.
- Add a patch changeset for the published Fusion CLI package.
Files changed:
.changeset/fn-7387-context-menu-action-order.md | 7 ++++++
.../dashboard/app/components/TaskContextMenu.tsx | 24 +++++++++++--------
.../components/__tests__/TaskContextMenu.test.tsx | 27 +++++++++++++---------
3 files changed, 38 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-7387
Fusion-Task-Lineage: f320ed96-d5e7-48f4-9151-59357ae12de7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 11:18:57 -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
4378053433
FN-7386: overlay Activity expand controls and remove Raw duplicate
...
Overlay Activity expansion controls while keeping Raw logs to a single fullscreen affordance.
- Move Live and Feed Activity expand controls into overlaid buttons instead of a reserved toolbar row.
- Let Raw logs rely on AgentLogViewer fullscreen controls, including loading and empty states, to avoid duplicate expand buttons.
- Update responsive CSS and regression coverage for Activity overlay behavior and Raw fullscreen uniqueness.
- Add a patch changeset for the dashboard Activity control fix.
Files changed:
.changeset/fn-7386-activity-expand.md | 7 ++++
.../dashboard/app/components/AgentLogViewer.css | 6 ++++
.../dashboard/app/components/AgentLogViewer.tsx | 34 ++++++++++++-------
packages/dashboard/app/components/TaskChatTab.tsx | 2 +-
.../dashboard/app/components/TaskDetailModal.css | 36 ++++++++++++++------
.../dashboard/app/components/TaskDetailModal.tsx | 29 +++++++++--------
.../TaskDetailModal.attachments-and-tabs.test.tsx | 38 ++++++++++++++++++----
...etailModal.responsive-and-dependencies.test.tsx | 17 ++++++++++
8 files changed, 128 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-7386
Fusion-Task-Lineage: 93728fc2-785d-44de-9903-b61df4911053
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 11:07:32 -07:00
gsxdsm
ec0fa960d7
FN-7382: add triage plan auto-approve toggle
...
Add a board-column shortcut for toggling project plan auto-approval.
- Surface an Auto-approve plan switch in Triage and workflow intake/hold column menus.
- Wire the dashboard setting hook to persist planApprovalMode between workflow and auto-approve-all with optimistic rollback.
- Cover legacy and workflow board propagation plus column menu behavior with tests.
- Document the shortcut and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7382-triage-auto-approve-toggle.md | 7 ++
docs/dashboard-guide.md | 2 +
docs/settings-reference.md | 2 +-
packages/dashboard/app/App.tsx | 4 +
packages/dashboard/app/components/Board.tsx | 7 +-
packages/dashboard/app/components/Column.tsx | 35 ++++++-
.../app/components/__tests__/Board.test.tsx | 55 +++++++++-
.../app/components/__tests__/Column.test.tsx | 75 ++++++++++++++
.../app/components/dashboard/MainContent.tsx | 6 ++
.../dashboard/app/components/dashboard/types.ts | 2 +
.../app/hooks/__tests__/useAppSettings.test.ts | 114 +++++++++++++++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 39 +++++++
12 files changed, 343 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7382
Fusion-Task-Lineage: 1db96b50-3a8f-4074-b957-c30d1745aa23
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 11:01:50 -07:00
gsxdsm
e341c0673f
FN-7379: render planner questions outside tool groups
...
Make planner clarification prompts stay answerable when assistant messages include other tool calls.
- Extract fn_ask_question cards before grouping generic chat tool calls.
- Keep non-question tools in the existing grouped tool-call details.
- Cover persisted and streamed mixed-tool planner transcripts with actionable question assertions.
- Add a patch changeset for the planner-chat fix.
Files changed:
.changeset/fn-7379-planner-question-cards.md | 7 +++
.../app/components/StandardChatSurface.tsx | 73 +++++++++++++++-------
.../app/components/TaskPlannerChatTab.tsx | 3 +
.../__tests__/TaskPlannerChatTab.test.tsx | 48 ++++++++++++--
4 files changed, 103 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-7379
Fusion-Task-Lineage: 5e88f991-cbcf-49d8-a815-fc44d49bad10
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:45:19 -07:00
gsxdsm
37027632e0
FN-7378: upgrade pi SDK dependencies
...
Upgrade the bundled pi SDK packages and compatibility imports for the 0.80.3 release.
- Bump @earendil-works/pi-ai and @earendil-works/pi-coding-agent consumers to ^0.80.3.
- Update pi SDK import paths for the new compatibility and API export map layout.
- Refresh dependency contract tests and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7378-pi-sdk-upgrade.md | 7 ++
packages/cli/package.json | 4 +-
packages/cli/src/__tests__/package-config.test.ts | 8 +-
packages/dashboard/package.json | 2 +-
packages/engine/package.json | 4 +-
.../custom-providers-openai-completions.test.ts | 8 +-
pnpm-lock.yaml | 108 ++++++++++-----------
7 files changed, 72 insertions(+), 69 deletions(-)
Fusion-Task-Id: FN-7378
Fusion-Task-Lineage: ed8847dc-2adf-4ede-aa75-045f2e2436a0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:37:44 -07:00
gsxdsm
a4ef439212
FN-7376: preserve planner chat stop icon
...
Keep Planner Chat mobile action text hiding from clipping the streaming stop icon.
- Narrow the mobile Planner Chat send-button label selector to leave the shared stop icon span visible.
- Add regression coverage for send and stop icon visibility during planner thinking.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7376-planner-chat-stop-icon.md | 7 ++++
.../app/components/TaskPlannerChatTab.css | 6 +++-
.../__tests__/TaskPlannerChatTab.test.tsx | 41 ++++++++++++++++++++++
3 files changed, 53 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7376
Fusion-Task-Lineage: 45ef720e-5ae1-4890-a2ed-afc4f97a8bb0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:30:45 -07:00
gsxdsm
427ce04a6f
FN-7374: stop advertising Claude Sonnet 5 statically
...
Stop Fusion from statically offering Claude Sonnet 5 when account availability is unknown.
- Remove the supplemental direct Anthropic Claude Sonnet 5 model registration and static pricing row.
- Keep Claude CLI supplemental metadata from force-adding Sonnet 5 while preserving other extra Claude models.
- Update model registry, pricing, adapter, and provider tests to expect unavailable or upstream-only Sonnet 5 handling.
- Add a patch changeset for the operator-facing fix.
Files changed:
.changeset/fn-7374-anthropic-sonnet-5-404.md | 7 ++++++
packages/core/src/__tests__/model-pricing.test.ts | 20 +++++++---------
packages/core/src/anthropic-models.ts | 24 +++----------------
packages/core/src/model-pricing.ts | 11 ++-------
.../dashboard/src/__tests__/routes-auth.test.ts | 13 ++++++----
.../src/__tests__/pi-create-fn-agent.test.ts | 28 ++++++----------------
.../src/cli-agent/adapters/__tests__/pi.test.ts | 6 ++---
packages/pi-claude-cli/index.ts | 13 ++--------
.../src/__tests__/process-manager.test.ts | 4 ++--
.../pi-claude-cli/src/__tests__/provider.test.ts | 12 ++--------
10 files changed, 44 insertions(+), 94 deletions(-)
Fusion-Task-Id: FN-7374
Fusion-Task-Lineage: 9c498bb4-c4c1-4dd8-ae80-869dfb1d4c2c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:23:39 -07:00
gsxdsm
17505231d6
FN-7372: add GitHub tracking context menu action
...
Expose GitHub tracking enablement from task context menus while reusing existing task update paths.
- Add an Enable GitHub tracking action to the shared task context menu model for untracked tasks with update-capable hosts.
- Wire board cards and list rows to PATCH githubTracking, refresh local snapshots, close stale menus, and show task-detail toasts.
- Extend context-menu/card/list tests and add a changeset for the published CLI package.
Files changed:
.../fn-7372-enable-github-tracking-context-menu.md | 7 +++
packages/dashboard/app/components/Column.tsx | 2 +-
packages/dashboard/app/components/ListView.tsx | 20 ++++++++-
packages/dashboard/app/components/TaskCard.tsx | 27 +++++++++---
.../dashboard/app/components/TaskContextMenu.tsx | 16 ++++++-
.../app/components/__tests__/ListView.test.tsx | 51 +++++++++++++++++++++-
.../app/components/__tests__/TaskCard.test.tsx | 41 +++++++++++++++++
.../components/__tests__/TaskContextMenu.test.tsx | 38 ++++++++++++++++
packages/dashboard/app/hooks/useTasks.ts | 2 +-
9 files changed, 193 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7372
Fusion-Task-Lineage: 0d2a05fb-6152-4e29-ac2c-88dd055132ee
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:13:33 -07:00
gsxdsm
6d1507aa8f
FN-7380: Close task detail on delete
...
Close task detail hosts immediately after delete confirmation.
- Wire the embedded list split-detail host to clear selected task state when detail content requests close.
- Keep task-detail delete close idempotent across initial delete failures and follow-up prompts.
- Add regression coverage for split-detail closing and optimistic delete failure handling.
- Add a patch changeset for the operator-visible delete detail behavior.
Files changed:
.changeset/fn-7380-task-detail-delete-close.md | 7 ++++
packages/dashboard/app/components/ListView.tsx | 15 +++++++
.../dashboard/app/components/TaskDetailModal.tsx | 4 +-
.../app/components/__tests__/ListView.test.tsx | 22 ++++++++++
.../components/__tests__/TaskDetailModal.test.tsx | 49 ++++++++++++++++++++++
5 files changed, 95 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7380
Fusion-Task-Lineage: 0b7fa676-cf89-4116-aa64-c10840b6fb07
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:00:14 -07:00
gsxdsm
a9e2baa9f8
FN-7367: link imported GitHub issues to tracking
...
Imported GitHub issues can now adopt their source issue as the tracking issue without changing ordinary task defaults.
- Add the project-scoped githubLinkImportedIssuesToTracking setting with docs, Settings UI, and defaults.
- Honor the import-only setting across dashboard, CLI, and extension GitHub issue import paths.
- Cover saved settings and import tracking behavior with CLI, dashboard, and parity tests.
- Add a minor changeset for the published CLI package.
Files changed:
.changeset/fn-7367-github-import-tracking.md | 7 +++
docs/settings-reference.md | 3 +-
packages/cli/src/__tests__/extension.test.ts | 73 ++++++++++++++++++++++
.../task-command-github-import-tracking.test.ts | 16 +++++
packages/cli/src/commands/__tests__/task.test.ts | 28 +++++++++
packages/cli/src/commands/task.ts | 45 +++++++------
packages/cli/src/extension.ts | 45 +++++++------
.../core/src/__tests__/settings-parity.test.ts | 4 ++
packages/core/src/settings-schema.ts | 1 +
packages/core/src/types.ts | 6 ++
.../app/__tests__/settings-save-split.test.ts | 19 ++++++
.../dashboard/app/components/SettingsModal.tsx | 6 ++
.../__tests__/SettingsModal.general.test.tsx | 59 +++++++++++++++++
.../__tests__/SettingsModal.test-harness.tsx | 1 +
.../settings/sections/GeneralSection.tsx | 9 +++
.../dashboard/src/__tests__/routes-github.test.ts | 45 +++++++++++++
.../dashboard/src/routes/register-git-github.ts | 7 +++
17 files changed, 325 insertions(+), 49 deletions(-)
Fusion-Task-Id: FN-7367
Fusion-Task-Lineage: 43671cdf-7e0d-4b7a-9ba2-54c9a367dfec
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:50:57 -07:00
gsxdsm
12ee9a92d2
FN-7361: add exact tool permission overrides
...
Add exact tool-name permission overrides for permanent agent tool usage.
- Add persisted toolRules policy support with normalization, project-default inheritance, and escalation comparison.
- Enforce exact tool dispositions before category rules in engine gating and permanent-agent decisions.
- Extend the permission editor, agent/settings routes, translations, docs, and tests for fine-grained tool controls.
Files changed:
.changeset/fn-7361-tool-permissions.md | 7 +
docs/agents.md | 18 ++-
docs/settings-reference.md | 12 +-
.../agent-permission-policy-resolution.test.ts | 58 +++++++-
.../src/__tests__/agent-permission-policy.test.ts | 17 +++
...settings-schema-agent-permission-policy.test.ts | 6 +-
packages/core/src/agent-permission-policy.ts | 87 ++++++++++--
packages/core/src/index.ts | 2 +-
packages/core/src/types.ts | 19 ++-
.../dashboard/app/components/AgentDetailView.tsx | 17 +--
.../app/components/AgentPermissionPolicyEditor.css | 59 +++++++-
.../app/components/AgentPermissionPolicyEditor.tsx | 156 ++++++++++++++++++++-
.../__tests__/AgentPermissionPolicyEditor.test.tsx | 92 +++++++++++-
.../settings/sections/AgentPermissionsSection.tsx | 6 +-
.../dashboard/src/__tests__/routes-agents.test.ts | 79 +++++++++++
.../src/__tests__/routes-settings.test.ts | 21 +++
.../src/routes/register-agent-core-routes.ts | 37 +++--
.../agent-action-gate-project-default.test.ts | 34 +++++
.../engine/src/__tests__/agent-action-gate.test.ts | 43 ++++++
.../src/__tests__/gating-classifications.test.ts | 55 ++++++++
packages/engine/src/agent-action-gate.ts | 17 ++-
packages/engine/src/permanent-agent-gating.ts | 11 +-
packages/i18n/locales/en/app.json | 15 +-
packages/i18n/locales/es/app.json | 15 +-
packages/i18n/locales/fr/app.json | 15 +-
packages/i18n/locales/ko/app.json | 15 +-
packages/i18n/locales/zh-CN/app.json | 15 +-
packages/i18n/locales/zh-TW/app.json | 15 +-
28 files changed, 878 insertions(+), 65 deletions(-)
Fusion-Task-Id: FN-7361
Fusion-Task-Lineage: 006e4311-91a5-4792-9a54-feaba892129a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:45:30 -07:00
gsxdsm
914c7c189f
FN-7377: hide failed banner in expanded planner chat
...
Hide failed-task alert chrome while the task planner chat is maximized.
- Gate the failed-task banner on Planner Chat expansion state so the expanded conversation gets the full detail surface.\n- Preserve failed-banner visibility for normal detail, collapsed Planner Chat, and expanded Activity views.\n- Add dashboard regression coverage and a patch changeset for the published CLI package.\n\nFiles changed:\n .changeset/fn-7377-planner-chat-failed-banner.md | 7 ++\n .../dashboard/app/components/TaskDetailModal.tsx | 7 +-\n .../components/__tests__/TaskDetailModal.test.tsx | 101 +++++++++++++++++++++\n 3 files changed, 114 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7377
Fusion-Task-Lineage: 5cd8c846-a27d-4040-8124-ecf547300c78
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:35:21 -07:00
gsxdsm
67f93cedd9
FN-7370: show thinking effort in model log markers
...
Display configured thinking effort alongside runtime task-log model markers.
- Add a shared formatter for model marker annotations and use it for triage, executor, reviewer, and workflow-step logs.
- Teach dashboard model parsing to ignore parenthesized marker diagnostics while preserving provider/model resolution.
- Cover thinking-effort markers with engine and dashboard tests, docs, and a patch changeset.
Files changed:
.changeset/fn-7370-thinking-effort-model-logs.md | 7 +++
docs/agents.md | 2 +
packages/dashboard/app/components/TaskChatTab.tsx | 7 +--
.../app/components/__tests__/TaskChatTab.test.tsx | 6 +--
...skDetailModal.models-progress-workflow.test.tsx | 6 +--
.../__tests__/WorkflowResultsTab.test.tsx | 6 +--
.../__tests__/effective-model-resolution.test.ts | 17 ++++--
.../app/components/effective-model-resolution.ts | 23 +++++---
.../src/__tests__/executor-model-marker.test.ts | 62 ++++++++++++++++++++++
.../engine/src/__tests__/executor-test-helpers.ts | 4 ++
.../__tests__/executor-workflow-step-model.test.ts | 23 +++++++-
packages/engine/src/__tests__/pi.test.ts | 12 ++++-
packages/engine/src/__tests__/reviewer.test.ts | 37 +++++++++++++
packages/engine/src/__tests__/triage.test.ts | 20 ++++++-
packages/engine/src/executor.ts | 17 ++++--
packages/engine/src/pi.ts | 19 +++++++
packages/engine/src/reviewer.ts | 7 +--
packages/engine/src/triage.ts | 4 +-
18 files changed, 244 insertions(+), 35 deletions(-)
Fusion-Task-Id: FN-7370
Fusion-Task-Lineage: 2c94a20c-77e1-41db-8af0-76239b30e3c4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:30:00 -07:00
gsxdsm
4805182d0c
FN-7369: add custom answers to Planning Mode confirms
...
Planning Mode confirm prompts can now preserve a user-authored Other answer instead of forcing Yes or No.
- Add an Other option with a textarea to confirm-style Planning Mode questions.
- Submit confirm Other answers with the shared `_other` payload and render them in agent/history formatting.
- Cover confirm Other behavior in modal flow and formatter tests.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7369-confirm-other.md | 7 ++
.../dashboard/app/components/PlanningModeModal.css | 10 ++
.../dashboard/app/components/PlanningModeModal.tsx | 74 +++++++++---
.../PlanningModeModal.planning-flow.test.tsx | 125 +++++++++++++++++++++
.../planning-interview-formatters.test.ts | 27 +++++
packages/dashboard/src/planning.ts | 10 +-
6 files changed, 234 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-7369
Fusion-Task-Lineage: 67b4d943-8ff3-4502-bca1-7e74eb95ac06
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:24:50 -07:00
gsxdsm
7e5d908efa
FN-7375: fix Activity dropdown clipping
...
Keep the task Activity view selector visible without blanking the mobile tab strip.
- Portal the Activity view menu to the document body and clamp its fixed position to the visual viewport.
- Close and refocus the menu safely across task changes, scrolling, resizing, keyboard selection, and outside clicks.
- Add regression coverage for mobile clipping, tab-strip preservation, and the changeset release note.
Files changed:
.changeset/fn-7375-activity-dropdown-overlay.md | 7 +
.../dashboard/app/components/TaskDetailModal.css | 15 +-
.../dashboard/app/components/TaskDetailModal.tsx | 186 ++++++++++++++++++---
.../__tests__/TaskDetailModal.css.test.ts | 7 +-
...etailModal.responsive-and-dependencies.test.tsx | 12 +-
.../TaskDetailModal.task-activity-chat.test.tsx | 61 +++++++
6 files changed, 254 insertions(+), 34 deletions(-)
Fusion-Task-Id: FN-7375
Fusion-Task-Lineage: 5999507a-edd3-4485-935a-885f7c143ed4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:18:47 -07:00
gsxdsm
c194248d4b
FN-7366: restore planner chat in-flight state
...
Planner chat now resumes active generations when task detail is reopened.\n\n- Rehydrate in-flight planner chat snapshots and reattach to the session stream after tab/modal remounts.\n- Preserve accepted optimistic user turns across provider failures while rolling back pre-acceptance failures.\n- Add regression coverage for remount reattachment, attached completion/error refresh, and accepted error reconciliation.\n- Add a patch changeset for the published Fusion package.\n\nFiles changed:\n .changeset/fn-7366-planner-chat-resume.md | 7 +\n .../app/components/TaskPlannerChatTab.tsx | 334 +++++++++++++--------\n .../__tests__/TaskPlannerChatTab.test.tsx | 189 +++++++++++-\n 3 files changed, 382 insertions(+), 148 deletions(-)
Fusion-Task-Id: FN-7366
Fusion-Task-Lineage: b13b9c5e-9295-461f-b44b-f2b5a9008b4f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 09:12:30 -07:00
gsxdsm
fed60ecff6
FN-7364: hide task chats from common feed by default
...
Hide task-detail planner chats from the common Chat feed unless a project opts in.
- Add a project setting and Settings UI toggle for showing populated task chats in the common feed.
- Filter task-planner sessions on chat list routes and avoid stale cached/SSE planner rows in the Chat hook.
- Cover default-hidden and opt-in behavior with route, hook, settings, and parity tests.
- Document the Chat feed behavior and include a patch changeset.
Files changed:
.changeset/fn-7364-task-chat-feed-setting.md | 7 ++
docs/dashboard-guide.md | 2 +
.../core/src/__tests__/settings-parity.test.ts | 8 +++
packages/core/src/settings-schema.ts | 5 ++
packages/core/src/types.ts | 5 ++
.../__tests__/SettingsModal.general.test.tsx | 18 +++++
.../settings/sections/GeneralSection.tsx | 9 +++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 65 +++++++++++++++++
packages/dashboard/app/hooks/useChat.ts | 22 ++++--
.../dashboard/src/__tests__/chat-routes.test.ts | 82 +++++++++++++++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 13 +++-
11 files changed, 227 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7364
Fusion-Task-Lineage: 79a0706c-ba7f-4417-b88b-c5282ae7877c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 08:50:29 -07:00
gsxdsm
d93fac0cc0
FN-7365: allow task popups on every viewport
...
Broaden board task popup routing so the existing popup setting works outside mobile.
- Route ordinary board-card opens to the task popup on desktop, tablet, and mobile when the popup setting is enabled.
- Rename the Appearance setting copy while preserving the stored openMobileTasksInPopup key for compatibility.
- Update tests, documentation, settings schema comments, and the published package changeset for the all-viewport behavior.
Files changed:
.changeset/fn-7365-task-popups-all-viewports.md | 7 ++++
docs/dashboard-guide.md | 6 ++--
docs/settings-reference.md | 2 +-
packages/core/src/settings-schema.ts | 4 +--
packages/core/src/types.ts | 6 ++--
packages/dashboard/app/App.tsx | 6 ++--
.../__tests__/App.openTasksInRightSidebar.test.ts | 42 +++++++++++++++++-----
.../settings/sections/AppearanceSection.tsx | 5 +--
.../sections/__tests__/AppearanceSection.test.tsx | 10 +++---
9 files changed, 62 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-7365
Fusion-Task-Lineage: 58713922-3ff8-4cc9-8f81-26c1e982819e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 08:32:29 -07:00
gsxdsm
62c58402ff
fix(workflow): raise step review timeout default
2026-07-01 08:22:04 -07:00
gsxdsm
e4eb8b6190
FN-7363: prevent mobile task long-press text selection
...
Prevent Board task long-press gestures from selecting card text while preserving editing controls.
- Disable native text selection and WebKit touch callouts on non-editing task cards.
- Prevent touch/pen pointer-down defaults before the long-press context-menu timer starts.
- Cover the mobile selection behavior with component and CSS regression tests and document the Board behavior.
Files changed:
.changeset/fn-7363-mobile-board-text-selection.md | 7 ++++
docs/dashboard-guide.md | 5 +--
packages/dashboard/app/components/TaskCard.css | 17 ++++++++++
packages/dashboard/app/components/TaskCard.tsx | 5 +++
.../app/components/__tests__/TaskCard.test.tsx | 39 ++++++++++++++++++++++
.../app/components/__tests__/board-mobile.test.tsx | 24 +++++++++++++
6 files changed, 95 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7363
Fusion-Task-Lineage: c683ab3b-2caa-4b45-a455-0cc163fd52cc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 08:10:05 -07:00
gsxdsm
1f3a15ec1c
FN-7360: fix Windows desktop runtime packaging
...
Fix packaged Windows desktop startup by preserving Node-safe runtime dependencies and dashboard registry assets.
- Externalize Electron main/preload npm packages so CommonJS updater dependencies load natively.
- Load the dashboard plugin registry manifest through file IO and copy it into dashboard server dist from all build paths.
- Split Windows NSIS and portable artifact names and verify required Electron runtime resources in CI.
- Cover the packaging/runtime invariants with desktop and dashboard regression tests.
Files changed:
.changeset/fn-7360-desktop-windows.md | 7 +++
.github/workflows/desktop-windows.yml | 21 ++++++++
packages/dashboard/package.json | 2 +-
.../src/__tests__/plugin-registry-dist.test.ts | 32 ++++++++++++
.../src/__tests__/routes-plugin-registry.test.ts | 10 ++--
packages/dashboard/src/plugin-routes.ts | 27 +++++++++-
packages/desktop/README.md | 5 +-
packages/desktop/electron-builder.yml | 9 ++++
packages/desktop/scripts/build.ts | 29 ++++++++--
packages/desktop/scripts/workspace-tools.ts | 4 ++
.../desktop/src/__tests__/build-bundling.test.ts | 61 ++++++++++++++++++++++
.../src/__tests__/electron-builder-config.test.ts | 15 ++++++
packages/desktop/src/__tests__/ipc.test.ts | 15 ++++++
.../desktop/src/__tests__/local-runtime.test.ts | 20 +++++++
14 files changed, 247 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-7360
Fusion-Task-Lineage: a2d88130-c24f-43e2-932a-1e174b6afa35
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 08:01: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
f04f01db1d
FN-7362: Fix board task context menu clipping
...
Render Board task context menus as viewport overlays so column clipping no longer hides actions.
- Portal TaskCard context menus to document.body and position them with viewport coordinates.
- Clamp context menus after render and close them when the task identity or column changes.
- Update TaskCard coverage for overflow escape, keyboard/touch placement, and menu lifecycle behavior.
- Document the overlay behavior and add a patch changeset for @runfusion/fusion.
Files changed:
.changeset/fn-7362-board-context-menu-overlay.md | 7 +
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/TaskCard.css | 6 +-
packages/dashboard/app/components/TaskCard.tsx | 38 ++--
.../app/components/__tests__/TaskCard.test.tsx | 242 ++++++++++++++++-----
5 files changed, 211 insertions(+), 87 deletions(-)
Fusion-Task-Id: FN-7362
Fusion-Task-Lineage: 8f2fc0b1-ad63-402e-a960-6a09cbe9c893
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:57 -07:00
gsxdsm
98ca9ac090
FN-7353: fix mobile task menu action taps
...
Fix task context menu touch activation so mobile popup actions complete reliably.
- Commit touch and pen menu actions on pointer release while preserving mouse click activation.
- Guard synthesized mobile clicks so each selected task action runs exactly once and closes the menu.
- Cover Board, List, shared context menu, and Task Detail mobile popup action selection in tests and docs.
- Add a patch changeset for the published CLI bundle.
Files changed:
.changeset/fn-7353-mobile-popup-context-menu.md | 7 ++++
docs/dashboard-guide.md | 12 ++++---
.../dashboard/app/components/TaskContextMenu.tsx | 41 ++++++++++++++++++----
.../app/components/__tests__/ListView.test.tsx | 12 +++++--
.../app/components/__tests__/TaskCard.test.tsx | 26 +++++++++++---
.../components/__tests__/TaskContextMenu.test.tsx | 23 ++++++++++++
.../TaskDetailModal.definition-actions.test.tsx | 31 ++++++++++++++++
7 files changed, 133 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-7353
Fusion-Task-Lineage: 4de96306-1bcc-403d-88fa-be4ec0d9149d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
62c4aae038
FN-7358: recover Sonnet 5 chat fallbacks
...
Recover Sonnet 5 chat sends by applying configured fallback models and clearer failure context.
- Allow explicit dashboard chat model selections to use the configured fallback on retryable provider/model failures.
- Preserve selected provider/model context in no-fallback chat errors so operators can identify unavailable models.
- Expand provider not-found detection and regression coverage for Anthropic Sonnet 5 404 payloads.
- Document fallback behavior and add the published package changeset.
Files changed:
.changeset/fn-7358-sonnet-5-response-failed.md | 7 +++
docs/settings-reference.md | 2 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 71 +++++++++++++++++++---
packages/dashboard/src/chat.ts | 67 +++++++++++++++++---
packages/engine/src/__tests__/pi.test.ts | 71 +++++++++++++++++++++-
.../src/__tests__/transient-error-detector.test.ts | 4 ++
packages/engine/src/pi.ts | 4 +-
packages/engine/src/transient-error-detector.ts | 4 +-
8 files changed, 208 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-7358
Fusion-Task-Lineage: 095a3218-1d4a-4ccb-a8c9-c9f81822b084
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
7457f04287
FN-7355: reuse standard chat surface for planner
...
Task planner chat now renders through the shared Chat surface while preserving task-scoped behavior.
- Extract shared standard chat message, streaming, tool-call, and action-button rendering for reuse outside ChatView.
- Update TaskPlannerChatTab to use the shared surface for messages, thinking output, mobile send dedupe, and stop generation.
- Cover planner chat standard-surface rendering and mobile first-tap behavior in tests, docs, and a patch changeset.
Files changed:
.changeset/fn-7355-standard-planner-chat.md | 7 +
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 18 +
packages/dashboard/app/components/ChatView.tsx | 795 ++-------------------
.../app/components/StandardChatSurface.tsx | 417 +++++++++++
.../app/components/TaskPlannerChatTab.css | 39 +-
.../app/components/TaskPlannerChatTab.tsx | 246 ++++---
...etailModal.responsive-and-dependencies.test.tsx | 4 +-
.../__tests__/TaskPlannerChatTab.test.tsx | 52 ++
9 files changed, 693 insertions(+), 887 deletions(-)
Fusion-Task-Id: FN-7355
Fusion-Task-Lineage: 608ee0d7-3a1b-4f5f-a295-d3a4e62d759e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
72eb9af16c
FN-7351: Make Activity tab switch views
...
Make the Activity tab act as the Live, Feed, and Raw view picker in task details.
- Add an Activity tab dropdown with keyboard, outside-click, and Escape handling.
- Remove the duplicate in-panel Activity view selector while preserving legacy segment routing.
- Keep Activity view switching available in expanded mode and update responsive styling/tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7351-activity-tab-dropdown.md | 7 +
.../dashboard/app/components/TaskDetailModal.css | 84 +++++++++---
.../dashboard/app/components/TaskDetailModal.tsx | 148 +++++++++++++++------
.../TaskDetailModal.attachments-and-tabs.test.tsx | 49 +++++--
.../__tests__/TaskDetailModal.css.test.ts | 8 +-
...lModal.inline-editing-and-integrations.test.tsx | 2 +-
...skDetailModal.models-progress-workflow.test.tsx | 15 ++-
.../__tests__/TaskDetailModal.rendering.test.tsx | 2 +-
...etailModal.responsive-and-dependencies.test.tsx | 29 ++--
.../TaskDetailModal.task-activity-chat.test.tsx | 53 ++++++--
.../components/__tests__/TaskDetailModal.test.tsx | 30 ++++-
11 files changed, 318 insertions(+), 109 deletions(-)
Fusion-Task-Id: FN-7351
Fusion-Task-Lineage: 7b544505-953f-4c77-a92f-eadb2d9477f3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
b3b01bc25d
FN-7357: add all workflows to top-level selectors
...
Extend the dashboard aggregate workflow view across top-level workflow selectors without leaking its sentinel into task creation.
- Add All workflows as an aggregate option for List, Header, Planning/Missions, and Graph selectors.\n- Preserve real workflow handoffs for quick create, planning, missions, and workflow editor entry points.\n- Include aggregate workflow counts and cross-surface regression coverage, plus docs and a changeset.\n\nFiles changed:\n .changeset/fn-7357-all-workflows-selectors.md | 7 +++\n docs/dashboard-guide.md | 9 ++--\n .../workflow-selection-cross-surface.test.tsx | 20 ++++---\n .../app/components/GraphWorkflowSwitcherSlot.tsx | 12 +++--\n .../app/components/HeaderWorkflowSwitcherSlot.tsx | 10 ++--\n packages/dashboard/app/components/ListView.tsx | 63 +++++++++++++++++-----\n .../components/PlanningWorkflowSwitcherSlot.tsx | 5 +-\n .../__tests__/GraphWorkflowSwitcherSlot.test.tsx | 34 ++++++++++++\n .../__tests__/HeaderWorkflowSwitcherSlot.test.tsx | 27 ++++++++++\n .../app/components/__tests__/ListView.test.tsx | 41 +++++++++++++-\n .../app/components/dashboard/MainContent.tsx | 17 ++++--\n .../app/components/workflowStatusCounts.ts | 5 ++\n packages/dashboard/app/hooks/useBoardWorkflows.ts | 20 +++++--\n .../dashboard/app/utils/boardWorkflowSelection.ts | 5 +-\n 14 files changed, 233 insertions(+), 42 deletions(-)
Fusion-Task-Id: FN-7357
Fusion-Task-Lineage: b8658cad-7b12-4a06-b627-e2bde7de6951
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
d448603e71
FN-7352: route completed-task refine menus to detail
...
Completed task context menus now open the existing Task Detail refinement composer.\n\n- Add one-shot detail initial actions so Refine can reopen the composer from board and list menus.\n- Wire Board, List, Column, and grouped task cards to pass Refine through Task Detail instead of hiding it.\n- Cover board/list refine menu behavior with dashboard tests and document the completed-task flow.\n\nFiles changed:\n .changeset/fn-7352-done-context-refine.md | 7 +++\n docs/dashboard-guide.md | 9 ++--\n packages/dashboard/app/components/AppModals.tsx | 9 +++-\n packages/dashboard/app/components/Board.tsx | 7 ++-\n packages/dashboard/app/components/Column.tsx | 5 +-\n packages/dashboard/app/components/ListView.tsx | 7 +--\n packages/dashboard/app/components/TaskCard.tsx | 12 +++--\n .../dashboard/app/components/TaskDetailModal.tsx | 13 +++++\n .../dashboard/app/components/WorktreeGroup.tsx | 4 ++\n .../app/components/__tests__/ListView.test.tsx | 62 +++++++++++++++++++++-\n .../app/components/__tests__/TaskCard.test.tsx | 43 +++++++++++++++\n .../TaskDetailModal.definition-actions.test.tsx | 18 +++++++\n .../app/components/dashboard/MainContent.tsx | 2 +\n .../dashboard/app/components/dashboard/types.ts | 4 +-\n packages/dashboard/app/hooks/useModalManager.ts | 28 ++++++++--\n 15 files changed, 208 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-7352
Fusion-Task-Lineage: 3f1107a6-fdac-4430-ab8d-50096c36cc3c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
d8f3cc64ae
FN-7356: fix mobile chat send taps
...
Make task chat and planner chat submit reliably from mobile send buttons.
- Submit touch and pen send-button interactions on pointer down before soft-keyboard blur can consume the tap.
- Add synchronous duplicate-send guards for task chat and planner chat send flows.
- Cover one-tap mobile send behavior and duplicate prevention in chat component tests.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7356-mobile-chat-send.md | 7 +++
packages/dashboard/app/components/TaskChatTab.tsx | 25 +++++++-
.../app/components/TaskPlannerChatTab.tsx | 36 +++++++++++-
.../app/components/__tests__/TaskChatTab.test.tsx | 65 +++++++++++++++++++++
.../__tests__/TaskPlannerChatTab.test.tsx | 67 +++++++++++++++++++++-
5 files changed, 194 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7356
Fusion-Task-Lineage: 90b243e0-ae36-459d-bf01-112219e7865b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
03160ebac0
FN-7354: add mobile terminal tab selector
...
Add a compact mobile terminal tab selector while preserving desktop tab behavior.
- Replace the mobile terminal tab strip with a native dropdown, new-tab action, and current-tab close action.
- Update mobile terminal header styles so tab, workspace, and session controls wrap cleanly on narrow screens.
- Cover mobile selector behavior with dashboard tests and document the mobile terminal tab workflow.
- Add a release changeset for the published Fusion package.
Files changed:
.changeset/mobile-terminal-tabs-dropdown.md | 7 ++
docs/dashboard-guide.md | 8 +-
.../__tests__/terminal-mobile-header-row.test.ts | 22 ++--
.../dashboard/app/components/TerminalModal.css | 69 +++++++++++-
.../dashboard/app/components/TerminalModal.tsx | 119 +++++++++++++++------
.../components/__tests__/TerminalModal.test.tsx | 107 ++++++++++++++++++
6 files changed, 282 insertions(+), 50 deletions(-)
Fusion-Task-Id: FN-7354
Fusion-Task-Lineage: 20b5b7d5-5795-4cc6-9975-c363954adb97
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 07:33:56 -07:00
gsxdsm
2eb6edb2fc
fix: keep dashboard available after planning failures ( #1846 )
...
## Summary
- keep malformed planning-session responses persisted as retryable error
state instead of deleting the session
- add `fn dashboard --supervise` to restart unexpected dashboard exits
with bounded exponential backoff
- document the supervised-dashboard run mode and add a patch changeset
## Test Plan
- `corepack pnpm --filter @runfusion/fusion exec vitest run
src/commands/__tests__/dashboard.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/session-error-recovery.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/server.test.ts -t "returns health OK independently"
--silent=passed-only --reporter=dot`
- `corepack pnpm lint`
- `corepack pnpm typecheck`
- `corepack pnpm build`
- `corepack pnpm test:gate`
Note: a full `server.test.ts` run also exposes four existing
routine-runner expectation failures unrelated to this change; the added
health check passes when run by name.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added dashboard supervised mode via a new `--supervise` option, with
automatic restarts using a bounded restart budget and exponential
backoff.
* **Bug Fixes**
* Planning sessions now persist as retryable error states when AI output
can’t be parsed, preventing session loss.
* Improved reliability so `GET /api/health` remains available during
these planning error states.
* **Documentation**
* Documented “Dashboard Availability &amp; Supervised Mode”,
including health-check guidance and operational guardrails.
* **Tests**
* Added test coverage for supervised restart behavior, health during
planning errors, and ensuring no unhandled rejections on parse failures.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-01 07:26:24 -07:00
gsxdsm
d4ce6f9319
chore(release): v0.52.0
...
Version bump via changesets.
2026-07-01 00:47:09 -07:00
gsxdsm
d96eb3c644
FN-7349: expand Plan prompt editor width
...
Make Plan prompt editing surfaces span the task-detail layout consistently.
- Scope a Plan prompt wrapper around markdown, empty, inline edit, and revision controls.
- Let SpecEditor action rows and text inputs shrink and wrap within modal, embedded, and mobile layouts.
- Cover full-width Plan prompt behavior with task-detail CSS and rendering tests.
Files changed:
.changeset/plan-prompt-full-width.md | 7 ++
packages/dashboard/app/components/SpecEditor.css | 27 ++++-
.../dashboard/app/components/TaskDetailModal.css | 58 ++++++++-
.../dashboard/app/components/TaskDetailModal.tsx | 13 +-
.../TaskDetailModal.definition-actions.test.tsx | 134 ++++++++++++---------
...etailModal.responsive-and-dependencies.test.tsx | 44 +++++++
6 files changed, 219 insertions(+), 64 deletions(-)
Fusion-Task-Id: FN-7349
Fusion-Task-Lineage: 65defcea-ce70-49fb-bd00-2127239e09d0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 00:28:25 -07:00
gsxdsm
058a041714
FN-7348: pin mobile planning New session footer
...
Keep the mobile Planning Mode New session CTA reachable while saved sessions scroll independently.
- Bound the mobile planning list shell so only the session list scrolls.
- Preserve the sidebar footer as a non-shrinking bottom action in list view.
- Add CSS contract coverage and a changeset for the published CLI package.
Files changed:
.changeset/fn-7348-mobile-planning-new-session.md | 7 ++++++
.../dashboard/app/components/PlanningModeModal.css | 23 +++++++++++++++++
.../__tests__/PlanningModeModal.css.test.ts | 29 ++++++++++++++++++++++
3 files changed, 59 insertions(+)
Fusion-Task-Id: FN-7348
Fusion-Task-Lineage: 0142e539-3e4c-4ac5-9a44-d02bce2c139b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 00:20:56 -07:00
gsxdsm
411f46a5ea
fix(FN-7344): keep planner chat empty state at top
2026-07-01 00:13:47 -07:00
gsxdsm
35d37d603d
fix(FN-7344): compact planner and activity chat inputs
2026-07-01 00:07:42 -07:00
gsxdsm
7c53c97137
fix(FN-7344): make planner chat expansion intentional
2026-06-30 23:51:16 -07:00
gsxdsm
e37260b30c
fix(FN-7344): keep planner chat context expanded
2026-06-30 23:45:03 -07:00