gsxdsm
d8735b3dbe
FN-8249: persist GitHub translations and show status
...
Persist legacy GitHub translation cache entries and expose background translation progress to import operators.
- Backfill historic unscoped translation cache partitions during schema migration.
- Display accessible translating and failure status in the GitHub issues import list.
- Add migration, service, and UI coverage plus operator documentation.
Files changed:
.../fn-8249-github-import-translation-status.md | 7 ++
docs/dashboard-guide.md | 2 +-
.../postgres/import-translation-cache.pg.test.ts | 13 +++-
.../src/__tests__/postgres/schema-applier.test.ts | 48 ++++++++++++
...translation_cache_legacy_partition_backfill.sql | 31 ++++++++
packages/core/src/postgres/schema-applier.ts | 29 ++++++-
.../dashboard/app/components/GitHubImportModal.css | 42 ++++++++++
.../dashboard/app/components/GitHubImportModal.tsx | 29 +++++++
.../__tests__/GitHubImportModal.test.tsx | 90 ++++++++++++++++++++++
.../src/__tests__/import-translate-service.test.ts | 62 +++++++++++++++
10 files changed, 346 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-8249
Fusion-Task-Lineage: 79c26d85-50f1-4d01-9341-a17db5e57f8f
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 16:46:42 -07:00
gsxdsm
b0654031bc
FN-8251: hide overseer eye when oversight is off
...
Resolve inherited workflow oversight before rendering task-card overseer indicators.
- Resolve selected-workflow oversight using the planning workflow identity
- Fail closed for unknown, pending, malformed, and failed inherited settings
- Cover workflow changes and mobile suppression, and document the behavior
- Add a patch changeset for the corrected card indicator
Files changed:
.changeset/fn-8251-card-eye-effective-oversight.md | 7 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/app/components/TaskCard.tsx | 116 ++++++++-------
.../__tests__/TaskCard.oversight.test.tsx | 161 ++++++++++++++++++++-
.../app/components/__tests__/TaskCard.test.tsx | 6 +-
5 files changed, 234 insertions(+), 60 deletions(-)
Fusion-Task-Id: FN-8251
Fusion-Task-Lineage: 72dfa67e-e6d5-4557-91b3-23aff6dcf9e7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 16:38:29 -07:00
gsxdsm
eee04bc1a8
FN-8248: fix Quick Chat popup stacking
...
Make Quick Chat and task popups honor their most recent interaction order.
- Place Quick Chat in the task-detail peer stack while retaining higher utility windows.
- Raise Create Room dialogs above Chat on each open, including mobile sheets.
- Add stacking regression coverage and operator documentation with screenshots.
Files changed:
docs/assets/fn-8248-chat-above-task.png | Bin 0 -> 55108 bytes
docs/assets/fn-8248-mobile-create-room.png | Bin 0 -> 56699 bytes
docs/assets/fn-8248-task-above-chat.png | Bin 0 -> 74263 bytes
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/App.tsx | 13 +++-
.../dashboard/app/components/CreateRoomModal.tsx | 15 ++++-
.../dashboard/app/components/FloatingWindow.tsx | 11 +++-
.../components/__tests__/CreateRoomModal.test.tsx | 72 +++++++++++++++++++++
.../FloatingWindowStack.cross-type.test.tsx | 37 +++++++----
.../app/components/floatingWindowStack.ts | 10 +--
10 files changed, 139 insertions(+), 24 deletions(-)
Fusion-Task-Id: FN-8248
Fusion-Task-Lineage: 94ef20f1-96da-4249-9812-169f780c9451
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 16:34:16 -07:00
gsxdsm
62f121e0c9
FN-8247: stop session advisor with oversight
...
Stop now persists session-advisor disablement and reflects inherited advisor state in task details.
- Persist an explicit advisor-off override and clear its live runtime when stopping oversight.
- Resolve workflow-level advisor defaults for task-detail icons and toggle behavior.
- Cover stop cleanup and desktop/mobile oversight state transitions with regression tests.
- Document the combined stop contract and add a patch changeset.
Files changed:
.changeset/fn-8247-session-advisor-stop-and-icon.md | 7 ++
docs/dashboard-guide.md | 6 +-
packages/dashboard/app/components/TaskDetailModal.tsx | 86 +++++++++++------
packages/dashboard/app/components/__tests__/TaskDetailModal.oversight-controls.test.tsx | 104 +++++++++++++++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.oversight-mobile.test.tsx | 62 ++++++++++++
packages/engine/src/__tests__/project-engine-stop-overseer-session-advisor.test.ts | 62 ++++++++++++
packages/engine/src/project-engine.ts | 13 ++-
7 files changed, 310 insertions(+), 30 deletions(-)
Fusion-Task-Id: FN-8247
Fusion-Task-Lineage: dcb67af7-9a36-4b25-bafa-84722fe158a0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 16:20:10 -07:00
gsxdsm
7517f2eddf
FN-8239: align task card oversight icon state
...
Keep task-card overseer indicators aligned with resolved oversight settings.
- Gate transient Eye badges on the resolved effective oversight level.
- Suppress stale snapshots and empty header wrappers while inherited workflow settings load.
- Add regression coverage and document the consistent off-state behavior.
Files changed:
.changeset/fn-8239-oversight-icon-consistency.md | 7 ++++
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/TaskCard.tsx | 29 ++++++++++++----
.../__tests__/TaskCard.oversight.test.tsx | 40 ++++++++++++++++++++++
.../app/components/__tests__/TaskCard.test.tsx | 23 +++++++++++++
5 files changed, 94 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-8239
Fusion-Task-Lineage: 2857358c-7626-4b04-b1b5-fa51c3a71418
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 14:35:07 -07:00
gsxdsm
9152d8fa61
FN-8229: remove background AI tasks pill
...
Replace the redundant footer AI session control with progress and action visibility in the session notification banner.
- Delete the BackgroundTasksIndicator component, styles, footer wiring, and obsolete translations.
- Surface non-planning generating and retained error sessions through the notification banner while leaving Planning in its dedicated view.
- Update session lifecycle, localization, documentation, and regression coverage.
Files changed:
.../fn-8229-remove-ai-background-tasks-pill.md | 7 +
docs/dashboard-guide.md | 4 +-
packages/dashboard/README.md | 1 -
packages/dashboard/app/App.tsx | 28 +--
.../app/__tests__/css-hygiene-scan.test.ts | 2 -
.../dashboard-component-color-tokenization.test.ts | 1 -
packages/dashboard/app/api/legacy.ts | 2 +-
.../app/components/BackgroundTasksIndicator.css | 130 -------------
.../app/components/BackgroundTasksIndicator.tsx | 210 ---------------------
.../dashboard/app/components/ExecutorStatusBar.css | 3 -
.../dashboard/app/components/ExecutorStatusBar.tsx | 30 +--
.../app/components/SessionNotificationBanner.css | 10 +
.../app/components/SessionNotificationBanner.tsx | 52 ++++-
.../app/components/SubtaskBreakdownModal.tsx | 7 +-
.../app/components/__tests__/App.test.tsx | 11 +-
.../__tests__/ExecutorStatusBar.test.tsx | 1 -
.../__tests__/SessionNotificationBanner.test.tsx | 88 ++++-----
.../components/__tests__/utility-mobile.test.tsx | 191 +------------------
.../app/components/dashboard/DashboardBanners.tsx | 8 +-
.../dashboard/__tests__/DashboardBanners.test.tsx | 30 ++-
.../hooks/__tests__/useBackgroundSessions.test.ts | 21 ++-
.../dashboard/app/hooks/useBackgroundSessions.ts | 21 ++-
.../app/utils/__tests__/appLifecycle.test.ts | 61 ++----
packages/dashboard/app/utils/appLifecycle.ts | 16 +-
packages/dashboard/src/routes.ts | 2 +-
packages/i18n/locales/en/app.json | 33 +---
packages/i18n/locales/es/app.json | 44 ++---
packages/i18n/locales/fr/app.json | 44 ++---
packages/i18n/locales/ko/app.json | 44 ++---
packages/i18n/locales/zh-CN/app.json | 44 ++---
packages/i18n/locales/zh-TW/app.json | 44 ++---
packages/i18n/src/resources.d.ts | 48 ++---
32 files changed, 316 insertions(+), 922 deletions(-)
Fusion-Task-Id: FN-8229
Fusion-Task-Lineage: a232fb04-08ff-4f0a-a440-e94545243e61
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 14:25:30 -07:00
gsxdsm
a746a02f3b
FN-8236: group mobile Settings sections by topic
...
Group the mobile Settings picker by desktop navigation topics while preserving scoped section adjacency.
- Render mobile section choices in native topic optgroups
- Preserve Global-before-Project ordering and search-aware empty groups
- Cover grouped picker behavior and document the mobile navigation
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/SettingsModal.tsx | 31 +++++++--
packages/dashboard/app/components/__tests__/settings-mobile.test.tsx | 80 ++++++++++++++++++++++
3 files changed, 107 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8236
Fusion-Task-Lineage: 3a90bc72-2393-4b41-a7c3-2c9e30c94e01
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 14:13:41 -07:00
gsxdsm
595c27ceae
FN-8235: add mobile Kanban column snapping
...
Mobile Kanban now settles user swipes on the nearest column.
- add a mobile-only, user-driven scroll-end snapping hook
- wire snapping to every live Board rendering and cover interaction boundaries
- document the behavior and add a patch changeset
Files changed:
.changeset/fn-8235-mobile-kanban-snap.md | 7 +
docs/dashboard-guide.md | 6 +
packages/dashboard/app/components/Board.tsx | 19 ++-
.../app/components/__tests__/board-mobile.test.tsx | 14 +-
.../hooks/__tests__/useColumnScrollSnap.test.ts | 159 ++++++++++++++++++
.../dashboard/app/hooks/useColumnScrollSnap.ts | 179 +++++++++++++++++++++
6 files changed, 380 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8235
Fusion-Task-Lineage: 46881e93-59f2-49d6-b29e-fa6150420f2a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 13:53:13 -07:00
gsxdsm
44c784264a
FN-8237: refine mobile footer quick actions
...
Make mobile footer quick actions configurable, reorderable, and immediately applied.
- Expand the selectable quick-action universe and preserve valid configured items.
- Add General settings controls for reordering, adding, and removing footer actions.
- Wire updated navigation settings through the dashboard and document the behavior.
Files changed:
.../fn-8237-mobile-nav-quick-actions-refinement.md | 7 +
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 2 +-
.../src/__tests__/mobile-nav-primary-items.test.ts | 17 +-
packages/core/src/mobile-nav-primary-items.ts | 44 ++-
packages/dashboard/app/App.tsx | 4 +-
packages/dashboard/app/components/AppModals.tsx | 2 +
packages/dashboard/app/components/MobileNavBar.tsx | 319 ++++-----------------
.../dashboard/app/components/SettingsModal.tsx | 4 +
.../app/components/__tests__/MobileNavBar.test.tsx | 18 +-
.../__tests__/SettingsModal.general.test.tsx | 20 ++
.../dashboard/app/components/dashboard/MainContent.tsx | 2 +
.../dashboard/app/components/dashboard/types.ts | 1 +
.../settings/sections/GeneralSection.tsx | 75 ++---
packages/dashboard/app/hooks/useAppSettings.ts | 11 +
packages/i18n/locales/en/app.json | 5 +-
16 files changed, 220 insertions(+), 313 deletions(-)
Fusion-Task-Id: FN-8237
Fusion-Task-Lineage: cff91b30-7ef9-4557-8880-cc71ed74dafb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 13:45:41 -07:00
gsxdsm
f0b6e4be0c
FN-8233: reflect oversight state in menu trigger
...
Make the Oversight menu trigger icon reflect the effective overseer configuration.
- Switch the trigger between Eye and EyeOff based on oversight level and Session advisor state.
- Cover icon updates after changing either control.
- Document the combined trigger-state behavior.
Files changed:
docs/dashboard-guide.md | 6 ++-
.../dashboard/app/components/TaskDetailModal.tsx | 10 +++-
.../TaskDetailModal.oversight-controls.test.tsx | 61 ++++++++++++++++++++++
3 files changed, 74 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-8233
Fusion-Task-Lineage: 16012bf1-94f8-4461-90b6-95d309aa9a6d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 13:38:32 -07:00
gsxdsm
2f7da57601
FN-8230: translate GitHub import issues across pages
...
GitHub import auto-translation now covers every reachable issue page within the fetch cap.
- Translate and retain per-page results while invalidating changed or reloaded issues
- Raise the translation budget for a 300-issue traversal and cover pagination regressions
- Document the GitHub-only pagination behavior and add a patch changeset
Files changed:
.changeset/fn-8230-import-translate-pagination.md | 7 ++
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 4 +-
.../dashboard/app/components/GitHubImportModal.tsx | 33 ++++++---
.../components/GitHubImportTranslateControls.tsx | 80 ++++++++++++---------
.../__tests__/GitHubImportAutoTranslate.test.tsx | 66 ++++++++++++-----
.../__tests__/GitHubImportModal.test.tsx | 32 +++++++++
.../dashboard/src/__tests__/ai-translate.test.ts | 20 ++++++
packages/dashboard/src/ai-translate.ts | 6 +-
packages/dashboard/src/import-translate-service.ts | Bin 11109 -> 11099 bytes
10 files changed, 186 insertions(+), 64 deletions(-)
Fusion-Task-Id: FN-8230
Fusion-Task-Lineage: 2c3ce6f6-a8f3-46a9-b93a-0192f0cdaf54
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 13:31:42 -07:00
gsxdsm
9cdddab504
FN-8231: dismiss mobile mailbox details on Back
...
Mobile mailbox overlays now close through the shared navigation history before leaving the message list.
- Register mobile message, composer, and approval overlays as navigation modals.
- Remove matching history entries when mailbox overlays close or change state.
- Add mobile back-navigation coverage and document the behavior.
Files changed:
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/MailboxView.tsx | 117 ++++++++++++----
.../app/components/__tests__/MailboxView.test.tsx | 148 +++++++++++++++++++++
3 files changed, 241 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-8231
Fusion-Task-Lineage: b6f06ed9-b03f-45d9-b90b-28b565231bcc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 13:10:39 -07:00
gsxdsm
2e9c255268
FN-8228: support Back navigation in import detail sheets
...
Make mobile Back dismiss import detail sheets before the parent import modal.
- Register nested navigation entries for GitHub and GitLab detail sheets.
- Centralize detail selection cleanup across dismissal and successful actions.
- Cover native and browser Back flows and document the mobile behavior.
Files changed:
docs/dashboard-guide.md | 7 ++
.../dashboard/app/components/GitHubImportModal.tsx | 54 +++++++--
.../__tests__/GitHubImportModal.test.tsx | 132 ++++++++++++++++++++-
3 files changed, 180 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-8228
Fusion-Task-Lineage: 36062d52-ad6b-4d5c-87ff-5a6959feecc9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 12:53:46 -07:00
gsxdsm
54565a092d
docs: add Claude Agent SDK bridge provider plan
...
Capture the implementation-ready plan for a conditional, experimental
pi-claude-bridge / Agent SDK provider behind policy and isolation gates.
2026-07-17 12:15:09 -07:00
gsxdsm
5d2c3be6a0
FN-8221: clear inactive planner overseer state
...
Clear retained planner overseer state when effective oversight is disabled.
- Remove monitor, recovery, advisor, and dedup runtime for oversight-off tasks.
- Suppress stale oversight-off Eye badges in task cards.
- Cover cleanup and badge behavior with regression tests.
- Document the runtime snapshot invariant and add a patch changeset.
Files changed:
.changeset/fn-8221-overseer-badge-oversight-off.md | 7 ++
docs/architecture.md | 4 +
packages/dashboard/app/components/TaskCard.tsx | 9 +-
.../app/components/__tests__/TaskCard.test.tsx | 20 ++++
.../__tests__/planner-overseer-off-cleanup.test.ts | 119 +++++++++++++++++++++
packages/engine/src/project-engine.ts | 12 +++
6 files changed, 170 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8221
Fusion-Task-Lineage: 01c9d838-fbe4-4d34-8eb5-d735cf35e581
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 11:27:44 -07:00
gsxdsm
eb7d223a03
FN-8207: add task reassignment for delegated work
...
Correct delegation routing for duplicate tasks and enable explicit task owner reassignment.
- Preserve requested assignee and todo routing on duplicate canonical tasks
- Add governed fn_task_assign to engine, heartbeat, triage, workflow, and chat sessions
- Cover assignment validation, truthful delegation responses, and tool availability
Files changed:
.changeset/fn-8207-delegate-assign.md | 7 ++
docs/agents.md | 6 ++
packages/core/src/types.ts | 1 +
packages/core/src/usage-events.ts | 2 +-
.../dashboard/src/__tests__/chat-manager.test.ts | 2 +
packages/dashboard/src/__tests__/chat.test.ts | 2 +
packages/dashboard/src/chat.ts | 2 +
.../engine/src/__tests__/agent-action-gate.test.ts | 2 +
.../src/__tests__/agent-tools-delegation.test.ts | 99 ++++++++++++++++++-
.../src/__tests__/agent-tools-task-assign.test.ts | 75 +++++++++++++++
.../src/__tests__/gating-classifications.test.ts | 1 +
.../src/__tests__/heartbeat-executor.test.ts | 8 +-
.../src/__tests__/permanent-agent-gating.test.ts | 2 +
.../src/__tests__/step-session-executor.test.ts | 4 +-
packages/engine/src/__tests__/triage.test.ts | 5 +-
packages/engine/src/agent-heartbeat.ts | 4 +-
packages/engine/src/agent-tools.ts | 105 ++++++++++++++++++++-
packages/engine/src/executor.ts | 3 +
packages/engine/src/gating-classifications.ts | 1 +
packages/engine/src/index.ts | 2 +
packages/engine/src/step-session-executor.ts | 2 +
packages/engine/src/triage.ts | 2 +
22 files changed, 324 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-8207
Fusion-Task-Lineage: db6f3876-bdc8-4279-b726-29344d9acdb9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 10:53:19 -07:00
gsxdsm
86c281bc38
FN-8215: add GitHub issue comment posting
...
Enable operators to post upstream GitHub issue comments from the Import Tasks preview.
- Add authenticated GitHub CLI and REST fallback support for creating issue comments.
- Expose a validated API route and inline issue-comment composer with optimistic preview updates.
- Add localized UI copy, documentation, release metadata, and coverage for client, route, and modal behavior.
Files changed:
.changeset/fn-8215-github-issue-add-comment.md | 7 ++
docs/dashboard-guide.md | 9 ++-
packages/dashboard/app/api/legacy.ts | 13 ++++
.../dashboard/app/components/GitHubImportModal.css | 34 +++++++++
.../dashboard/app/components/GitHubImportModal.tsx | 68 +++++++++++++++++-
.../__tests__/GitHubImportModal.test.tsx | 62 +++++++++++++++++
packages/dashboard/src/__tests__/github.test.ts | 48 +++++++++++++
.../dashboard/src/__tests__/routes-github.test.ts | 80 ++++++++++++++++++++++
packages/dashboard/src/github.ts | 49 +++++++++++++
.../dashboard/src/routes/register-git-github.ts | 56 +++++++++++++++
packages/i18n/locales/en/app.json | 5 ++
packages/i18n/locales/es/app.json | 5 ++
packages/i18n/locales/fr/app.json | 5 ++
packages/i18n/locales/ko/app.json | 5 ++
packages/i18n/locales/zh-CN/app.json | 5 ++
packages/i18n/locales/zh-TW/app.json | 5 ++
packages/i18n/src/resources.d.ts | 5 ++
17 files changed, 459 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8215
Fusion-Task-Lineage: 0fe6acca-e86d-484f-a97f-5746d32717a1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 10:37:00 -07:00
gsxdsm
28878d8125
FN-8206: validate landed merge checkout
...
Validate mission assertions against the delivered merge revision rather than an ambient working branch.
- Materialize and dispose a detached checkout at mergeDetails.commitSha for validator sessions.
- Defer failed validation when landed-code ancestry cannot be proven, preventing spurious fix features.
- Link validator runs to their board tasks and document the inspection behavior.
Files changed:
.changeset/fn-8206-mission-validator-inspection-root.md | 7 +
docs/missions.md | 2 +
packages/engine/src/__tests__/mission-execution-loop.test.ts | 278 +++++++++++++--------
packages/engine/src/mission-execution-loop.ts | 160 ++++++++----
4 files changed, 298 insertions(+), 149 deletions(-)
Fusion-Task-Id: FN-8206
Fusion-Task-Lineage: dfd1eb21-fcdf-4722-acb8-416750f4f40b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 10:00:18 -07:00
gsxdsm
67fac31f5c
FN-8202: prevent mDNS hostname conflicts
...
Prevent self-conflicting mDNS advertisements and allow automatic LAN discovery to be disabled.
- Advertise a Fusion-owned DNS-SD hostname derived from the node ID.
- Add a global automatic LAN discovery opt-out for dashboard and serve.
- Cover hostname isolation and discovery startup behavior with tests and documentation.
Files changed:
.changeset/fn-8202-mdns-hostname-fix.md | 7 +++++
docs/settings-reference.md | 1 +
docs/shared-mesh-protocol.md | 2 +-
.../cli/src/commands/__tests__/dashboard.test.ts | 24 ++++++++++++++++
packages/cli/src/commands/__tests__/serve.test.ts | 12 ++++++++
packages/cli/src/commands/dashboard.ts | 24 +++++++++++-----
packages/cli/src/commands/serve.ts | 24 +++++++++++-----
packages/core/src/__tests__/node-discovery.test.ts | 32 +++++++++++++++++++++-
.../core/src/__tests__/settings-defaults.test.ts | 8 ++++++
packages/core/src/node-discovery.ts | 31 +++++++++++++++++++++
packages/core/src/settings-schema.ts | 5 ++++
packages/core/src/types.ts | 2 ++
12 files changed, 156 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-8202
Fusion-Task-Lineage: c1d6e36b-bda7-4968-b40c-c14e16ebda28
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 09:54:44 -07:00
gsxdsm
d6860b5b76
FN-8204: add configurable mobile footer quick actions
...
Add an ordered project setting for mobile footer quick-action destinations.
- Render selected destinations as primary mobile tabs and retain omitted choices in More.
- Provide settings controls, validation, translations, documentation, and regression coverage.
- Add a minor changeset for the published CLI package.
Files changed:
.changeset/fn-8204-mobile-nav-primary-items.md | 7 +
docs/dashboard-guide.md | 4 +
docs/settings-reference.md | 4 +
.../src/__tests__/mobile-nav-primary-items.test.ts | 23 +++
packages/core/src/index.ts | 9 ++
packages/core/src/mobile-nav-primary-items.ts | 55 +++++++
packages/core/src/settings-schema.ts | 1 +
packages/core/src/types.ts | 7 +
packages/dashboard/app/App.tsx | 2 +
.../mobile-feature-access-regression.test.tsx | 19 +++
packages/dashboard/app/components/MobileNavBar.tsx | 159 +++++----------------
.../app/components/__tests__/MobileNavBar.test.tsx | 16 +++
.../app/components/settings/section-keys.ts | 1 +
.../settings/sections/GeneralSection.search.ts | 9 ++
.../settings/sections/GeneralSection.tsx | 45 ++++++
.../settings-default-descriptions.test.tsx | 1 +
packages/dashboard/app/hooks/useAppSettings.ts | 5 +
packages/i18n/locales/en/app.json | 4 +
18 files changed, 244 insertions(+), 127 deletions(-)
Fusion-Task-Id: FN-8204
Fusion-Task-Lineage: 077de4c4-d281-401d-bddd-e5ce8e91d4ab
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 09:27:33 -07:00
gsxdsm
e445b3e367
FN-8201: pin pi dependency versions
...
Pin the pi runtime packages to a single exact version so global npm installs resolve a compatible set.
- Pin pi-ai and pi-coding-agent declarations across workspace manifests
- Add a guard and tests that reject ranged or mismatched pi versions
- Document the source-install fallback and add a patch changeset
Files changed:
.changeset/fn-8201-pin-pi-versions.md | 7 ++
docs/getting-started.md | 3 +
package.json | 6 +-
packages/cli/package.json | 4 +-
packages/cli/src/__tests__/package-config.test.ts | 18 +++-
packages/core/package.json | 2 +-
packages/dashboard/package.json | 2 +-
packages/engine/package.json | 4 +-
packages/pi-claude-cli/package.json | 8 +-
.../__tests__/check-pi-versions-pinned.test.mjs | 45 ++++++++
scripts/check-pi-versions-pinned.mjs | 120 +++++++++++++++++++++
11 files changed, 205 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-8201
Fusion-Task-Lineage: bf0ac363-df5f-4445-835b-cfd2d4909659
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 09:12:01 -07:00
gsxdsm
7b540959c5
FN-8198: add Todo item task creation API
...
Add API endpoints that turn Todo lists and items into executable board tasks.
- Expose Todo list and item read endpoints with async store parity.
- Create tasks from Todo items with validation, project scoping, provenance, and workflow-default placement.
- Document the scripting flow and cover dashboard and PostgreSQL behavior.
Files changed:
.changeset/fn-8198-todo-api.md | 7 +
docs/todo-view.md | 18 ++-
.../src/__tests__/postgres/todo-store.pg.test.ts | 13 ++
packages/core/src/async-todo-store.ts | 17 +++
.../dashboard/src/__tests__/todo-routes.test.ts | 157 ++++++++++++++++++++-
packages/dashboard/src/todo-routes.ts | 128 ++++++++++++++++-
6 files changed, 335 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8198
Fusion-Task-Lineage: f8d5032b-4844-43c9-97d1-3cc7d13d0ce1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 01:23:32 -07:00
gsxdsm
a51cba0d69
FN-8197: move merge details to summary tab
...
Keep completed task merge metadata with its completion summary.
- Relocate the Merge Details card from Definition to the done-only Summary tab.
- Cover merge-detail states and Definition/mobile containment with dashboard tests.
- Document the Summary tab behavior and add a patch changeset.
Files changed:
.changeset/fn-8197-merge-details-summary-tab.md | 7 +++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskDetailModal.tsx | 4 +-
packages/dashboard/app/components/TaskSummaryTab.tsx | 9 +++
packages/dashboard/app/components/__tests__/TaskDetailModal.responsive-and-dependencies.test.tsx | 49 ++++++++++------
packages/dashboard/app/components/__tests__/TaskDetailModal.summary-tab.test.tsx | 65 ++++++++++++++++++++++
6 files changed, 115 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-8197
Fusion-Task-Lineage: f4aac014-1e8d-4b8f-91f1-ba40ae879508
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 01:17:22 -07:00
gsxdsm
6183621ca3
FN-8196: add mobile footer stat tooltips
...
Make compact mobile executor footer statistics identifiable on tap.
- Add accessible tap targets and portaled tooltips for mobile footer statistics.
- Dismiss stat tooltips on repeat tap, outside interaction, Escape, scrolling, and viewport changes.
- Cover mobile behavior while preserving desktop and tablet inline labels.
- Document the interaction and add a patch changeset.
Files changed:
.changeset/fn-8196-mobile-footer-stat-tooltips.md | 7 +
docs/dashboard-guide.md | 2 +
.../dashboard/app/components/ExecutorStatusBar.css | 47 +++++-
.../dashboard/app/components/ExecutorStatusBar.tsx | 166 +++++++++++++++++++--
.../__tests__/ExecutorStatusBar.test.tsx | 132 +++++++++++++++-
5 files changed, 333 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-8196
Fusion-Task-Lineage: c566b614-739d-4538-85c5-a8ff62720f4d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 01:12:08 -07:00
gsxdsm
87ffb24fca
FN-8194: align task detail inline controls
...
Align task-detail actions with Quick Add while preserving existing integrations.
- Add inline attachment and eligible GitHub tracking controls
- Replace the Oversight menu dots with an Eye icon and reorder metadata actions
- Cover action order, integration behavior, icon rendering, and mobile wrapping
Files changed:
.changeset/fn-8194-task-detail-inline-controls.md | 7 ++
docs/dashboard-guide.md | 6 +-
.../dashboard/app/components/TaskDetailModal.tsx | 99 +++++++++++++++-------
...lModal.inline-editing-and-integrations.test.tsx | 80 ++++++++++++++++-
.../TaskDetailModal.mock-coverage.test.ts | 1 +
.../TaskDetailModal.oversight-controls.test.tsx | 19 +++++
...etailModal.responsive-and-dependencies.test.tsx | 5 +-
.../__tests__/TaskDetailModal.test-helpers.ts | 10 +--
8 files changed, 187 insertions(+), 40 deletions(-)
Fusion-Task-Id: FN-8194
Fusion-Task-Lineage: 8de0e36f-b428-401c-98aa-35964c556a39
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 00:55:57 -07:00
gsxdsm
3fdc2c1fb7
FN-8193: add collapsible sticky provider lists
...
Keep model-provider headers visible and let users collapse provider model rows with persisted local preferences.
- Add sticky provider headers and accessible collapse toggles to CustomModelDropdown
- Persist collapsed provider groups locally while keeping filtered matches visible
- Cover collapse, keyboard navigation, storage recovery, and empty-state behavior
- Document the dashboard behavior and add a minor changeset
Files changed:
.changeset/fn-8193-collapsible-provider-lists.md | 7 ++
docs/dashboard-guide.md | 1 +
.../app/components/CustomModelDropdown.css | 48 +++++++-
.../app/components/CustomModelDropdown.tsx | 110 ++++++++++++++----
.../__tests__/CustomModelDropdown.test.tsx | 129 +++++++++++++++++++++
5 files changed, 266 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-8193
Fusion-Task-Lineage: 4fbc43a8-ef81-463c-b4d0-5f00a57ab27b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 00:48:36 -07:00
gsxdsm
ac52438554
FN-8192: prevent mobile confirmation ghost-click dismissal
...
Keep mobile task-delete confirmations open through delayed compatibility clicks.
- Gate backdrop dismissal until the opening gesture settles.
- Cover deliberate backdrop dismissal and mobile ghost-click behavior.
- Document the regression and add a patch changeset.
Files changed:
.changeset/fn-8192-mobile-confirm-ghost-click.md | 7 +++
.../confirm-dialog-mobile-ghost-click-dismiss.md | 53 ++++++++++++++++++++++
.../dashboard/app/components/ConfirmDialog.tsx | 23 +++++++++-
.../components/__tests__/ConfirmDialog.test.tsx | 34 ++++++++++++--
.../app/hooks/__tests__/useConfirm.test.ts | 32 ++++++++++++-
5 files changed, 143 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8192
Fusion-Task-Lineage: ea08a6c0-0f2e-4ec3-8ad7-23cdc4a5d7f1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 00:29:48 -07:00
gsxdsm
6206af8ce9
FN-8146: restore persistent theme selection
...
Restore the full Settings theme picker while preserving Shadcn Mono selections across reloads.
- Merge the Settings selector into the current-theme row with shared dropdown controls.
- Restore Shadcn Mono across theme metadata, token styles, and dashboard/desktop bootstrap validation.
- Scope Mono light swatches correctly and cover restored options and persistence with tests.
Files changed:
.changeset/FN-8146-theme-dropdown-current-row.md | 7 +++
docs/dashboard-guide.md | 5 ++-
packages/core/src/types/execution-and-ui.ts | 1 +
.../dashboard/app/components/ThemeDropdown.css | 52 ++++++++++++++++++++++
.../dashboard/app/components/ThemeDropdown.tsx | 42 ++++++++++++++---
.../dashboard/app/components/ThemeSelector.css | 42 +----------------
.../dashboard/app/components/ThemeSelector.tsx | 45 +++++--------------
.../components/__tests__/ThemeDropdown.test.tsx | 46 ++++++++++++++++---
.../components/__tests__/ThemeSelector.test.tsx | 29 ++++++++----
.../__tests__/CommandCenterControls.test.tsx | 15 ++++++-
packages/dashboard/app/components/themeOptions.ts | 2 +
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 8 ++--
packages/dashboard/app/hooks/useTheme.ts | 8 ++--
packages/dashboard/app/index.html | 5 +--
packages/dashboard/app/public/theme-data.css | 16 ++++++-
packages/desktop/src/renderer/index.html | 1 +
16 files changed, 213 insertions(+), 111 deletions(-)
Fusion-Task-Id: FN-8146
Fusion-Task-Lineage: 32ec7f21-ee6b-4459-8e7b-f5a5435c4994
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-17 00:00:46 -07:00
gsxdsm
5f70447a62
FN-8108: require resolution for triage duplicate tasks
...
Require explicit resolution for triage-detected duplicate tasks.
- Add configurable prompt, keep, and delete handling for explicit duplicate markers.
- Surface linked duplicate decisions in task details and scheduling settings.
- Preserve task failure provenance and strengthen lifecycle recovery coverage.
Files changed:
.changeset/blocked-park-survives-graph-teardown.md | 7 +
.changeset/failure-provenance-promoter-marker.md | 7 +
.changeset/fn-8108-triage-duplicate-resolution.md | 7 +
.changeset/veto-progressing-does-not-clear.md | 7 +
docs/settings-reference.md | 2 +
.../completed-promotion-failure-provenance.test.ts | 31 +++
.../core/src/__tests__/duplicate-intake.test.ts | 11 ++
.../src/completed-promotion-failure-provenance.ts | 38 +++-
packages/core/src/duplicate-intake.ts | 29 +++
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 3 +-
packages/core/src/settings-schema.ts | 1 +
packages/core/src/types.ts | 6 +
.../dashboard/app/components/TaskDetailModal.tsx | 38 +++-
.../__tests__/TaskDetailModal.rendering.test.tsx | 26 +++
.../settings/sections/SchedulingSection.search.ts | 9 +
.../settings/sections/SchedulingSection.tsx | 15 ++
.../__tests__/routes-tasks-near-duplicate.test.ts | 31 +++
.../src/routes/register-task-workflow-routes.ts | 19 ++
.../__tests__/executor-task-done-blocked.test.ts | 212 ++++++++++++++++++++-
packages/engine/src/__tests__/merger-ai.test.ts | 56 +++++-
.../__tests__/overseer-noop-finalize-veto.test.ts | 64 ++++++-
.../explicit-duplicate-marker-sweep.test.ts | 19 +-
packages/engine/src/__tests__/self-healing.test.ts | 53 ++++++
.../triage-explicit-duplicate-marker.test.ts | 22 ++-
packages/engine/src/executor.ts | 30 +++
packages/engine/src/merger-ai.ts | 5 +-
packages/engine/src/overseer-noop-finalize-veto.ts | 148 ++++++++++----
packages/engine/src/self-healing.ts | 29 ++-
packages/engine/src/triage.ts | 58 +++---
packages/i18n/locales/en/app.json | 15 +-
packages/i18n/src/resources.d.ts | 13 +-
32 files changed, 897 insertions(+), 115 deletions(-)
Fusion-Task-Id: FN-8108
Fusion-Task-Lineage: 8e732bad-d418-426e-85e1-903a7f990fba
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 22:11:35 -07:00
gsxdsm
bc7dfe4bbf
FN-8178: fix task-card context menu autofocus dismissal
...
Prevent portaled task-card menus from closing when autofocus creates a scroll event.
- Focus the first menu action with preventScroll while preserving keyboard access.
- Cover all card menu entry points and intentional dismissal paths.
- Document the interaction lifecycle fix and publish a patch changeset.
Files changed:
.changeset/fn-8178-context-menu-flash-dismiss.md | 7 +++
docs/dashboard-guide.md | 2 +-
.../task-card-context-menu-flash-dismiss-layers.md | 35 +++++++++++
.../dashboard/app/components/TaskContextMenu.tsx | 9 ++-
.../app/components/__tests__/TaskCard.test.tsx | 69 ++++++++++++++++++++++
5 files changed, 120 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8178
Fusion-Task-Lineage: 2eb94ffd-e922-497d-8904-1aea8bf760b1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 21:13:30 -07:00
gsxdsm
e72629c251
FN-8126: add per-task merger model controls
...
Enable Quick Add and task editing to select merger models and thinking levels.
- Persist merger model and thinking overrides through task APIs, storage, and PostgreSQL migrations.
- Add merger-lane selection controls to Quick Add and model settings interfaces.
- Apply task merger settings to merger and PR fallback sessions, with regression coverage.
- Document the merger lane and include a release changeset.
Files changed:
.changeset/fn-8126-quick-add-merger-lane.md | 7 ++
docs/dashboard-guide.md | 2 +
docs/settings-reference.md | 7 +-
.../core/src/__tests__/model-resolution.test.ts | 9 ++
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
packages/core/src/model-resolution.ts | 20 ++++
.../core/src/postgres/migrations/0000_initial.sql | 3 +
.../migrations/0017_task_merger_model_lane.sql | 4 +
packages/core/src/postgres/schema-applier.ts | 14 ++-
packages/core/src/postgres/schema/project.ts | 3 +
packages/core/src/store.ts | 2 +-
.../core/src/task-store/archive-lifecycle-2.ts | 6 ++
packages/core/src/task-store/persistence.ts | 6 ++
packages/core/src/task-store/remaining-ops-2.ts | 4 +-
packages/core/src/task-store/remaining-ops-6.ts | 2 +-
packages/core/src/task-store/serialization.ts | 6 ++
packages/core/src/task-store/task-creation.ts | 6 ++
packages/core/src/task-store/task-row-mappers.ts | 4 +-
packages/core/src/task-store/task-update.ts | 6 ++
packages/core/src/types.ts | 18 ++++
packages/dashboard/app/api/tasks.ts | 13 +++
.../dashboard/app/components/InlineCreateCard.tsx | 33 ++++++-
.../app/components/ModelSelectionModal.tsx | 29 ++++++
.../dashboard/app/components/ModelSelectorTab.tsx | 101 +++++++++++++++++++--
.../dashboard/app/components/QuickEntryBox.tsx | 44 +++++++--
.../__tests__/ModelSelectionModal.test.tsx | 20 ++++
.../components/__tests__/ModelSelectorTab.test.tsx | 37 +++++++-
.../src/routes/register-task-workflow-routes.ts | 27 +++++-
.../src/__tests__/agent-session-helpers.test.ts | 8 ++
packages/engine/src/agent-session-helpers.ts | 16 +++-
packages/engine/src/merger-ai.ts | 14 +--
packages/engine/src/merger.ts | 35 ++++---
packages/engine/src/pr-response-run-ops.ts | 7 +-
34 files changed, 451 insertions(+), 64 deletions(-)
Fusion-Task-Id: FN-8126
Fusion-Task-Lineage: 3fc81801-6d77-4e11-9cf0-3af37313930e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 21:07:06 -07:00
gsxdsm
ced0e84f5d
FN-8184: unify heartbeat multiplier timing
...
Keep scheduler repair and reports health aligned with the effective heartbeat cadence.
- Apply heartbeatMultiplier once through shared interval calculations.
- Align scheduler repair and reports-health stale thresholds with scaled cadence.
- Add multiplier regression coverage and document the effective timing rules.
Files changed:
.../fn-8184-heartbeat-multiplier-consistency.md | 7 ++
docs/agents.md | 8 +-
.../src/__tests__/heartbeat-executor.test.ts | 43 +++++++++
.../src/__tests__/heartbeat-scheduler.test.ts | 46 ++++++++++
packages/engine/src/agent-heartbeat.ts | 101 ++++++++++++++++-----
5 files changed, 176 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-8184
Fusion-Task-Lineage: 05b79c5e-444a-42c3-9073-9c8c05df5def
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 20:16:36 -07:00
gsxdsm
b687cc994e
FN-8174: preserve live triage planning sessions
...
Keep active planning sessions protected from stale recovery while reclaiming genuinely hung triage work.
- Retain stale processing entries that still have a live, non-aborted triage session.
- Continue evicting no-session and stuck-aborted tasks so recovery can proceed.
- Add triage and self-healing regression coverage, architecture guidance, and a patch changeset.
Files changed:
.changeset/fn-8174-planning-premature-todo.md | 7 ++
docs/architecture.md | 1 +
packages/engine/src/__tests__/self-healing.test.ts | 102 +++++++++++++++++++++
packages/engine/src/__tests__/triage.test.ts | 37 +++++++-
packages/engine/src/triage.ts | 48 +++++-----
5 files changed, 168 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-8174
Fusion-Task-Lineage: f6811d72-95b4-4b5f-a71f-212f50e3ecdd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 18:54:19 -07:00
gsxdsm
c449379d00
FN-8172: persist import translations across restarts
...
Persist GitHub and GitLab import translation caches across application restarts.
- Normalize cache ownership scope for reads, writes, pruning, and PostgreSQL RLS
- Add forward migration 0016 to repair existing cache table partitioning
- Cover durable cache reuse and migration behavior with PostgreSQL and service tests
Files changed:
.changeset/github-translation-cache-persistence.md | 7 ++
docs/settings-reference.md | 2 +-
.../postgres/import-translation-cache.pg.test.ts | 105 +++++++++++++++++++++
.../src/__tests__/postgres/schema-applier.test.ts | 84 +++++++++++++++--
.../migrations/0010_import_translation_cache.sql | 6 +-
.../0016_import_translation_cache_scope_fix.sql | 50 ++++++++++
packages/core/src/postgres/schema-applier.ts | 29 +++++-
packages/core/src/postgres/schema/project.ts | 8 +-
packages/core/src/task-store/remaining-ops-8.ts | 21 +++--
.../src/__tests__/import-translate-service.test.ts | 32 ++++++-
packages/dashboard/src/import-translate-service.ts | Bin 10392 -> 11109 bytes
11 files changed, 323 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-8172
Fusion-Task-Lineage: b3d18f58-dc0b-47e4-a1bf-acb8b2360869
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 18:46:36 -07:00
gsxdsm
25df9bf4fd
FN-8171: expand active task thinking by default
...
Show Activity Live reasoning immediately for active and review-stage tasks.
- Default thinking blocks open for in-progress and in-review tasks.
- Preserve collapsed, user-toggleable reasoning for all other task columns.
- Document behavior and cover default state and user collapse interactions.
Files changed:
.changeset/fn-8171-thinking-default-open.md | 7 ++++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskChatTab.tsx | 20 +++++++---
.../app/components/__tests__/TaskChatTab.test.tsx | 43 ++++++++++++++++++++--
4 files changed, 63 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-8171
Fusion-Task-Lineage: 705d6ac8-0c43-47d3-84df-57e9ec55a3b5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 18:41:24 -07:00
gsxdsm
f4903d3db0
FN-8168: dismiss mobile More sheet on Back
...
Make the mobile More sheet participate in navigation history so Back dismisses it before changing views.
- Register the open More sheet as a navigation modal and remove it on every close path
- Cover browser, native, gesture, keyboard, action, and provider-less dismissal flows
- Document mobile More-sheet Back behavior
Files changed:
docs/dashboard-guide.md | 2 +
packages/dashboard/app/components/MobileNavBar.tsx | 48 ++++--
.../__tests__/MobileNavBar.swipe-back.test.tsx | 190 +++++++++++++++++++++
3 files changed, 228 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-8168
Fusion-Task-Lineage: 1c5652db-5f27-4671-b4b7-676753ca4cd0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 18:33:47 -07:00
gsxdsm
07e1ceb860
FN-8151: add Cobalt, Clay, and Moss themes
...
Add three synchronized color themes across dashboard and desktop surfaces.
- Register Cobalt, Clay, and Moss theme IDs, token palettes, and light/dark swatches.
- Keep dashboard and desktop bootstrap validators aligned with selector metadata.
- Document and test the cross-surface theme registration invariant.
Files changed:
.changeset/fn-8151-new-themes.md | 7 +
docs/dashboard-guide.md | 3 +-
packages/core/src/types/execution-and-ui.ts | 4 +
.../app/__tests__/new-color-themes.test.ts | 116 ++++++++++++
.../dashboard/app/components/ThemeSelector.css | 42 +++++
packages/dashboard/app/components/themeOptions.ts | 3 +
packages/dashboard/app/index.html | 2 +-
packages/dashboard/app/public/theme-data.css | 202 +++++++++++++++++++++
packages/desktop/src/renderer/index.html | 3 +
9 files changed, 380 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8151
Fusion-Task-Lineage: d97973a7-3387-4b98-b150-8ac2e838bfa9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 18:18:35 -07:00
gsxdsm
ca7a5a7106
FN-8144: remove workspace worktrees on archive
...
Archive workspace task worktrees synchronously and safely across archive entry points.
- Add store-scoped workspace disposal planning, reservations, and quarantine handling.
- Install baseline and executor disposers that remove per-repository worktrees and branches without shell interpolation.
- Cover disposal-plan deduplication and document the archive cleanup behavior.
Files changed:
.../fn-8144-archive-removes-workspace-worktrees.md | 7 ++
AGENTS.md | 1 +
docs/task-management.md | 4 +
.../archive-removes-workspace-worktrees.test.ts | 59 +++++++++++
packages/core/src/archive-worktree-disposer.ts | 52 ++++++++++
packages/core/src/index.gate.ts | 8 ++
packages/core/src/index.ts | 8 ++
.../core/src/task-store/archive-lifecycle-2.ts | 29 ++++--
packages/core/src/task-store/archive-lifecycle.ts | 114 ++++++++++++++++++++-
.../src/archive-worktree-disposer-install.ts | 27 ++++-
packages/engine/src/executor.ts | 25 ++++-
11 files changed, 319 insertions(+), 15 deletions(-)
Fusion-Task-Id: FN-8144
Fusion-Task-Lineage: 1c4b65f3-a1d2-4a5c-a4b6-c263f9e6f61d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 17:05:29 -07:00
gsxdsm
fd036665ae
FN-8123: add agent clarification notifications
...
Add agent clarification notices with ntfy delivery and mailbox support.
- Add configurable clarification ntfy topics and notification settings
- Route agent clarification requests to ntfy and the planning mailbox
- Update planning dialogs, translations, documentation, and regression tests
Files changed:
.changeset/fn-8123-agent-clarification.md | 7 +
docs/dashboard-guide.md | 6 +
docs/settings-reference.md | 1 +
.../core/src/__tests__/global-settings.test.ts | 11 +
packages/core/src/settings-schema.ts | 2 +
packages/core/src/types.ts | 6 +
.../app/__tests__/settings-save-split.test.ts | 13 ++
packages/dashboard/app/api/legacy.ts | 3 +-
.../dashboard/app/components/PlanningModeModal.tsx | 29 ++-
.../dashboard/app/components/SettingsModal.tsx | 1 +
.../__tests__/PlanningModeModal.initial.test.tsx | 17 +-
.../app/components/settings/save-split.ts | 1 +
.../settings/sections/NotificationsSection.tsx | 11 +
.../src/__tests__/routes-planning.test.ts | 7 +-
packages/dashboard/src/planning.ts | 228 ++++++++++++++++-----
.../src/routes/register-planning-subtask-routes.ts | 59 +++++-
packages/i18n/locales/en/app.json | 4 +
packages/i18n/src/resources.d.ts | 4 +
18 files changed, 346 insertions(+), 64 deletions(-)
Fusion-Task-Id: FN-8123
Fusion-Task-Lineage: cf397749-01c6-44d6-8d12-8ce7f5627c29
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 16:51:19 -07:00
gsxdsm
c6be0b158b
FN-8129: centralize database backup settings
...
Move database backup policy and scheduling to shared global configuration.
- Split project memory backups from cluster-wide database backup settings.
- Migrate legacy backup values and routines safely into central global storage.
- Schedule and dispatch one shared PostgreSQL backup routine across project engines.
Files changed:
.changeset/fn-8129-backup-settings-scope-split.md | 7 +
docs/dashboard-guide.md | 2 +
docs/settings-reference.md | 10 +-
packages/cli/src/commands/backup.ts | 3 +-
.../__tests__/backup-settings-migration.test.ts | 50 ++++++
.../src/__tests__/backup-settings-scope.test.ts | 27 +++
packages/core/src/backup-settings-migration.ts | 188 +++++++++++++++++++++
packages/core/src/backup.ts | 77 +++++----
packages/core/src/global-routine-store.ts | 104 ++++++++++++
packages/core/src/index.gate.ts | 6 +-
packages/core/src/index.ts | 6 +-
.../core/src/postgres/migrations/0000_initial.sql | 19 +++
.../postgres/migrations/0015_global_routines.sql | 19 +++
packages/core/src/postgres/schema-applier.ts | 19 ++-
packages/core/src/postgres/schema/central.ts | 21 ++-
packages/core/src/postgres/startup-factory.ts | 11 ++
packages/core/src/settings-schema.ts | 14 +-
packages/core/src/types.ts | 31 +++-
.../dashboard/app/components/SettingsModal.tsx | 10 +-
.../settings/__tests__/section-keys.test.ts | 1 +
.../app/components/settings/save-split.ts | 2 +
.../search/__tests__/settings-search-index.test.ts | 1 +
.../settings/search/entries.ts | 2 +
.../app/components/settings/section-keys.ts | 4 -
.../settings/sections/BackupsSection.search.ts | 40 -----
.../settings/sections/BackupsSection.tsx | 112 +-----------
.../sections/DatabaseBackupsSection.search.ts | 51 ++++++
.../settings/sections/DatabaseBackupsSection.tsx | 142 ++++++++++++++++
.../settings-default-descriptions.test.tsx | 1 +
packages/dashboard/src/routes.ts | 12 +-
.../src/routes/register-settings-memory-routes.ts | 41 ++---
.../engine/src/__tests__/routine-scheduler.test.ts | 55 +++++-
packages/engine/src/cron-runner.ts | 4 +-
packages/engine/src/routine-runner.ts | 67 +++++---
packages/engine/src/routine-scheduler.ts | 35 +++-
35 files changed, 929 insertions(+), 265 deletions(-)
Fusion-Task-Id: FN-8129
Fusion-Task-Lineage: af17f39a-7f1c-40ff-8a4a-cd63895cd532
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 16:34:09 -07:00
gsxdsm
edc64138e0
feat(worktrees): task-pinned worktrees under worktreeNaming "task-id" ( #2233 )
...
## Summary
Adds **task-pinned worktrees** for `worktreeNaming: "task-id"`. Under
task-id naming, a task is pinned to exactly one derivable directory
`<worktreesDir>/<lowercased-task-id>` (e.g. `.worktrees/fn-7996`) for
its entire lifecycle — removing the ambiguity that let stale/foreign
`task.worktree` pointers strand a task (the FN-7996 shape).
`recycleWorktrees` stays fully functional and is **mutually exclusive**
with task-id pinning: the two can't be enabled together.
## Behavior
- **Pinned acquisition (`worktreeNaming: "task-id"`, recycling off):**
`acquireTaskWorktree` runs **derive → validate → reuse-or-recreate** at
the derived path — warm-reuse when the dir is a registered, usable
worktree on the task's own branch; otherwise reclaim-in-place
(`removeWorktree` + recreate at the SAME path, never a sibling name). A
disagreeing `task.worktree` cache self-corrects and emits a new
`worktree:pin-rederived` audit event, without consuming worktree-session
retries. The recycle pool is never consulted in pinned mode.
- **Mutual exclusivity:** enabling both `recycleWorktrees` and
`worktreeNaming: "task-id"` is rejected at the settings-write boundary —
HTTP 400 at `PUT /settings`, and an `Error` backstop in
`store.updateSettings` covering the CLI and every other writer
(`assertWorktreeNamingRecycleExclusive`). The runtime also gates pinned
mode on `!recycleWorktrees`, so a legacy on-disk config carrying both
degrades safely to recycling.
- **Settings UI:** the Settings → Worktrees panel enforces the
exclusivity bidirectionally — the *Recycle worktrees* toggle is disabled
while naming is *Task ID*, and the naming select is disabled while
recycling is on — so the conflicting state is unreachable, with help
text explaining why.
- **Byte-inert for the rest:** `random`/`task-title` naming and the
recycle pool (incl. `merger.ts` release) are unchanged;
worktrunk-managed layouts bypass pinning.
## Acceptance criteria (from the plan)
1. ✅ Pinned task dispatched N times only ever touches
`<worktreesDir>/<task-id>` on its own branch
2. ✅ No code path can hand task A's dir to task B (pool bypassed; path
derived from task id)
3. ✅ FN-7996 stale/foreign `task.worktree` self-corrects at next
dispatch (`worktree:pin-rederived`) without consuming session retries
4. ✅ Non-pinned modes with `recycleWorktrees: true|false` are
byte-identical (existing pool tests pass unchanged)
5. ✅ Stale same-name dir (crash leftover / archive→restore) reclaimed in
place, never suffixed
6. ✅ Docs updated (settings-reference, architecture, `worktreeNaming`
type doc); changeset (`minor`, `feature`); FNXC comments encode the
invariant
## Files
- `packages/engine/src/worktree-pinning.ts` — new pure helpers
(`isTaskPinnedWorktreeNaming`, `pinnedWorktreePathForTask`)
- `packages/engine/src/worktree-acquisition.ts` — pinned branch +
branch-match reclaim-in-place
- `packages/engine/src/run-audit.ts` — `worktree:pin-rederived` audit
type
- `packages/core/src/settings-validation.ts` (+ `index.ts`,
`task-store/settings-ops.ts`) — mutual-exclusion validator + wiring
- `packages/dashboard/src/routes/register-settings-memory-routes.ts` —
400 on conflict
-
`packages/dashboard/app/components/settings/sections/WorktreesSection.tsx`
(+ `packages/i18n/locales/en/app.json`) — bidirectional UI exclusivity
- `packages/core/src/types.ts`, `docs/*`, `.changeset/*`
## Verification
- New tests: engine `worktree-pinning` (5) +
`worktree-acquisition-pinned` (7); core
`worktree-naming-recycle-exclusive` (2); dashboard settings-route 400
(3) + WorktreesSection UI exclusivity (3)
- Regression sweep green: 194 engine
worktree/acquisition/pool/executor/merger-release tests, core settings
tests, dashboard i18n/settings-section tests
- `tsc --noEmit` clean for `@fusion/core` and `@fusion/engine`; changed
source files clean; eslint clean
- `pnpm verify:fast` PASS (build + scoped typecheck + boot smoke)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added Task ID worktree naming, providing each task with a stable,
deterministic worktree directory.
* Automatically reuses valid pinned worktrees and recreates stale or
conflicting ones at the same path.
* Added clear settings controls and validation for incompatible Task ID
naming and worktree recycling options.
* **Documentation**
* Updated worktree architecture, settings reference, and in-app guidance
to explain pinned worktrees and configuration constraints.
* **Bug Fixes**
* Improved recovery from stale or incorrect worktree assignments without
consuming session retries.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-16 15:37:42 -07:00
gsxdsm
f57dfc03b6
FN-8105: remove archived task worktrees safely
...
Archive task worktrees through a store-scoped, race-safe disposal lifecycle.
- Reserve pinned worktree paths during archive cleanup and successor creation.
- Reconcile quarantined removals before reusing a pinned path.
- Gate PostgreSQL archival before destructive worktree disposal and wire CLI cleanup.
Files changed:
.changeset/fn-8105-archive-removes-worktree.md | 7 +
docs/task-management.md | 4 +
.../extension-experiment-finalize.test.ts | 1 +
.../src/__tests__/extension-fn-secret-get.test.ts | 1 +
.../extension-gitlab-tracking.test.ts | 1 +
.../cli/src/__tests__/extension-web-fetch.test.ts | 1 +
.../task-command-github-import-tracking.test.ts | 1 +
packages/cli/src/commands/__tests__/task.test.ts | 1 +
packages/cli/src/commands/task.ts | 8 +-
packages/cli/src/extension.ts | 4 +
.../__tests__/worktree-path-reservation.test.ts | 58 ++++++++
packages/core/src/archive-worktree-disposer.ts | 21 +++
packages/core/src/index.gate.ts | 13 ++
packages/core/src/index.ts | 13 ++
.../core/src/task-store/archive-lifecycle-2.ts | 8 ++
packages/core/src/task-store/archive-lifecycle.ts | 37 +++++
packages/core/src/worktree-path-reservation.ts | 149 +++++++++++++++++++++
.../src/archive-worktree-disposer-install.ts | 18 +++
packages/engine/src/executor.ts | 16 +++
packages/engine/src/index.ts | 2 +
packages/engine/src/runtimes/in-process-runtime.ts | 1 +
packages/engine/src/worktree-acquisition.ts | 27 +++-
22 files changed, 388 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8105
Fusion-Task-Lineage: cabb8f52-093f-4986-bfda-2c7601a72579
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 15:27:03 -07:00
gsxdsm
e7c5de0a6e
FN-8138: add restart controls after Settings updates
...
Expose a supervised restart affordance after an in-app update succeeds.
- Detect restart capability while update results are visible and handle scheduled or failed restart requests
- Add accessible restart status, capability guidance, responsive styling, and English translations
- Cover restart states across desktop and mobile Settings modal tests
Files changed:
.../fn-8138-settings-restart-after-update.md | 7 ++
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/SettingsModal.css | 21 +++-
.../dashboard/app/components/SettingsModal.tsx | 110 ++++++++++++++--
.../__tests__/SettingsModal.general.test.tsx | 139 ++++++++++++++++++++-
.../__tests__/SettingsModal.test-harness.tsx | 4 +
.../components/__tests__/settings-mobile.test.tsx | 4 +-
packages/i18n/locales/en/app.json | 4 +
8 files changed, 274 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-8138
Fusion-Task-Lineage: 24e8cb9a-ad64-4419-b3ce-461850624365
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 14:40:26 -07:00
gsxdsm
d870878a23
FN-7998: add executor alternate model escalation
...
Add opt-in executor escalation after same-model tool-failure retries are exhausted.
- Persist escalation settings and one-shot task state across SQLite and PostgreSQL stores.
- Retry once on a configured alternate model or scheduler node and audit escalation outcomes.
- Expose escalation controls, documentation, translations, migration, and regression coverage.
Files changed:
.changeset/fn-7998-executor-escalation.md | 7 ++
AGENTS.md | 1 +
docs/settings-reference.md | 13 ++-
.../core/src/__tests__/settings-defaults.test.ts | 23 ++++-
packages/core/src/in-review-stall.ts | 29 ++++++
packages/core/src/index.gate.ts | 3 +-
packages/core/src/index.ts | 3 +-
packages/core/src/manual-retry-reset.ts | 1 +
.../0014_executor_escalation_attempt.sql | 2 +
packages/core/src/postgres/schema-applier.ts | 17 ++++
packages/core/src/postgres/schema/project.ts | 1 +
packages/core/src/settings-schema.ts | 4 +
packages/core/src/store.ts | 2 +-
packages/core/src/task-store/persistence.ts | 2 +
packages/core/src/task-store/remaining-ops-2.ts | 2 +-
packages/core/src/task-store/remaining-ops-3.ts | 2 +-
packages/core/src/task-store/remaining-ops-6.ts | 2 +-
packages/core/src/task-store/serialization.ts | 1 +
packages/core/src/task-store/task-update.ts | 2 +
packages/core/src/types.ts | 13 +++
.../dashboard/app/components/SettingsModal.tsx | 12 +++
.../app/components/settings/section-keys.ts | 4 +
.../settings/sections/SchedulingSection.search.ts | 36 +++++++
.../settings/sections/SchedulingSection.tsx | 6 ++
.../settings-default-descriptions.test.tsx | 4 +
.../__tests__/executor-tool-failure-retry.test.ts | 91 +++++++++++++++++-
packages/engine/src/executor.ts | 104 +++++++++++++++++++--
packages/i18n/locales/en/app.json | 8 ++
28 files changed, 376 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-7998
Fusion-Task-Lineage: bbce767d-c61a-4667-be62-abc0cc54d8be
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 14:31:59 -07:00
gsxdsm
4df5c62854
FN-8133: add local codebase context metrics
...
Expose local codebase token estimates and apparent disk size in the project dashboard.
- Add a bounded, cached, symlink-safe codebase metrics service and project API.
- Display token and disk indicators across Command Center overview states.
- Add formatting, route, UI, and metric calibration coverage with a minor changeset.
Files changed:
.changeset/fn-8133-codebase-metrics.md | 7 +
docs/dashboard-guide.md | 2 +-
.../dashboard/app/__tests__/api-projects.test.ts | 12 ++
packages/dashboard/app/api/legacy.ts | 14 ++
.../components/command-center/CommandCenter.css | 5 +
.../components/command-center/CommandCenter.tsx | 65 +++++++--
.../CommandCenter.mobile-chart-layout.test.ts | 4 +
.../__tests__/CommandCenter.test.tsx | 10 ++
.../__tests__/SystemStatsArea.test.tsx | 8 +
.../command-center/areas/SystemStatsArea.tsx | 8 +-
.../app/utils/__tests__/formatBytes.test.ts | 18 +++
packages/dashboard/app/utils/formatBytes.ts | 11 ++
.../src/lib/__tests__/codebase-metrics.test.ts | 62 ++++++++
.../lib/__tests__/fixtures/token-corpus/README.md | 17 +++
.../fixtures/token-corpus/calibration/component.ts | 1 +
.../fixtures/token-corpus/calibration/config.json | 1 +
.../lib/__tests__/fixtures/token-corpus/example.ts | 1 +
.../lib/__tests__/fixtures/token-corpus/notes.md | 3 +
.../fixtures/token-corpus/reference-counts.json | 9 ++
.../__tests__/fixtures/token-corpus/settings.json | 1 +
.../lib/__tests__/fixtures/token-corpus/view.tsx | 1 +
packages/dashboard/src/lib/codebase-metrics.ts | 161 +++++++++++++++++++++
.../__tests__/codebase-metrics-route.test.ts | 34 +++++
.../src/routes/register-project-routes.ts | 19 +++
24 files changed, 456 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-8133
Fusion-Task-Lineage: d591636b-d4b8-469e-8788-c4516eeb8405
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 14:08:43 -07:00
gsxdsm
2c3a777bca
FN-8132: recover bare worktree branch collisions
...
Recover safe worktree creation when a dangling task branch already exists.
- Classify bare branch collisions and preserve foreign or mixed commit history.
- Reuse task-owned branches or recreate merged branches from the pinned start point.
- Audit recovery outcomes and cover native, fallback, and workspace acquisition paths.
Files changed:
.../fn-8132-worktree-branch-collision-recovery.md | 7 ++
docs/architecture.md | 1 +
.../__tests__/worktree-acquisition-backend.test.ts | 69 +++++++++++
.../worktree-acquisition-workspace.test.ts | 21 ++++
.../worktree-backend-branch-collision.test.ts | 132 +++++++++++++++++++++
packages/engine/src/branch-conflicts.ts | 121 +++++++++++++++++++
packages/engine/src/run-audit.ts | 1 +
packages/engine/src/worktree-acquisition.ts | 3 +-
packages/engine/src/worktree-backend.ts | 94 +++++++++++++++-
9 files changed, 447 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8132
Fusion-Task-Lineage: f09d140f-4fcd-48a6-99b1-a351630f37bd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 13:48:00 -07:00
gsxdsm
60b6e3e048
FN-7996: add configurable executor tool-failure retries
...
Add bounded, durable same-model retry handling for qualifying consecutive executor tool errors.
- Persist retry claims, cursors, and audit markers with PostgreSQL migrations.
- Expose project retry count, backoff, and failure threshold settings in the dashboard.
- Cover retry, exhaustion, reset, and stale-run safety behavior with tests.
Files changed:
.changeset/fn-7996-executor-tool-failure-retry.md | 7 +
AGENTS.md | 1 +
docs/architecture.md | 1 +
docs/settings-reference.md | 10 ++
.../executor-tool-failure-retry-claim.test.ts | 17 +++
.../core/src/__tests__/manual-retry-reset.test.ts | 3 +
.../core/src/__tests__/settings-defaults.test.ts | 15 +-
packages/core/src/in-review-stall.ts | 20 +++
packages/core/src/index.gate.ts | 6 +
packages/core/src/index.ts | 6 +
packages/core/src/manual-retry-reset.ts | 3 +
.../0013_executor_tool_failure_retry.sql | 4 +
packages/core/src/postgres/schema-applier.ts | 17 +++
packages/core/src/postgres/schema/project.ts | 3 +
packages/core/src/settings-schema.ts | 3 +
packages/core/src/store.ts | 10 +-
packages/core/src/task-store/persistence.ts | 7 +
packages/core/src/task-store/remaining-ops-2.ts | 2 +-
packages/core/src/task-store/remaining-ops-3.ts | 2 +-
packages/core/src/task-store/remaining-ops-6.ts | 65 ++++++++-
packages/core/src/task-store/serialization.ts | 3 +
packages/core/src/task-store/task-update.ts | 6 +
packages/core/src/types.ts | 16 +++
.../dashboard/app/components/SettingsModal.tsx | 15 ++
.../app/components/settings/section-keys.ts | 3 +
.../settings/sections/SchedulingSection.search.ts | 27 ++++
.../settings/sections/SchedulingSection.tsx | 4 +
.../settings-default-descriptions.test.tsx | 3 +
.../__tests__/executor-tool-failure-retry.test.ts | 160 +++++++++++++++++++++
packages/engine/src/executor.ts | 87 ++++++++++-
packages/i18n/locales/en/app.json | 6 +
31 files changed, 523 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7996
Fusion-Task-Lineage: d1682ef8-534c-410e-b74c-1f2cf176eac2
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 13:41:14 -07:00
gsxdsm
6f99fdb18b
FN-8137: add PR checks refresh control
...
Let GitHub pull request previews refresh their current check status and comments.
- Add an accessible refresh action that bypasses the selected PR detail cache
- Prevent stale refresh responses from overwriting cached or visible PR details
- Cover refresh behavior across modal and embedded views, and document the control
- Add a minor changeset for the new GitHub import capability
Files changed:
.changeset/fn-8137-refresh-pr-checks.md | 7 ++
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/GitHubImportModal.css | 29 ++++++
.../dashboard/app/components/GitHubImportModal.tsx | 48 +++++++--
.../__tests__/GitHubImportModal.test.tsx | 115 +++++++++++++++++++++
5 files changed, 191 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-8137
Fusion-Task-Lineage: 1d4ffa9d-635c-4d59-b17c-63075f6d8c5e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 13:34:54 -07:00
gsxdsm
255e9c19b9
FN-8134: add update banner restart action
...
Offer a supervised Fusion restart directly after an in-app update succeeds.
- Add restart capability detection, scheduling feedback, and manual-restart guidance to the update banner
- Cover supported, unsupported, failed, loading, and mobile restart states
- Document the update flow and add a minor CLI changeset
Files changed:
.changeset/fn-8134-restart-after-update.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/UpdateAvailableBanner.css | 10 +-
packages/dashboard/app/components/UpdateAvailableBanner.tsx | 100 +++++++++++++--
packages/dashboard/app/components/__tests__/UpdateAvailableBanner.test.tsx | 139 ++++++++++++++++++---
packages/i18n/locales/en/app.json | 4 +
6 files changed, 236 insertions(+), 26 deletions(-)
Fusion-Task-Id: FN-8134
Fusion-Task-Lineage: 84f9290e-aa87-4144-a9db-da445dcb76e3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 13:29:25 -07:00
gsxdsm
d4914eb8b3
FN-8127: fix embedded PostgreSQL backups
...
Enable backup managers to resolve active embedded PostgreSQL runtime URLs safely.
- Track embedded backend URLs with generation-aware lifecycle leases.
- Keep backup resolution current through owner shutdown and joiner release.
- Document PostgreSQL client-tool requirements and add regression coverage.
Files changed:
.changeset/fn-8127-embedded-backup.md | 7 ++
docs/settings-reference.md | 3 +
packages/core/src/__tests__/backup.test.ts | 115 ++++++++++++++++++++
packages/core/src/backup.ts | 17 ++-
packages/core/src/index.gate.ts | 9 ++
packages/core/src/index.ts | 9 ++
.../core/src/postgres/active-backend-registry.ts | 119 +++++++++++++++++++++
packages/core/src/postgres/embedded-lifecycle.ts | 5 +
packages/core/src/postgres/index.ts | 9 ++
packages/core/src/postgres/startup-factory.ts | 118 +++++++++++++++++---
10 files changed, 389 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-8127
Fusion-Task-Lineage: 6125be5c-d1d5-4228-a6b1-290311de70d9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-16 13:09:48 -07:00