gsxdsm
f998fe3ffc
FN-7397: pass plugin context to lifecycle hooks
...
Ensure task lifecycle plugin hooks receive a PluginContext when fired through runtime event bridges.
- Append the plugin context for task-created, task-moved, and task-completed hooks when callers only provide raw lifecycle arguments.
- Preserve existing explicit-context hook calls and add coverage for loader and runner lifecycle dispatch paths.
- Cover Compound Engineering sync completion handling so taskStore is available in onTaskCompleted.
Files changed:
.changeset/fn-7397-plugin-hook-context.md | 7 +++
packages/core/src/__tests__/plugin-loader.test.ts | 52 +++++++++++++++++++++-
packages/core/src/plugin-loader.ts | 34 +++++++++++++-
.../engine/src/__tests__/plugin-runner.test.ts | 25 ++++++++++-
.../src/__tests__/sync.test.ts | 29 +++++++++++-
5 files changed, 141 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7397
Fusion-Task-Lineage: 7661714c-cf2a-4f4d-bec1-fc6bc11c0613
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
e85d25e383
FN-7395: fix packaged desktop launch assets
...
Fix installed desktop launches so they use packaged runtime assets without parsing caller workspaces.
- Resolve normal desktop launches from packaged CLI desktop assets, with explicit override and dev paths.
- Stage desktop runtime assets into the published CLI package and include them in npm files.
- Route desktop --no-auth into the embedded dashboard server and document installed/dev launch behavior.
- Cover invalid JSON caller directories, missing packaged assets, package contents, and CLI routing in tests.
Files changed:
.changeset/fn-7395-desktop-launcher.md | 7 ++
docs/cli-reference.md | 12 +-
packages/cli/package.json | 1 +
packages/cli/src/__tests__/bin.test.ts | 19 +++
packages/cli/src/__tests__/package-config.test.ts | 11 ++
packages/cli/src/bin.ts | 10 +-
.../cli/src/commands/__tests__/desktop.test.ts | 132 ++++++++++++++++++---
packages/cli/src/commands/desktop.ts | 85 ++++++++-----
packages/cli/tsup.config.ts | 60 ++++++++++
9 files changed, 285 insertions(+), 52 deletions(-)
Fusion-Task-Id: FN-7395
Fusion-Task-Lineage: e7a8d065-0d41-4fa3-9cea-1cfb5b466d16
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
3219ced7c1
FN-7390: add latest Claude CLI models
...
Expose the latest Claude CLI-callable Anthropic models with corrected supplemental metadata.
- Add Sonnet 5, Fable 5, and Opus 4.8 to the pi-claude-cli supplemental model catalog.
- Update context/output limits for recent Claude 4.x CLI rows.
- Preserve catalog deduplication and assert Fable 5 uses the current 0/0 per MTok pricing.
- Add a patch changeset for the published Fusion CLI package.
Files changed:
.changeset/fn-7390-claude-cli-latest-models.md | 7 ++++
packages/pi-claude-cli/index.ts | 40 ++++++++++++++++--
.../pi-claude-cli/src/__tests__/provider.test.ts | 47 +++++++++++++++-------
3 files changed, 76 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-7390
Fusion-Task-Lineage: 54df5de7-c29e-44af-bcb6-9d768103576e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 15:39:33 -07:00
gsxdsm
d7ee6ce87f
fix: tolerate recovered CE question ids ( #1855 )
...
## Summary
- add an opt-in `allowAnswerQuestionIdDrift` flag for interactive AI
sessions
- keep strict question-id validation by default
- enable the tolerance only for Compound Engineering recovered sessions
so persisted session rows can answer after dashboard
restarts/non-deterministic rehydration
## Test Plan
- `corepack pnpm --filter @fusion/engine exec vitest run
src/__tests__/interactive-ai-session.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/engine typecheck`
- `corepack pnpm --filter @fusion-plugin-examples/compound-engineering
build`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Improved interactive session recovery so persisted answers can
continue after dashboard restarts, even if the question ID changes
during rehydration.
* Keeps strict question-ID validation by default; mismatches still fail
unless drift is explicitly allowed.
* **New Features**
* Added `allowAnswerQuestionIdDrift` option to permit accepting the
persisted question ID during recovered session answering.
* **Tests**
* Added/updated coverage for strict mismatch error behavior and the
successful completion path when drift is enabled.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-01 15:21:17 -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
af6e671e72
FN-7385: preserve live worktrees with fresh fallback
...
Preserve active worktree owners by retrying acquisition on a fresh sibling checkout.
- Add executor fallback that detects active cleanup refusals and creates bounded sibling branches in fresh generated worktrees.\n- Cover DB-only, same-task workflow-step, existing-branch, and exhausted-suffix conflict paths with regression tests.\n- Document the live worktree conflict fallback and add a patch changeset for the published CLI package.\n\nFiles changed:\n .../fn-7385-active-worktree-fresh-fallback.md | 7 +\n docs/architecture.md | 1 +\n .../__tests__/executor-worktree-conflict.test.ts | 103 +++++++++++++-\n .../engine/src/__tests__/executor-worktree.test.ts | 153 ++++++++++++++++++---\n packages/engine/src/executor.ts | 90 ++++++++----\n 5 files changed, 312 insertions(+), 42 deletions(-)
Fusion-Task-Id: FN-7385
Fusion-Task-Lineage: 02c31656-1248-49c0-9063-0750cc8e41c6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:55:57 -07:00
gsxdsm
d94c3591d3
FN-7381: honor project auto plan approval
...
Honor project-level auto plan approval across fresh and recovered triage finalization.
- Merge effective workflow settings during approved-task recovery before resolving the manual plan approval gate.
- Keep release authorization and Workflow Plan Review independent from manual plan approval bypasses.
- Add regression coverage for stored workflow approval settings overridden by project auto approval.
- Document the planApprovalMode precedence and release the fix as a patch.
Files changed:
.changeset/fn-7381-auto-plan-approval.md | 7 ++++
docs/settings-reference.md | 2 +-
docs/workflow-steps.md | 2 ++
.../src/__tests__/effective-settings-merge.test.ts | 12 +++++++
.../triage-plan-review-unavailable-retry.test.ts | 27 +++++++++++++-
packages/engine/src/__tests__/triage.test.ts | 42 ++++++++++++++++++++++
packages/engine/src/triage.ts | 13 ++++---
7 files changed, 99 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7381
Fusion-Task-Lineage: c00fd0d9-ec0a-4dc5-8d6f-b49640157365
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:49:58 -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
Phil Larson
a8a2673429
fix: derive CE question drift option type
2026-07-01 10:38:30 -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
919420e11a
FN-7373: enforce active worktree cap
...
Enforce maxWorktrees at the task-store transition boundary so active execution worktrees cannot exceed the operator cap.
- Reject allocated moves into in-progress when existing active or pending holders already meet maxWorktrees.
- Count in-progress tasks and pending in-progress transitions while excluding the task being moved.
- Cover scheduler and hold-release paths with regression tests and document the hard-cap invariant.
- Add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7373-max-worktrees-cap.md | 7 ++
docs/architecture.md | 2 +-
packages/core/src/__tests__/store-movement.test.ts | 80 +++++++++++++++++++++-
packages/core/src/store.ts | 50 ++++++++++++++
packages/engine/src/__tests__/hold-release.test.ts | 52 ++++++++++++++
.../__tests__/scheduler-workflow-cutover.test.ts | 53 ++++++++++++++
6 files changed, 242 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7373
Fusion-Task-Lineage: be4a9649-f6ae-475f-9395-07433e98de5c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:18:32 -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
627c5fb0bd
FN-7371: clarify CI mode regression guard
...
Clarifies the test-infrastructure regression guard for CI mode selection.\n\n- Update the FNXC rationale for the CI=true --print-mode subprocess test.\n- Document that full-suite mode remains an explicit opt-in via --full or FUSION_TEST_FULL.\n\nFiles changed:\n scripts/__tests__/test-changed.test.mjs | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7371
Fusion-Task-Lineage: b7482ef1-4db7-4003-85f7-3466470d3dff
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-01 10:04:55 -07:00
Phil Larson
80b2dafdf7
fix: limit CE question-id drift tolerance to recovery
2026-07-01 10:00:20 -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
Phil Larson
ad8db59374
fix: tolerate recovered CE question ids
2026-07-01 09:41:20 -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
24279c9aee
fix(FN-7360): trust landed task merge proof
...
Auto-merge finalization now ignores stale branch-only residue once durable merge proof exists, so squash-landed tasks do not stay stuck in review because their task branch history is noisy.
Fusion-Task-Id: FN-7360
2026-07-01 09:06:01 -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
88bcbce0fe
fix(FN-7360): prevent contaminated task branch bases
...
Pin fresh task worktree creation to the resolved integration branch when no explicit executionStartBranch is present, so ambient root checkout state cannot leak sibling task commits into new branches.
Use task baseCommitSha for merge-finalization branch proof when available, allowing already-landed mergeConfirmed tasks to finalize even if historical branch ancestry contains foreign commits.
Fusion-Task-Id: FN-7360
2026-07-01 08:39:58 -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