gsxdsm
1d69dec087
FN-7562: fix mobile oversight menu auto-focus opening a second native select popup
...
Fixes the mobile oversight overflow menu rendering two overlapping menus by narrowing auto-focus to actionable button menuitems.
- Change the menu-open auto-focus effect to query `button.detail-oversight-menu-item` instead of matching any `.detail-oversight-menu-item` element, since the native level `<select>` also carried that class and was matched first.
- Programmatically focusing the native `<select>` triggered its OS option picker, which rendered as a second overlapping menu on top of the custom `role="menu"` popover.
- Add regression tests covering: auto-focus landing on the first button menuitem when nudge/stop/explain are available, no fallback focus on the select when oversight is off (level-only state), and confirming the desktop inline select is unaffected.
- Update dashboard-guide.md docs to describe the fixed auto-focus behavior.
Files changed:
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskDetailModal.tsx | 3 +-
.../app/components/__tests__/TaskDetailModal.oversight-mobile.test.tsx | 96 ++++++++++++++++++++++
3 files changed, 99 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7562
Fusion-Task-Lineage: f39068f1-811f-4663-ade1-ff020a389ae5
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-05 11:31:44 -07:00
gsxdsm
3d55102091
FN-7546: clarify planner-oversight Nudge/Explain controls with visible label and in-DOM disabled reason
...
Add a visible group label and an in-DOM disabled-reason helper to the task-detail oversight controls so the Nudge/Explain cluster is no longer confusing when greyed out, and make Explain always-openable since it is read-only.
- Add a `detail-oversight-controls-label` group label above the Nudge/Stop/Explain buttons, gated by the same visibility condition as the buttons (mobile and desktop clusters)
- Add a `detail-overseer-nudge-disabled-reason` in-DOM helper line explaining why Nudge is unavailable, instead of relying only on a hover title
- Remove the disabled gate from Explain (it's read-only/non-mutating) and update its title copy to reflect that it always opens and shows last-known state when inactive
- Add regression tests covering the new label/helper text and Explain's always-enabled behavior
- Add a patch changeset and a docs/dashboard-guide.md note
Files changed:
.changeset/FN-7546-oversight-controls-clarity.md | 7 +++
docs/dashboard-guide.md | 2 +
.../dashboard/app/components/TaskDetailModal.css | 42 +++++++++++++
.../dashboard/app/components/TaskDetailModal.tsx | 41 +++++++++++--
.../TaskDetailModal.oversight-controls.test.tsx | 69 ++++++++++++++++++++++
5 files changed, 157 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-7546
Fusion-Task-Lineage: d1f342ea-2de0-4b54-9930-9b3d540c7af6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:19 -07:00
gsxdsm
f992e6aefa
FN-7553: add dedicated keyboard shortcuts settings section
...
Adds a standalone Keyboard Shortcuts settings section with an easier-to-use capture input and support for more shortcut actions.
- Introduce a new KeyboardShortcutsSection with a dedicated ShortcutCaptureInput component for recording key combos
- Split keyboard-shortcut settings out of the general settings section into their own settings tab
- Extend the shortcut schema/types and useDashboardKeyboardShortcuts hook to support additional actions
- Update settings save-split, section-keys, and defaults/parity tests to cover the new section
- Update dashboard docs and add a changeset for the new settings section
Files changed:
.changeset/fn-7553-keyboard-shortcuts-section.md | 7 +
docs/dashboard-guide.md | 22 ++-
packages/core/src/__tests__/global-settings.test.ts | 9 +-
packages/core/src/__tests__/settings-defaults.test.ts | 4 +
packages/core/src/__tests__/settings-parity.test.ts | 2 +-
packages/core/src/settings-schema.ts | 6 +-
packages/core/src/types.ts | 12 ++
packages/dashboard/app/App.tsx | 26 +++-
packages/dashboard/app/__tests__/App.keyboard-shortcuts.test.tsx | 47 ++++++-
packages/dashboard/app/components/SettingsModal.css | 56 ++++++--
packages/dashboard/app/components/SettingsModal.tsx | 30 +++-
packages/dashboard/app/components/__tests__/SettingsModal.general.test.tsx | 63 ---------
packages/dashboard/app/components/__tests__/SettingsModal.keyboardShortcuts.test.tsx | 156 +++++++++++++++++++++
packages/dashboard/app/components/settings/__tests__/section-keys.test.ts | 1 +
packages/dashboard/app/components/settings/save-split.ts | 6 +-
packages/dashboard/app/components/settings/sections/GlobalGeneralSection.tsx | 38 -----
packages/dashboard/app/components/settings/sections/KeyboardShortcutsSection.tsx | 78 +++++++++++
packages/dashboard/app/components/settings/sections/ShortcutCaptureInput.tsx | 118 ++++++++++++++++
packages/dashboard/app/components/settings/sections/__tests__/KeyboardShortcutsSection.test.tsx | 113 +++++++++++++++
packages/dashboard/app/hooks/__tests__/useDashboardKeyboardShortcuts.test.tsx | 73 +++++++++-
packages/dashboard/app/hooks/useDashboardKeyboardShortcuts.ts | 38 ++++-
packages/dashboard/app/utils/__tests__/keyboardShortcuts.test.ts | 37 ++++-
packages/dashboard/app/utils/keyboardShortcuts.ts | 54 ++++++-
23 files changed, 854 insertions(+), 142 deletions(-)
Fusion-Task-Id: FN-7553
Fusion-Task-Lineage: 51c1ad69-fbd3-45ce-8d2d-45d9962d7b76
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:19 -07:00
gsxdsm
19a436ab5e
FN-7545: collapse task-detail oversight controls into mobile overflow menu
...
Adds a mobile-friendly overflow menu for the task-detail planner-overseer controls, keeping the desktop inline cluster unchanged.
- Below 768px, replace the inline oversight-level select/nudge/stop/explain controls with a single "Oversight" overflow-menu trigger (MoreVertical icon, aria-haspopup="menu") mirroring the existing move-action dropdown pattern
- Popover lists the same controls as full-width, tappable role="menuitem" entries with identical testids and enablement/visibility rules as desktop
- Trigger is withheld entirely when no controls would render (no empty-shell button)
- Desktop (>768px) inline cluster is unchanged
- Adds TaskDetailModal.oversight-mobile.test.tsx covering trigger visibility, menu contents, and parity with desktop controls
- Updates docs/dashboard-guide.md to document the mobile overflow-menu behavior
Files changed:
docs/dashboard-guide.md | 2 +
packages/dashboard/app/components/TaskDetailModal.css | 118 ++++++
packages/dashboard/app/components/TaskDetailModal.tsx | 383 ++++++++++++++-----
packages/dashboard/app/components/__tests__/TaskDetailModal.oversight-mobile.test.tsx | 413 +++++++++++++++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.test-helpers.ts | 2 +
5 files changed, 830 insertions(+), 88 deletions(-)
Fusion-Task-Id: FN-7545
Fusion-Task-Lineage: 63cb778e-f17d-43d3-a3de-864683d4e8f1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:18 -07:00
gsxdsm
b4be5153f3
FN-7542: remove active-overseer-state badge from task cards
...
Removes the recently-added executor/reviewer/merger overseer-state chip from TaskCard, which fired as noise on nearly every in-progress card, keeping the separate oversight-level badge untouched.
- Deletes deriveOverseerCardWatchedStage and its OVERSEER_STATE_LABEL/MODIFIER maps from TaskCard.tsx
- Removes showOverseerStateBadge gating and its contribution to hasCardMetaBadges/areTaskCardPropsEqual
- Strips the now-unused .task-card-overseer-state-badge CSS rules from TaskCard.css
- Rewrites TaskCard.oversight.test.tsx to drop overseer-state-badge coverage while keeping oversight-level badge tests
- Updates docs/dashboard-guide.md reference and adds a changeset documenting the removal
Files changed:
.changeset/fn-7542-remove-overseer-state-badge.md | 7 +
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskCard.css | 63 +-------
packages/dashboard/app/components/TaskCard.tsx | 161 +++------------------
.../__tests__/TaskCard.oversight.test.tsx | 149 +++++++------------
5 files changed, 77 insertions(+), 305 deletions(-)
Fusion-Task-Id: FN-7542
Fusion-Task-Lineage: dabaf72a-a7b0-4054-8a72-7c3d99fa7bb1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:18 -07:00
gsxdsm
62ddb19cb3
FN-7543: render original task prompt as collapsible markdown in Plan tab
...
Original prompt in the Task Detail Plan tab now renders as Markdown and is collapsed by default behind a chevron toggle, matching the shared PROMPT.md renderer instead of showing raw preserved plain text.
- Add a collapse/expand chevron toggle (`.detail-source-header`/`.detail-source-toggle`) for the original-prompt section, collapsed by default; toggle only renders when content exists.
- Render the expanded original prompt through the shared ReactMarkdown pipeline (remarkGfm, sharedRehypePlugins, markdownLinkifyComponents) instead of plain preserved text.
- Update CSS: replace `.detail-original-prompt-text` box/border/pre-wrap styling with `.detail-section--original-prompt .markdown-body` sizing rules (including mobile breakpoint).
- Update dashboard-guide.md docs to describe the collapsed-by-default markdown rendering behavior.
- Update TaskDetailModal tests to cover collapsed-by-default state, expand/collapse toggle, markdown rendering, and no-toggle empty state.
- Add changeset (@runfusion/fusion patch) describing the user-facing behavior change.
Files changed:
.changeset/fn-7543-original-prompt-markdown-collapsed.md | 7 +++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/TaskDetailModal.css | 13 ++----
packages/dashboard/app/components/TaskDetailModal.tsx | 30 +++++++++++--
packages/dashboard/app/components/__tests__/TaskDetailModal.inline-editing-and-integrations.test.tsx | 52 +++++++++++++---------
5 files changed, 69 insertions(+), 35 deletions(-)
Fusion-Task-Id: FN-7543
Fusion-Task-Lineage: b00964c0-404e-41a1-b9e1-336c000d4acc
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:18 -07:00
gsxdsm
5c3d58a5d7
FN-7539: suppress oversight badge for inherited default level
...
Prevent the Auto-recovery/oversight badge from rendering on virtually every task card when the effective planner oversight level is just the inherited schema default.
- TaskCard: track whether the effective oversight level was reached purely via inheritance (no per-task override, no explicit non-default workflow tier), and suppress the badge in that case
- Preserve badge visibility when a task explicitly overrides oversight to "autonomous" or a workflow tier explicitly resolves to a non-default level
- Update TaskCard oversight tests to cover inherited-default suppression vs explicit-override rendering
- Add changeset documenting the fix
- Update dashboard guide docs
Files changed:
.changeset/fn-7539-oversight-badge-default.md | 7 ++++
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/TaskCard.tsx | 21 +++++++++-
.../__tests__/TaskCard.oversight.test.tsx | 48 +++++++++++++++++++---
.../app/components/__tests__/TaskCard.test.tsx | 11 +++--
5 files changed, 76 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-7539
Fusion-Task-Lineage: 8ac9a60c-69c6-4095-b6b2-18c79718b62b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:17 -07:00
gsxdsm
d10ea9aef1
FN-7519: add planner-overseer intervention timeline model and UI
...
Introduces a persisted planner-overseer intervention timeline surfaced in the task-detail Planner Oversight cluster, recording stage, reason, action taken, outcome, attempt count/limit, and source links for each intervention.
- Add core `PlannerInterventionEntry` type plus `recordPlannerIntervention`/`getPlannerInterventionTimeline` helpers that persist entries via the run-audit store under the `overseer:intervention` mutation
- Add `PlannerInterventionTimeline` dashboard component rendering the timeline (stage/reason/action/outcome/attempts/links) with associated styles
- Wire the new API route/legacy handler and TaskDetailModal integration to expose and render the timeline
- Add unit tests for the core helpers and the new UI component
- Add changeset for the new minor feature and update architecture/dashboard-guide docs
Files changed:
$(cat /tmp/diffstat_7519.txt)
Fusion-Task-Id: FN-7519
Fusion-Task-Lineage: 3c4fcda3-9eb2-46d3-b142-b0c7d6334cd0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:17 -07:00
gsxdsm
6498d028f2
FN-7517: add task detail oversight quick-controls (level change, manual nudge, stop, explain-current-action)
...
Adds task detail modal controls that let an operator quickly change a task's
oversight level, nudge the planner with a manual instruction, stop oversight
entirely, and request an explanation of the overseer's current action,
backed by new dashboard API routes and engine/core plumbing.
- Add oversight quick-controls UI (level change, manual nudge, stop
oversight, explain-current-action) to TaskDetailModal with supporting
styles in TaskDetailModal.css and TaskCard.css
- Add dashboard legacy API + task-workflow routes to handle the new
oversight actions (register-task-workflow-routes.ts, api/legacy.ts)
- Extend planner-overseer-state and planner-overseer-runtime-snapshot to
track/report manual nudge and stop-oversight state
- Extend PlannerRecoveryController and project-engine to apply manual
oversight actions (level change, nudge, stop, explain) end-to-end
- Add tests: TaskDetailModal.oversight-controls.test.tsx,
tasks-overseer-controls.test.ts,
planner-recovery-controller-manual-action.test.ts, plus updates to
planner-overseer-runtime-snapshot.test.ts and test-helpers
- Update docs/dashboard-guide.md and docs/settings-reference.md
Files changed:
docs/dashboard-guide.md | 2 +
docs/settings-reference.md | 2 +-
packages/core/src/planner-overseer-state.ts | 18 +
packages/dashboard/app/api/legacy.ts | 33 ++
packages/dashboard/app/components/TaskCard.css | 13 +
packages/dashboard/app/components/TaskDetailModal.css | 122 +++++++
packages/dashboard/app/components/TaskDetailModal.tsx | 374 ++++++++++++++++++++-
packages/dashboard/app/components/__tests__/TaskDetailModal.oversight-controls.test.tsx | 290 ++++++++++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.test-helpers.ts | 11 +
packages/dashboard/src/routes/__tests__/tasks-overseer-controls.test.ts | 191 +++++++++++
packages/dashboard/src/routes/register-task-workflow-routes.ts | 68 ++++
packages/engine/src/__tests__/planner-overseer-runtime-snapshot.test.ts | 24 +-
packages/engine/src/__tests__/planner-recovery-controller-manual-action.test.ts | 84 +++++
packages/engine/src/planner-overseer-runtime-snapshot.ts | 11 +
packages/engine/src/planner-recovery-controller.ts | 40 +++
packages/engine/src/project-engine.ts | 102 ++++++
16 files changed, 1380 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7517
Fusion-Task-Lineage: eded7ff5-d126-429d-acbb-9f4bfff5ae2a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:16 -07:00
gsxdsm
ad744aa28a
FN-7537: make manual backup automation runs match cron in-process behavior
...
Manual 'Run now' automation runs previously always shelled out via exec(), diverging from the scheduled cron path which runs backup commands in-process; this unifies both paths and adds live-run output coverage.
- Export formatInProcessBackupError, isInProcessBackupCommand, and isInProcessMemoryBackupCommand from @fusion/engine for reuse
- Have the dashboard's single-command/command-step manual run path (executeSingleCommand in routes.ts) intercept in-process backup/memory-backup commands via the scoped TaskStore, mirroring RoutineRunner.executeCommand/CronRunner
- Add regression coverage confirming onStep/onText live-run callbacks stream incremental output for the new interception branch
- Add changeset and doc note for the fix
Files changed:
.changeset/fn-7537-backup-automation-manual-run.md | 7 +
docs/dashboard-guide.md | 3 +
.../src/__tests__/routes-automation.test.ts | 171 +++++++++++++++++++++
packages/dashboard/src/routes.ts | 73 ++++++++-
.../engine/src/__tests__/routine-runner.test.ts | 96 +++++++++++-
packages/engine/src/cron-runner.ts | 7 +-
packages/engine/src/index.ts | 2 +-
7 files changed, 354 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7537
Fusion-Task-Lineage: 47824270-c0d4-471b-a5c9-f5350176df29
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:16 -07:00
gsxdsm
8d36b99b22
FN-7536: fix Activity dropdown closing on mobile scroll/resize echoes
...
Route window resize/orientationchange/scroll through the same opening-viewport guard used by visualViewport so a same-gesture echo repositions the Activity menu instead of closing it, fixing the dropdown not showing on mobile.
- Add handleGuardedViewportChange shared by resize/orientationchange/visualViewport listeners so an opening-gesture echo only repositions the menu instead of closing it
- Add handleScrollChange to treat scrolls originating inside the .detail-tabs horizontal tab strip as benign (reposition-only), since window scroll listens with capture and would otherwise see nested scroller scrolls as a close signal
- Add regression tests covering mobile Activity dropdown open/scroll/resize behavior
- Add changeset for the fix
- Update dashboard guide docs
Files changed:
.changeset/fn-7536-activity-dropdown-mobile.md | 7 +
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/TaskDetailModal.tsx | 38 +++--
.../TaskDetailModal.task-activity-chat.test.tsx | 161 +++++++++++++++++++++
4 files changed, 196 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7536
Fusion-Task-Lineage: c8a3b11e-9bd2-4a61-b49e-038c93cfe4d2
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:16 -07:00
gsxdsm
df0be88482
FN-7534: fix branch-group completion for archived unlanded members
...
Branch-group completion no longer silently drops archived-but-unlanded members, which previously let genuinely-incomplete groups be flagged complete and promoted.
- listTasksByBranchGroup now scans with includeArchived:true so archived members stay counted in the group's total instead of dropping out silently
- ArchivedTaskEntry gains a persisted mergeDetails snapshot so an archived member that had already landed is still distinguished from one that never landed
- store.ts archival paths (task->archive projection) now carry mergeDetails through so isBranchGroupMemberLanded keeps working post-archival
- Added regression coverage in branch-group-store.test.ts and group-merge-coordinator.test.ts for archived-landed and archived-unlanded gating
- Added changeset documenting the fix as a patch-level bug fix
Files changed:
.changeset/fn-7534-branch-group-archived-member.md | 7 +
docs/dashboard-guide.md | 2 +
packages/core/src/__tests__/branch-group-store.test.ts | 77 +++++++++++
packages/core/src/store.ts | 30 ++++-
packages/core/src/types.ts | 11 ++
packages/engine/src/__tests__/group-merge-coordinator.test.ts | 148 ++++++++++++++++++++-
6 files changed, 273 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7534
Fusion-Task-Lineage: 510af857-ce08-49a0-a2a1-41b3ad473804
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:16 -07:00
gsxdsm
31822b0336
FN-7516: show effective oversight level and active overseer state on task cards
...
Adds two display-only badges to TaskCard so operators can see planner oversight configuration and live overseer activity at a glance.
- Resolve and display the workflow's effective `plannerOversightLevel` (observe/steer/autonomous) per task, with a module-level cache keyed by (projectId, workflowId) and in-flight de-duplication to avoid redundant `/api/workflows/:id/setting-values` fetches across cards sharing a workflow.
- Gate oversight badge rendering until the workflow-effective value resolves (or a per-task override is known) so the very first render never shows a guessed schema-default badge.
- Derive a card-local "active overseer state" indicator (Executor/Reviewer/Merger/Pull request/Workflow gate) that mirrors the engine's `resolveWatchedStage` precedence using only fields already present on the Task payload (column, paused, pausedReason, prInfo, reviewState, workflowTransitionNotification), since the real in-memory monitor state has no persisted/API surface today.
- Add corresponding CSS badge modifiers and update dashboard-guide.md documentation.
- Add TaskCard.oversight.test.tsx covering the new badges and update existing TaskCard tests/badge-wrap test for the new markup.
Files changed:
docs/dashboard-guide.md | 4 +
packages/dashboard/app/components/TaskCard.css | 106 +++++-
packages/dashboard/app/components/TaskCard.tsx | 369 +++++++++++++++++++-
.../__tests__/TaskCard.badge-wrap.test.tsx | 1 +
.../__tests__/TaskCard.oversight.test.tsx | 383 +++++++++++++++++++++
.../app/components/__tests__/TaskCard.test.tsx | 32 +-
6 files changed, 889 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7516
Fusion-Task-Lineage: ce909409-862b-4697-a19e-d6735a3b572d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:16 -07:00
gsxdsm
36bd74e337
FN-7532: stamp branch group merge attribution
...
Ensure shared branch group members record merge attribution so completion checklists reflect real landed state.
- Route AI merges through branch-group merge routing before selecting the integration target.
- Stamp mergeDetails merge target fields for both landed and no-op finalize paths.
- Record shared-group member landing state and best-effort managed PR checklist sync after AI merges.
- Cover dashboard, CLI lifecycle, and merger scenarios for accurate branch-group completion counts.
Files changed:
.changeset/fn-7532-branch-group-completion.md | 7 ++
docs/dashboard-guide.md | 2 +
.../src/commands/__tests__/task-lifecycle.test.ts | 29 +++++++
.../src/__tests__/routes-branch-groups.test.ts | 45 +++++++++++
packages/engine/src/__tests__/merger-ai.test.ts | 68 +++++++++++++++-
packages/engine/src/merger-ai.ts | 90 +++++++++++++++++++++-
6 files changed, 235 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-7532
Fusion-Task-Lineage: cd65c18a-f1ad-4f8b-99b2-2e61e233f042
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 21:28:15 -07:00
gsxdsm
c16cc9e08a
FN-7515: expose planner oversight configuration
...
Expose planner oversight as workflow-native configuration across task and workflow surfaces.
- Add a shared TaskForm selector for per-task planner oversight overrides with inherit semantics.
- Thread plannerOversightLevel through new task creation, task detail edits, and legacy dashboard API payloads.
- Add a Workflow Editor Values display group and documentation for configuring workflow defaults.
- Cover create, edit, form, and workflow settings behavior with dashboard tests.
Files changed:
.changeset/fn-7515-planner-oversight-config-exposure.md | 7 ++
docs/dashboard-guide.md | 1 +
docs/settings-reference.md | 2 +-
packages/dashboard/app/api/legacy.ts | 3 +
packages/dashboard/app/components/NewTaskModal.tsx | 12 +++-
packages/dashboard/app/components/TaskDetailModal.tsx | 11 +++-
packages/dashboard/app/components/TaskForm.tsx | 34 ++++++++++
packages/dashboard/app/components/__tests__/NewTaskModal.test.tsx | 31 +++++++++
packages/dashboard/app/components/__tests__/TaskDetailModal.inline-editing-and-integrations.test.tsx | 76 ++++++++++++++++++++++
packages/dashboard/app/components/__tests__/TaskForm.test.tsx | 28 ++++++++
packages/dashboard/app/components/__tests__/WorkflowSettingsPanel.test.tsx | 34 ++++++++++
packages/dashboard/app/components/workflow-setting-display.ts | 17 ++++-
12 files changed, 251 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7515
Fusion-Task-Lineage: aded67c0-835c-4046-b691-04dc2bb2d314
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 14:26:46 -07:00
gsxdsm
87a700cd4d
FN-7506: add scoped settings reset actions
...
Add a Settings footer reset flow for scoped menu and project-wide defaults.
- Add Reset Settings dialog actions for the active settings menu and all project settings.
- Track section-owned settings keys in a shared scope-aware registry and reuse it for save/reset validation.
- Cover modal/mobile reset behavior, registry invariants, docs, i18n strings, and a release changeset.
Files changed:
.changeset/fn-7506-settings-reset.md | 7 +
docs/dashboard-guide.md | 12 +
.../dashboard/app/components/SettingsModal.css | 33 +++
.../dashboard/app/components/SettingsModal.tsx | 215 +++++++++++++++++-
.../__tests__/SettingsModal.general.test.tsx | 145 ++++++++++++
.../components/__tests__/settings-mobile.test.tsx | 37 +++-
.../settings/__tests__/section-keys.test.ts | 171 ++++++++++++++
.../app/components/settings/save-split.ts | 9 +-
.../app/components/settings/section-keys.ts | 246 +++++++++++++++++++++
packages/i18n/locales/en/app.json | 11 +
packages/i18n/locales/zh-CN/app.json | 11 +
11 files changed, 886 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7506
Fusion-Task-Lineage: a627e820-fe3b-42c5-adf2-97469bbe7a3b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 13:36:01 -07:00
gsxdsm
4baa4c43c5
FN-7505: show defaults in settings descriptions
...
Expose settings defaults directly in dashboard help text so operators can see baseline values while editing settings.
- Add default-value wording across global and project settings descriptions and locale strings.
- Document the dashboard/default-reference alignment and add a changeset for the published CLI package.
- Add coverage that every visible settings field includes its default in helper text and update existing assertions.
Files changed:
.changeset/fn-7505-settings-default-descriptions.md | 7 +
docs/dashboard-guide.md | 3 +
docs/settings-reference.md | 3 +
.../__tests__/SettingsModal.general.test.tsx | 2 +-
.../settings/sections/AgentPermissionsSection.tsx | 4 +-
.../settings/sections/AppearanceSection.tsx | 4 +-
.../settings/sections/BackupsSection.tsx | 13 +-
.../settings/sections/CommandsSection.tsx | 4 +-
.../settings/sections/ExperimentalSection.tsx | 2 +-
.../settings/sections/GeneralSection.tsx | 26 +-
.../settings/sections/GlobalGeneralSection.tsx | 25 +-
.../settings/sections/GlobalModelsSection.tsx | 24 +-
.../settings/sections/McpServersCard.tsx | 1 +
.../components/settings/sections/MemorySection.tsx | 12 +-
.../components/settings/sections/MergeSection.tsx | 37 +-
.../settings/sections/ModelPricingSection.tsx | 2 +-
.../settings/sections/NodeRoutingSection.tsx | 3 +-
.../settings/sections/NodeSyncSection.tsx | 6 +-
.../settings/sections/NotificationsSection.tsx | 14 +-
.../settings/sections/ProjectModelsSection.tsx | 11 +-
.../settings/sections/PromptsSection.tsx | 2 +-
.../components/settings/sections/RemoteSection.tsx | 7 +-
.../settings/sections/ResearchGlobalSection.tsx | 15 +-
.../settings/sections/ResearchProjectSection.tsx | 16 +-
.../settings/sections/ScheduledEvalsSection.tsx | 7 +-
.../settings/sections/SchedulingSection.tsx | 20 +-
.../settings/sections/WorktreesSection.tsx | 14 +-
.../sections/__tests__/AppearanceSection.test.tsx | 4 +-
.../MergeSection.legacy-automerge-cleanup.test.tsx | 2 +-
.../settings-default-descriptions.test.tsx | 573 +++++++++++++++++++++
packages/i18n/locales/en/app.json | 261 ++++++----
31 files changed, 914 insertions(+), 210 deletions(-)
Fusion-Task-Id: FN-7505
Fusion-Task-Lineage: 7688caf2-2a95-4401-8b27-9da4b46ecfcd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 13:09:29 -07:00
gsxdsm
9f24b507fc
FN-7507: prioritize topmost dashboard shortcut dismissal
...
Refine dashboard keyboard shortcut behavior and coverage for configurable popup handling.
- Factor App Escape dismissal into a pure helper that closes one topmost surface at a time.
- Prioritize popped-out tasks ahead of Quick Chat, Terminal, and fixed dashboard modals.
- Add regression coverage for configurable shortcut bindings, editable focus guards, default-prevented events, and Escape ordering.
- Update dashboard shortcut documentation and release-note wording.
Files changed:
.changeset/fn-7494-keyboard-shortcuts.md | 4 +-
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/App.tsx | 110 +++++++++-----
.../app/__tests__/App.keyboard-shortcuts.test.tsx | 158 +++++++++++++++++++++
.../app/utils/__tests__/keyboardShortcuts.test.ts | 1 +
5 files changed, 236 insertions(+), 39 deletions(-)
Fusion-Task-Id: FN-7507
Fusion-Task-Lineage: 804986ef-ec6c-4404-a168-6d154f75b118
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 12:08:38 -07:00
gsxdsm
2f23d2260d
FN-7494: add configurable dashboard shortcuts
...
Add configurable dashboard keyboard shortcuts for opening Quick Chat and Terminal.
- Add global settings defaults, schemas, persistence, and Settings UI controls for dashboard shortcuts.
- Register safe document-level shortcut handling with editable-target guards and Escape popup dismissal.
- Normalize shortcut strings, detect disabled/conflicting bindings, and document operator behavior.
- Cover shortcut parsing, dashboard listener behavior, and settings persistence with tests.
Files changed:
.changeset/fn-7494-keyboard-shortcuts.md | 7 +
docs/dashboard-guide.md | 14 ++
.../core/src/__tests__/global-settings.test.ts | 20 +++
.../core/src/__tests__/settings-defaults.test.ts | 10 ++
.../core/src/__tests__/settings-parity.test.ts | 10 ++
packages/core/src/__tests__/store-settings.test.ts | 10 ++
packages/core/src/settings-schema.ts | 8 +
packages/core/src/types.ts | 12 ++
packages/dashboard/app/App.tsx | 52 ++++++
.../dashboard/app/components/SettingsModal.css | 21 +++
.../dashboard/app/components/SettingsModal.tsx | 11 ++
.../__tests__/SettingsModal.general.test.tsx | 63 ++++++++
.../app/components/settings/save-split.ts | 1 +
.../settings/sections/GlobalGeneralSection.tsx | 38 +++++
.../useDashboardKeyboardShortcuts.test.tsx | 101 ++++++++++++
packages/dashboard/app/hooks/useAppSettings.ts | 8 +-
.../app/hooks/useDashboardKeyboardShortcuts.ts | 66 ++++++++
.../app/utils/__tests__/keyboardShortcuts.test.ts | 76 +++++++++
packages/dashboard/app/utils/keyboardShortcuts.ts | 175 +++++++++++++++++++++
19 files changed, 702 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7494
Fusion-Task-Lineage: 30445f4d-c0c5-4657-bd79-fc2acaf3c37d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 11:38:42 -07:00
gsxdsm
b0208c140a
FN-7500: restore terminal clipboard shortcuts
...
Restore terminal copy and paste shortcut handling across integrated and embedded sessions.
- Handle Ctrl/Cmd+V by reading clipboard text and forwarding it once to the active PTY or attach channel.
- Preserve Ctrl/Cmd+C selection copy behavior while leaving no-selection interrupts available to the shell.
- Document the exact-once terminal paste behavior and add a patch changeset.
- Cover successful, missing, rejected, and empty clipboard paste paths in terminal tests.
Files changed:
.changeset/fn-7500-terminal-shortcuts.md | 7 +++
docs/dashboard-guide.md | 4 +-
.../dashboard/app/components/SessionTerminal.tsx | 24 ++++++++++-
.../dashboard/app/components/TerminalModal.tsx | 23 ++++++++-
.../components/__tests__/SessionTerminal.test.tsx | 43 ++++++++++++++++-
.../components/__tests__/TerminalModal.test.tsx | 50 +++++++++++++++++++-
6 files changed, 132 insertions(+), 19 deletions(-)
Fusion-Task-Id: FN-7500
Fusion-Task-Lineage: 8e87fa22-c0b7-402d-aeef-322cbd852529
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:21 -07:00
gsxdsm
7d8a1b8831
FN-7502: add pinned terminal layout
...
Adds a persisted pinned terminal mode that places the terminal below the dashboard instead of overlaying it.
- Add a project-scoped below display mode with pin/unpin header controls and resize support.
- Render below-mode terminal in the dashboard flow while preserving overlay behavior for docked, floating, and mobile modes.
- Move terminal utility actions into the header so controls remain available across layouts.
- Document the new terminal pin control and add release-note coverage plus regression tests.
Files changed:
.changeset/fn-7502-terminal-below-layout.md | 7 +
docs/dashboard-guide.md | 16 +-
packages/dashboard/app/App.tsx | 22 +-
packages/dashboard/app/components/AppModals.tsx | 14 --
.../dashboard/app/components/ProjectSelector.css | 12 +
.../dashboard/app/components/TerminalModal.css | 108 ++++++---
.../dashboard/app/components/TerminalModal.tsx | 246 +++++++++++----------
.../components/__tests__/TerminalModal.test.tsx | 100 ++++++++-
8 files changed, 351 insertions(+), 174 deletions(-)
Fusion-Task-Id: FN-7502
Fusion-Task-Lineage: bb1b5e22-d19f-4af1-aa34-4213bc712384
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:21 -07:00
gsxdsm
e8dc2ae6d1
FN-7498: show original task prompts in Plan tab
...
Display the initial task prompt separately from the generated plan in task details.
- Add a read-only Original prompt section above generated PROMPT.md content in task detail Plan views.
- Preserve plain-text formatting and responsive wrapping for original prompts while leaving plan edit/revision controls scoped to generated prompts.
- Cover modal, embedded, empty-state, CSS, docs, and release-note behavior.
Files changed:
.changeset/fn-7498-original-task-prompt.md | 7 ++
docs/dashboard-guide.md | 1 +
.../dashboard/app/components/TaskDetailModal.css | 30 +++++
.../dashboard/app/components/TaskDetailModal.tsx | 18 +++
...lModal.inline-editing-and-integrations.test.tsx | 127 ++++++++++++++++++++-
5 files changed, 182 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-7498
Fusion-Task-Lineage: df83c73d-d731-4ba4-942b-bd93ec1b9712
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
efa8105036
FN-7495: add settings search
...
Add a searchable Settings navigation that filters visible sections by setting names and keywords.
- Add a Settings search field with clear and empty-state affordances for desktop and mobile layouts.
- Filter only the already-visible Settings sections while preserving matching group headers and mobile section labels.
- Add searchable section metadata, localized labels, tests, docs, and a release changeset.
Files changed:
.changeset/fn-7495-settings-search.md | 7 +
docs/dashboard-guide.md | 5 +
.../dashboard/app/components/SettingsModal.css | 97 +++++-
.../dashboard/app/components/SettingsModal.tsx | 346 ++++++++++++++++-----
.../__tests__/SettingsModal.general.test.tsx | 71 +++++
.../components/__tests__/settings-mobile.test.tsx | 25 ++
.../settings/sections/McpServersCard.tsx | 2 +-
packages/i18n/locales/en/app.json | 11 +
8 files changed, 475 insertions(+), 89 deletions(-)
Fusion-Task-Id: FN-7495
Fusion-Task-Lineage: 1d703059-6156-4d20-afbd-3cdb64e3e9f3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:20 -07:00
gsxdsm
b42be87ad1
FN-7493: keep task popups on board layer
...
Keep task-detail popups below global utility windows while preserving Activity menu visibility.
- Route ordinary task-detail FloatingWindow instances through a lower task-detail z-index band.
- Emit and consume popup geometry-change signals so root-portaled Activity menus stay attached during drag and resize.
- Extend dashboard tests and docs for popup layering and Activity dropdown behavior.
Files changed:
.changeset/fn-7493-task-popup-layer.md | 7 +++
docs/dashboard-guide.md | 8 ++-
docs/settings-reference.md | 2 +-
packages/dashboard/app/App.tsx | 4 ++
.../App.taskDetailFloatingGeometry.test.tsx | 45 +++++++++++++-
.../dashboard/app/components/FloatingWindow.tsx | 31 ++++++++--
.../dashboard/app/components/TaskDetailModal.css | 3 +
.../dashboard/app/components/TaskDetailModal.tsx | 27 ++++++++-
.../components/__tests__/FloatingWindow.test.tsx | 32 +++++++++-
.../FloatingWindowStack.cross-type.test.tsx | 48 ++++++++++++---
.../TaskDetailModal.task-activity-chat.test.tsx | 68 ++++++++++++++++++++++
.../app/components/floatingWindowStack.ts | 22 +++++--
12 files changed, 272 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-7493
Fusion-Task-Lineage: 5f1ec72c-f8dc-44ee-b303-319e0faac0f9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-04 10:42:19 -07:00
gsxdsm
b42ba9f515
FN-7485: keep Activity menu open on mobile iOS
...
Keep the task-detail Activity view picker usable during mobile iOS opening taps.
- Add a short visualViewport opening guard for the root-portaled Activity views menu while preserving normal close behavior afterward.
- Reset menu position and guard state consistently on outside click, Escape, selection, task changes, and tab toggles.
- Cover the iOS visualViewport echo, portal/CSS contract, and documentation plus a patch changeset.
Files changed:
.changeset/activity-menu-ios.md | 7 +
docs/dashboard-guide.md | 3 +-
.../dashboard/app/components/TaskDetailModal.tsx | 68 +++++++---
.../__tests__/TaskDetailModal.css.test.ts | 9 +-
.../TaskDetailModal.task-activity-chat.test.tsx | 141 ++++++++++++++++++++-
5 files changed, 210 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-7485
Fusion-Task-Lineage: 291331c4-453c-481b-b991-41f57db23e3b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:48:30 -07:00
gsxdsm
a2b09f277d
FN-7479: route dock task clicks to popups
...
Make right-dock task list clicks follow the task popup preference.
- Thread popup routing into the right-dock Tasks list while preserving embedded dock detail when popups are disabled.
- Cover popup-enabled and popup-disabled dock list behavior with controller tests.
- Update settings copy, operator docs, and release notes for the expanded popup setting scope.
Files changed:
.changeset/fn-7479-right-dock-task-popup.md | 7 ++
docs/dashboard-guide.md | 7 +-
docs/settings-reference.md | 4 +-
packages/dashboard/app/App.tsx | 2 +-
.../app/components/__tests__/RightDock.test.tsx | 129 +++++++++++++++++++++
.../settings/sections/AppearanceSection.tsx | 4 +-
.../app/components/useRightDockController.tsx | 21 +++-
7 files changed, 163 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7479
Fusion-Task-Lineage: 953f6a77-8cb9-409e-be4b-f1dbdc6e1b42
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:47:00 -07:00
gsxdsm
50cdab17b9
FN-7474: add GitHub onboarding action choices
...
Add first-run onboarding paths for GitHub OAuth and GitHub CLI setup while preserving existing GitHub warning behavior.
- Add a GitHub onboarding action model for OAuth, authenticated gh CLI, unauthenticated gh CLI, missing gh CLI, and skip states.
- Render in-flow GitHub OAuth connection, gh auth login guidance, and gh CLI install guidance with mobile styling and coverage.
- Update onboarding docs, locale resources, and the release changeset as a minor user-facing feature.
- Preserve the one-day GitHub warning-delay copy and dashboard OAuth browser behavior docs from main.
Files changed:
.changeset/fn-7474-github-onboarding-actions.md | 7 +
docs/dashboard-guide.md | 2 +-
docs/getting-started.md | 2 +-
packages/cli/vitest.config.ts | 12 ++
.../app/components/ModelOnboardingModal.css | 68 ++++++++-
.../app/components/ModelOnboardingModal.tsx | 153 +++++++++++++++++++--
.../__tests__/ModelOnboardingModal.test.tsx | 101 +++++++++++++-
packages/dashboard/vitest.config.ts | 20 +++
packages/i18n/locales/en/app.json | 11 +-
packages/i18n/locales/es/app.json | 11 +-
packages/i18n/locales/fr/app.json | 11 +-
packages/i18n/locales/ko/app.json | 11 +-
packages/i18n/locales/zh-CN/app.json | 11 +-
packages/i18n/locales/zh-TW/app.json | 11 +-
packages/i18n/src/resources.d.ts | 11 +-
15 files changed, 413 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-7474
Fusion-Task-Lineage: c06d3db5-da4b-43f7-8b74-a41f6a041029
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:46:59 -07:00
gsxdsm
ced783ea79
FN-7473: open desktop Anthropic OAuth in browser
...
Route desktop OAuth popups to the system browser while preserving Anthropic subscription login polling.\n\n- Add Electron window-open handling that keeps internal Fusion navigation in-app and external http(s) OAuth URLs in the system browser.\n- Cover Anthropic Subscription polling so login-in-progress states do not show a false incomplete-login toast.\n- Document desktop OAuth browser handoff behavior and add a patch changeset.\n\nFiles changed:\n .../fn-7473-desktop-anthropic-oauth-browser.md | 7 ++\n docs/dashboard-guide.md | 2 +-\n docs/settings-reference.md | 2 +-\n .../__tests__/SettingsModal.models-auth.test.tsx | 76 ++++++++++++++++++++++\n .../desktop/src/__tests__/main-integration.test.ts | 2 +\n .../desktop/src/__tests__/main-local-mode.test.ts | 3 +-\n .../desktop/src/__tests__/main.integration.test.ts | 2 +\n packages/desktop/src/__tests__/main.test.ts | 54 ++++++++++++++-\n packages/desktop/src/main.ts | 60 +++++++++++++++++-\n 9 files changed, 203 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7473
Fusion-Task-Lineage: 3d6b0acd-536c-4f7d-8c6b-35eb519b46bb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
315f3bc32c
FN-7470: show Git prerequisite during onboarding
...
Add Git availability checks to the first-run GitHub onboarding flow so missing host prerequisites are visible before project setup.
- Probe the server-host Git CLI with a bounded core helper and expose status through the auth status API.
- Render ready/missing Git prerequisite guidance in the GitHub onboarding step with install instructions and localized strings.
- Cover the probe, auth route, and onboarding UI states with regression tests, docs, and a changeset.
Files changed:
.changeset/fn-7470-git-onboarding.md | 7 ++
docs/dashboard-guide.md | 2 +
docs/getting-started.md | 2 +-
packages/core/src/__tests__/git-cli-status.test.ts | 83 +++++++++++++++++++++
packages/core/src/git-cli-status.ts | 56 ++++++++++++++
packages/core/src/index.ts | 7 ++
packages/dashboard/app/api/legacy.ts | 8 ++
.../app/components/ModelOnboardingModal.css | 59 +++++++++++++++
.../app/components/ModelOnboardingModal.tsx | 53 ++++++++++++-
.../__tests__/ModelOnboardingModal.test.tsx | 87 ++++++++++++++++++++++
.../dashboard/src/__tests__/routes-auth.test.ts | 62 ++++++++++++++-
.../dashboard/src/routes/register-auth-routes.ts | 13 +++-
packages/i18n/locales/en/app.json | 11 ++-
packages/i18n/locales/es/app.json | 44 ++++++++++-
packages/i18n/locales/fr/app.json | 44 ++++++++++-
packages/i18n/locales/ko/app.json | 44 ++++++++++-
packages/i18n/locales/zh-CN/app.json | 44 ++++++++++-
packages/i18n/locales/zh-TW/app.json | 44 ++++++++++-
packages/i18n/src/resources.d.ts | 9 +++
19 files changed, 661 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-7470
Fusion-Task-Lineage: 56d6f118-0d82-4f89-bcaa-b01e72a1bf8b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
50786f29d4
FN-7475: delay GitHub setup warnings
...
Delay dashboard GitHub setup warnings until the project grace period expires while keeping AI setup warnings immediate.
- Add per-project GitHub warning delay state and persistence.
- Route dashboard GitHub warnings to Settings → Authentication with a Connect GitHub action.
- Hide non-actionable GitHub-only warnings in the New Task modal and update localized copy, docs, and tests.
Files changed:
.changeset/fn-7475-github-setup-warning.md | 7 ++
docs/dashboard-guide.md | 6 +
packages/dashboard/app/App.tsx | 11 +-
packages/dashboard/app/components/NewTaskModal.tsx | 8 +-
.../app/components/SetupWarningBanner.css | 10 ++
.../app/components/SetupWarningBanner.tsx | 18 ++-
.../app/components/__tests__/NewTaskModal.test.tsx | 46 ++++++-
.../__tests__/SetupWarningBanner.test.tsx | 40 ++++++
.../app/components/dashboard/DashboardBanners.tsx | 3 +
.../dashboard/__tests__/DashboardBanners.test.tsx | 125 ++++++++++++++++++-
.../dashboard/app/components/dashboard/types.ts | 1 +
.../__tests__/useGithubSetupWarningDelay.test.ts | 134 +++++++++++++++++++++
.../app/hooks/useGithubSetupWarningDelay.ts | 96 +++++++++++++++
packages/dashboard/app/utils/projectStorage.ts | 1 +
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 | 127 +++++++++++++------
21 files changed, 606 insertions(+), 57 deletions(-)
Fusion-Task-Id: FN-7475
Fusion-Task-Lineage: 5bf1fffa-b58c-42a1-b170-367a4c20eaaf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:21 -07:00
gsxdsm
b800f7d0df
FN-7469: select newly created project directories
...
Project setup now targets folders immediately after they are created from the directory picker.
- Add an opt-in DirectoryPicker mode that selects the API-returned created folder path.
- Enable the mode for setup wizard and project setup forms while preserving other picker behavior.
- Clear wizard path errors on path changes and document the setup behavior.
- Cover created-folder selection and default-picker preservation with dashboard tests.
Files changed:
.../fn-7469-select-created-project-directory.md | 7 ++
docs/dashboard-guide.md | 2 +
docs/getting-started.md | 1 +
.../dashboard/app/components/DirectoryPicker.tsx | 16 +++-
.../dashboard/app/components/SetupProjectForm.tsx | 1 +
.../dashboard/app/components/SetupWizardModal.tsx | 3 +-
.../components/__tests__/DirectoryPicker.test.tsx | 101 +++++++++++++++++----
.../components/__tests__/SetupProjectForm.test.tsx | 10 ++
.../components/__tests__/SetupWizardModal.test.tsx | 43 ++++++++-
9 files changed, 162 insertions(+), 22 deletions(-)
Fusion-Task-Id: FN-7469
Fusion-Task-Lineage: 1883262f-3fdf-4583-9bb0-e9435039e17d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 21:45:20 -07:00
gsxdsm
d9ef51492d
FN-7462: show mobile chat conversation titles
...
Mobile direct-chat dropdowns now identify sessions by conversation title instead of model-name text.
- Render the mobile session trigger with the conversation title or Untitled while preserving the provider logo.
- Remove mobile trigger model-tag styling and assert the model badge stays out of the compact header.
- Document the mobile Chat dropdown behavior and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7462-mobile-chat-dropdown-title.md | 7 ++++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 8 -----
packages/dashboard/app/components/ChatView.tsx | 8 +++--
.../__tests__/ChatView.core-contracts.test.tsx | 25 +++++++++++---
.../components/__tests__/ChatView.mobile.test.tsx | 39 +++++++++++++++++++++-
6 files changed, 72 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-7462
Fusion-Task-Lineage: 6a6e2ac3-ecca-4076-81c5-b4e4a65eb286
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
00afb22bcb
FN-7458: default startup theme mode to system
...
Default fresh dashboard startup and appearance reset to System mode while keeping Shadcn Ember as the color theme.
- Set global themeMode defaults and Settings fallback props to system.
- Resolve pre-hydration web and desktop startup from prefers-color-scheme, including invalid cache and fallback paths.
- Update Appearance reset behavior, focused theme tests, docs, and the release changeset.
Files changed:
.changeset/fn-7458-system-theme-default.md | 7 ++
docs/dashboard-guide.md | 3 +-
docs/settings-reference.md | 4 +-
.../core/src/__tests__/global-settings.test.ts | 17 +++-
packages/core/src/__tests__/store-settings.test.ts | 6 +-
packages/core/src/settings-schema.ts | 6 +-
.../app/__tests__/index-html-theme-link.test.ts | 18 ++++
.../dashboard/app/components/SettingsModal.tsx | 8 +-
.../dashboard/app/components/ThemeSelector.tsx | 6 +-
.../components/__tests__/ThemeDropdown.test.tsx | 9 +-
.../components/__tests__/ThemeSelector.test.tsx | 2 +-
.../dashboard/app/hooks/__tests__/useTheme.test.ts | 111 ++++++++++++++++++++-
packages/dashboard/app/hooks/useTheme.ts | 21 +++-
packages/dashboard/app/index.html | 13 ++-
packages/desktop/src/renderer/index.html | 13 ++-
15 files changed, 211 insertions(+), 33 deletions(-)
Fusion-Task-Id: FN-7458
Fusion-Task-Lineage: fb6184b4-9a6a-4131-9f97-f8cd12ef904c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
95325201a6
FN-7459: remember task popup geometry
...
Remember task-detail popup geometry so operators can reuse one positioned window across tasks.
- Share a stable persisted geometry key for task-detail FloatingWindow instances while keeping per-task window identity.
- Add regression coverage for shared task popup geometry, malformed persisted data fallback, and isolated non-task windows.
- Document desktop/tablet popup geometry persistence and add a release changeset.
Files changed:
.changeset/fn-7459-task-popup-geometry.md | 7 ++
docs/dashboard-guide.md | 5 +-
docs/settings-reference.md | 2 +-
packages/dashboard/app/App.tsx | 5 +
.../App.taskDetailFloatingGeometry.test.tsx | 111 +++++++++++++++++++++
.../dashboard/app/components/FloatingWindow.tsx | 2 +-
.../components/__tests__/FloatingWindow.test.tsx | 83 ++++++++++++++-
7 files changed, 210 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7459
Fusion-Task-Lineage: 84674283-024f-4ed5-b7a0-6dade1b77f8b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-03 07:47:03 -07:00
gsxdsm
f9733341b5
FN-7453: add GitLab enablement controls
...
Add a settings-controlled GitLab enablement path while preserving saved GitLab configuration.
- Add project and global GitLab enable settings with collapsible Settings UI for URL and token controls.
- Gate GitLab auth, import loading, and import actions when GitLab integration is disabled.
- Preserve global GitLab values separately during global settings saves and document the new behavior.
- Cover enablement resolution, settings save behavior, disabled import UI, and GitLab route/auth gating with tests.
Files changed:
.changeset/fn-7453-gitlab-enable-disclosure.md | 7 ++
docs/dashboard-guide.md | 7 ++
docs/gitlab-parity-inventory.md | 1 +
docs/settings-reference.md | 4 ++
docs/task-management.md | 6 +-
packages/core/src/__tests__/gitlab-config.test.ts | 17 ++++-
.../core/src/__tests__/settings-parity.test.ts | 18 +++--
packages/core/src/gitlab-config.ts | 15 ++++-
packages/core/src/index.ts | 2 +-
packages/core/src/settings-schema.ts | 2 +
packages/core/src/types.ts | 5 ++
.../app/__tests__/settings-save-split.test.ts | 20 +++---
.../dashboard/app/components/GitHubImportModal.tsx | 43 +++++++++---
.../dashboard/app/components/SettingsModal.css | 77 +++++++++++++++++++++
.../dashboard/app/components/SettingsModal.tsx | 34 ++++++++-
.../__tests__/GitHubImportModal.test.tsx | 19 ++++++
.../__tests__/SettingsModal.general.test.tsx | 78 ++++++++++++++++++++++
.../SettingsModal.scheduling-merge.test.tsx | 7 +-
.../app/components/settings/save-split.ts | 5 +-
.../settings/sections/GeneralSection.tsx | 36 ++++++----
.../settings/sections/GlobalGeneralSection.tsx | 71 ++++++++++++--------
.../components/settings/sections/MergeSection.tsx | 44 +++++++-----
.../dashboard/src/__tests__/gitlab-auth.test.ts | 20 ++++++
.../dashboard/src/__tests__/routes-gitlab.test.ts | 11 +++
packages/dashboard/src/gitlab-auth.ts | 11 ++-
25 files changed, 458 insertions(+), 102 deletions(-)
Fusion-Task-Id: FN-7453
Fusion-Task-Lineage: 81fbd39d-675f-49d6-8d13-b7fcb4d25658
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 19:01:09 -07:00
gsxdsm
1430a42dd8
FN-7455: fix mobile direct chat header alignment
...
Keep the mobile direct-chat header on a single left-aligned row without losing accessible context.
- Hide the direct-chat ViewHeader title shell from layout while preserving the accessible Chat heading.
- Keep the back button first and the active session switcher beside it on a non-wrapping mobile row.
- Extend mobile chat coverage for long duplicate session titles, Bot fallback labels, and the CSS layout contract.
- Document the updated mobile Chat header behavior and add a patch changeset.
Files changed:
.changeset/fn-7455-mobile-chat-header-layout.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 17 +++--
packages/dashboard/app/components/ChatView.tsx | 4 +-
.../components/__tests__/ChatView.mobile.test.tsx | 80 ++++++++++++++++++++--
5 files changed, 98 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-7455
Fusion-Task-Lineage: fe14b542-ff6a-437b-ad89-8011c2b3c299
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 18:11:49 -07:00
gsxdsm
765218f80f
FN-7449: include chat token usage in dashboard totals
...
Chat token usage now contributes to Command Center token analytics totals alongside task execution usage.
- Add durable chat token usage rows and persistence hooks for assistant and room messages.
- Aggregate chat usage into token totals, time series, provider/model groups, CSV export, and dashboard counts.
- Cover chat token persistence and analytics with core and dashboard tests.
- Document the expanded dashboard token usage behavior and add a changeset for the published package.
Files changed:
.changeset/fn-7449-chat-token-totals.md | 7 +
docs/dashboard-guide.md | 4 +-
.../core/src/__tests__/token-analytics.test.ts | 146 ++++++++++++++++++
packages/core/src/chat-store.ts | 105 +++++++++++++
packages/core/src/chat-types.ts | 37 +++++
packages/core/src/db.ts | 52 ++++++-
packages/core/src/index.ts | 3 +
packages/core/src/token-analytics.ts | 167 +++++++++++++++++----
.../__tests__/CommandCenter.test.tsx | 4 +-
.../components/command-center/areas/TokensArea.tsx | 4 +
.../src/__tests__/chat-manager-cli-send.test.ts | 40 +++++
.../dashboard/src/__tests__/chat-manager.test.ts | 100 ++++++++++++
.../src/__tests__/command-center-csv.test.ts | 2 +
packages/dashboard/src/chat.ts | 110 +++++++++++++-
packages/dashboard/src/command-center-csv.ts | 3 +
15 files changed, 745 insertions(+), 39 deletions(-)
Fusion-Task-Id: FN-7449
Fusion-Task-Lineage: f2bacbb6-93b9-4874-b431-2049981b66c1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 15:00:40 -07:00
gsxdsm
1d6011c3a6
FN-7450: collapse mobile chat header rows
...
Collapse the mobile direct chat header into the shared top row.
- Move the mobile direct-thread back button and session switcher into ViewHeader actions.
- Hide the redundant mobile thread header while preserving desktop thread identity and context details.
- Update mobile chat styling, docs, changeset, and header contract tests for the single-row layout.
Files changed:
.changeset/fn-7450-mobile-chat-header.md | 7 +
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/ChatView.css | 53 +++++-
packages/dashboard/app/components/ChatView.tsx | 197 +++++++++++----------
.../__tests__/ChatView.core-contracts.test.tsx | 48 ++---
.../components/__tests__/ChatView.mobile.test.tsx | 76 ++++++--
6 files changed, 256 insertions(+), 128 deletions(-)
Fusion-Task-Id: FN-7450
Fusion-Task-Lineage: c266a9b8-7fb1-410e-9c35-adad4c6a2d47
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 14:09:35 -07:00
gsxdsm
5984f327d3
FN-7445: add Project Files creation and search controls
...
Improve the Project Files browser with first-class creation actions and recursive file search.
- Add visible create-file and create-folder buttons for Files — Project while keeping compact controls for embedded pickers.
- Add debounced recursive project file search with loading, retry, empty, and path-context result states.
- Cover project files creation and search behavior in dock, modal, and file browser tests.
- Document the new Project Files controls and add a release changeset.
Files changed:
.changeset/fn-7445-project-files-create-search.md | 7 +
docs/dashboard-guide.md | 3 +-
.../dashboard/app/components/DockFilesView.tsx | 1 +
packages/dashboard/app/components/FileBrowser.css | 88 +++++++++++++
packages/dashboard/app/components/FileBrowser.tsx | 145 ++++++++++++++++++++-
.../dashboard/app/components/FileBrowserModal.tsx | 1 +
.../components/__tests__/DockFilesView.test.tsx | 34 +++--
.../app/components/__tests__/FileBrowser.test.tsx | 109 ++++++++++++++++
.../components/__tests__/FileBrowserModal.test.tsx | 52 ++++++++
9 files changed, 426 insertions(+), 14 deletions(-)
Fusion-Task-Id: FN-7445
Fusion-Task-Lineage: 41510def-4900-42ee-beab-b67f28dfeaee
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:44:41 -07:00
gsxdsm
ec0256f7e5
FN-7444: add planning summary deepening checkpoint
...
Planning Mode now holds completed summaries behind a mandatory deepening prompt before finalization.
- Add shared constants and persistence for pending planning summaries.
- Insert the “Would you like to go deeper?” checkpoint with proceed, themed, and custom-topic responses.
- Update modal handling, API formatting, docs, changeset, and regression coverage for persisted and streamed planning flows.
Files changed:
.changeset/fn-7444-planning-deepening-checkpoint.md | 7 +
docs/dashboard-guide.md | 4 +
packages/core/src/index.ts | 2 +-
packages/core/src/types.ts | 12 +
packages/dashboard/app/components/PlanningModeModal.tsx | 25 ++-
packages/dashboard/app/components/__tests__/PlanningModeModal.planning-flow.test.tsx | 193 +++++++++++++++-
packages/dashboard/src/__tests__/planning-interview-formatters.test.ts | 79 ++++++-
packages/dashboard/src/__tests__/routes-planning.test.ts | 207 ++++++++++++++++-
packages/dashboard/src/__tests__/session-persistence-roundtrip.test.ts | 74 +++++-
packages/dashboard/src/ai-session-store.ts | 2 +
packages/dashboard/src/planning.ts | 249 ++++++++++++++++++---
packages/dashboard/src/test/mockCoreEngine.ts | 2 +
12 files changed, 815 insertions(+), 41 deletions(-)
Fusion-Task-Id: FN-7444
Fusion-Task-Lineage: 43ee1853-558b-4168-b52c-ebcc4ece4521
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:38:02 -07:00
gsxdsm
25fecd7843
FN-7442: return GitHub issue actions to list
...
Return successful GitHub issue import and close flows to the issue list.
- Clear the selected GitHub issue and switch mobile preview back to the list after successful import or close actions.
- Preserve the selected preview on failures so users can retry with the existing error affordance.
- Add regression coverage for desktop and mobile import/close success and failure navigation states.
- Document the post-import list reset behavior and add a patch changeset.
Files changed:
.changeset/fn-7442-github-import-return-list.md | 7 +
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/GitHubImportModal.tsx | 20 +-
.../__tests__/GitHubImportModal.test.tsx | 210 +++++++++++++++++++--
4 files changed, 218 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-7442
Fusion-Task-Lineage: e334a7c1-68de-48f7-be31-b036ba741685
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:30:08 -07:00
gsxdsm
72adb5231a
FN-7441: add sidebar rename controls for chat conversations
...
Add an explicit sidebar rename affordance for direct Chat conversations while preserving existing rename paths.
- Add edit buttons beside delete controls on direct chat session rows and wire them to the existing rename dialog.
- Keep sidebar action spacing and accessibility labels stable across desktop and mobile layouts.
- Cover sidebar, context-menu, and mobile switcher rename behavior with ChatView tests.
- Document the sidebar rename entry point and add the published package changeset.
Files changed:
.changeset/fn-7441-chat-conversation-rename.md | 7 ++
docs/dashboard-guide.md | 2 +-
packages/dashboard/app/components/ChatView.css | 51 ++++-----
packages/dashboard/app/components/ChatView.tsx | 54 ++++++---
.../__tests__/ChatView.core-interactions.test.tsx | 122 +++++++++++++++++++++
.../components/__tests__/ChatView.mobile.test.tsx | 72 ++++++++++++
6 files changed, 264 insertions(+), 44 deletions(-)
Fusion-Task-Id: FN-7441
Fusion-Task-Lineage: 39a2c393-dd85-4362-9472-58bb137b906c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:23:13 -07:00
gsxdsm
aa8f1f32ee
FN-7438: recover stale branch-group references
...
Recover branch-group detail views after restarts and let operators clear stale per-task group context safely.
- Add Task Detail stale branch-group recovery UI that clears only the current task via the assign API.
- Verify durable branch groups and members survive TaskStore/API restarts, while stale references can be reset without losing unrelated metadata.
- Improve integration-branch fallback diagnostics for repositories that use non-origin remotes.
- Document the recovery path, durable branch-group storage expectations, and release the fix as a patch.
Files changed:
.../fn-7438-branch-group-restart-recovery.md | 7 ++
docs/dashboard-guide.md | 5 +-
docs/settings-reference.md | 2 +-
docs/storage.md | 2 +-
.../core/src/__tests__/branch-group-store.test.ts | 43 +++++++++++-
.../dashboard/app/components/BranchGroupCard.css | 9 +++
.../dashboard/app/components/BranchGroupCard.tsx | 49 +++++++++++++-
.../dashboard/app/components/TaskDetailModal.tsx | 14 +++-
.../components/__tests__/BranchGroupCard.test.tsx | 40 +++++++++++
.../components/__tests__/TaskDetailModal.test.tsx | 11 ++-
.../src/__tests__/routes-branch-groups.test.ts | 79 +++++++++++++++++++++-
.../src/__tests__/integration-branch.test.ts | 41 +++++++++++
packages/engine/src/integration-branch.ts | 54 ++++++++++++++-
13 files changed, 343 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-7438
Fusion-Task-Lineage: 09ef3dc3-8319-49a7-9f4d-c95a3e069d39
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 13:07:16 -07:00
gsxdsm
e5be9242d7
FN-7435: suppress misleading Anthropic re-login banner
...
Suppress the global Anthropic Subscription re-login warning when another Anthropic auth path can run agents.
- Hide expired Anthropic Subscription OAuth from the urgent dashboard banner when Anthropic API Key or Claude CLI auth is active.
- Preserve unrelated expired OAuth provider warnings and keep Settings documentation clear that Subscription remains expired until re-login.
- Add regression coverage for CLI, API-key, fallback-missing, and unrelated-provider banner visibility cases.
- Add a patch changeset for the user-facing banner fix.
Files changed:
.changeset/fn-7435-anthropic-subscription-banner.md | 7 +++
docs/dashboard-guide.md | 2 +-
docs/settings-reference.md | 4 +-
packages/dashboard/app/components/OAuthReloginBanner.tsx | 31 ++++++++++--
packages/dashboard/app/components/__tests__/OAuthReloginBanner.test.tsx | 59 ++++++++++++++++++++--
5 files changed, 91 insertions(+), 12 deletions(-)
Fusion-Task-Id: FN-7435
Fusion-Task-Lineage: 04462f77-a1e4-402d-97b2-dd47778398df
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 12:10:13 -07:00
gsxdsm
b493a1e9e5
FN-7434: show task status badges in document groups
...
Show task completion metadata directly in Documents task group headers.
- Render task status badges for task document groups when column metadata is available.
- Preserve non-interactive status metadata in collapsed and mobile task group headers.
- Cover done, non-done, archived, custom, and legacy task document status cases.
- Document the Documents view status badge behavior and add a patch changeset.
Files changed:
.changeset/fn-7434-document-task-status.md | 7 +
docs/dashboard-guide.md | 2 +-
.../dashboard/app/components/DocumentsView.css | 16 ++-
.../dashboard/app/components/DocumentsView.tsx | 31 ++++-
.../components/__tests__/DocumentsView.test.tsx | 148 +++++++++++++++++++++
5 files changed, 199 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-7434
Fusion-Task-Lineage: b04161b3-c052-4eee-b9ed-5760eb9b7a4e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 12:00:58 -07:00
gsxdsm
1f6befcfa7
FN-7427: add GitLab signal connector
...
Add GitLab webhook ingestion to Command Center Signals.
- Register GitLab as a supported signal provider with shared-token verification.\n- Normalize GitLab issue and merge request webhooks into capped Command Center signals.\n- Update tests, UI labels, docs, and changeset coverage for the new connector.\n\nFiles changed:\n .changeset/fn-7427-gitlab-signals.md | 7 +\n docs/dashboard-guide.md | 2 +-\n docs/settings-reference.md | 1 +\n docs/signals-connectors.md | 52 ++++-\n .../core/src/__tests__/signals-analytics.test.ts | 28 ++-\n .../__tests__/CommandCenter.mobile-scroll.test.tsx | 5 +-\n .../__tests__/CommandCenter.tablet-layout.test.tsx | 5 +-\n .../command-center/areas/SignalsArea.tsx | 5 +-\n .../areas/__tests__/areas.github-signals.test.tsx | 12 +-\n .../register-command-center-routes.test.ts | 7 +-\n .../src/__tests__/register-signal-routes.test.ts | 227 ++++++++++++++++++++-\n .../dashboard/src/routes/register-signal-routes.ts | 8 +-\n packages/dashboard/src/signal-source.ts | 23 ++-\n packages/dashboard/src/signal-sources/gitlab.ts | 219 ++++++++++++++++++++\n 14 files changed, 574 insertions(+), 27 deletions(-)
Fusion-Task-Id: FN-7427
Fusion-Task-Lineage: cfe94cb7-e9d5-4bec-9fc5-4a7e45b8c95d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:35 -07:00
gsxdsm
34be333a2a
FN-7426: add GitLab lifecycle automation
...
Add GitLab lifecycle automation for comments and source item state changes.
- Add GitLab REST helpers for posting notes and closing or reopening issues and merge requests.
- Register GitLab source-comment, tracking-comment, tracking-state, and source-close services with multi-project lifecycle wiring.
- Add project settings, documentation, tests, and a changeset for GitLab completion comments and auto-close behavior.
Files changed:
.changeset/fn-7426-gitlab-lifecycle.md | 7 ++
docs/cli-reference.md | 2 +-
docs/dashboard-guide.md | 3 +-
docs/settings-reference.md | 5 +-
packages/core/src/settings-schema.ts | 3 +
packages/core/src/types.ts | 10 +++
.../src/__tests__/gitlab-issue-comment.test.ts | 37 +++++++++
.../__tests__/gitlab-source-issue-close.test.ts | 29 +++++++
.../src/__tests__/gitlab-tracking-comments.test.ts | 31 +++++++
.../src/__tests__/gitlab-tracking-state.test.ts | 42 ++++++++++
packages/dashboard/src/__tests__/gitlab.test.ts | 18 ++++
.../register-git-github.gitlab-lifecycle.test.ts | 54 ++++++++++++
packages/dashboard/src/gitlab-issue-comment.ts | 62 ++++++++++++++
packages/dashboard/src/gitlab-lifecycle.ts | 58 +++++++++++++
.../dashboard/src/gitlab-source-issue-close.ts | 45 ++++++++++
packages/dashboard/src/gitlab-tracking-comments.ts | 77 +++++++++++++++++
packages/dashboard/src/gitlab-tracking-state.ts | 97 ++++++++++++++++++++++
packages/dashboard/src/gitlab.ts | 30 +++++++
.../dashboard/src/routes/register-git-github.ts | 23 +++++
19 files changed, 630 insertions(+), 3 deletions(-)
Fusion-Task-Id: FN-7426
Fusion-Task-Lineage: a46bd11f-96ef-4291-ab41-829007fa057a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
91737b1831
FN-7433: add explicit onboarding git setup modes
...
Expose explicit git setup choices in first-run onboarding and project registration.
- Add setup wizard modes for existing repositories, new git initialization, and remote cloning with mode-specific hints and validation.
- Extend project registration to accept gitSetupMode while preserving legacy cloneUrl-only behavior.
- Cover init and clone validation paths with dashboard tests, localized copy, docs, and a published package changeset.
Files changed:
.changeset/fn-7433-onboarding-git-setup.md | 7 +
docs/dashboard-guide.md | 10 ++
docs/getting-started.md | 10 +-
packages/dashboard/app/api/legacy.ts | 1 +
.../dashboard/app/components/SetupWizardModal.css | 77 +++++++++-
.../dashboard/app/components/SetupWizardModal.tsx | 159 ++++++++++++++-------
.../components/__tests__/SetupWizardModal.test.tsx | 107 +++++++++++++-
.../dashboard/src/__tests__/project-routes.test.ts | 98 +++++++++++++
.../src/routes/register-project-routes.ts | 25 +++-
packages/i18n/locales/en/app.json | 23 ++-
packages/i18n/locales/es/app.json | 25 +++-
packages/i18n/locales/fr/app.json | 25 +++-
packages/i18n/locales/ko/app.json | 25 +++-
packages/i18n/locales/zh-CN/app.json | 25 +++-
packages/i18n/locales/zh-TW/app.json | 25 +++-
15 files changed, 538 insertions(+), 104 deletions(-)
Fusion-Task-Id: FN-7433
Fusion-Task-Lineage: 022c25c2-3c2d-4e47-aa8c-02525caad672
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
b8e126eeaf
FN-7425: add GitLab tracking metadata to tasks
...
Persist GitLab tracking metadata and surface it across task APIs and dashboard views.
- add task-store schema, migration, and update helpers for linked GitLab items and stale state
- expose validated GitLab tracking updates through task workflow routes and legacy task payloads
- render GitLab badges, detail-panel metadata, open/unlink actions, styling, i18n strings, and docs
- cover persistence, route validation, task card badges, and task detail interactions with tests
- add a patch changeset for the published Fusion package
Files changed:
.changeset/fn-7425-gitlab-tracking.md | 7 ++
docs/cli-reference.md | 2 +-
docs/dashboard-guide.md | 3 +
packages/core/src/__tests__/db-migrate.test.ts | 29 +++++
.../src/__tests__/store-gitlab-tracking.test.ts | 138 +++++++++++++++++++++
packages/core/src/db.ts | 10 +-
packages/core/src/gitlab-tracking.ts | 10 ++
packages/core/src/index.ts | 3 +-
packages/core/src/store.ts | 135 +++++++++++++++++++-
packages/core/src/types.ts | 49 ++++++++
packages/dashboard/app/api/legacy.ts | 3 +
packages/dashboard/app/components/GitLabBadge.tsx | 33 +++++
packages/dashboard/app/components/TaskCard.tsx | 7 +-
.../dashboard/app/components/TaskCardBadge.tsx | 15 ++-
.../dashboard/app/components/TaskDetailModal.css | 47 +++++--
.../dashboard/app/components/TaskDetailModal.tsx | 134 +++++++++++++++++++-
.../app/components/__tests__/TaskCard.test.tsx | 49 ++++++++
.../TaskDetailModal.gitlab-tracking.test.tsx | 121 ++++++++++++++++++
.../__tests__/TaskDetailModal.test-helpers.ts | 1 +
packages/dashboard/app/styles.css | 9 ++
.../src/__tests__/routes-tasks-ops.test.ts | 136 ++++++++++++++++++++
packages/dashboard/src/gitlab.ts | 24 +++-
packages/dashboard/src/routes/register-gitlab.ts | 1 +
.../src/routes/register-task-workflow-routes.ts | 106 +++++++++++++++-
packages/i18n/locales/en/app.json | 31 +++++
packages/i18n/src/resources.d.ts | 31 +++++
26 files changed, 1106 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-7425
Fusion-Task-Lineage: 9b5e6005-7284-402e-995c-553be2275eff
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:34 -07:00
gsxdsm
306e516e3b
FN-7417: prevent Windows Terminal startup popups
...
Prevent embedded terminal startup from surfacing recurring native Windows Terminal popups.
- Keep Windows embedded terminal detection on supported shell processes instead of Windows Terminal hosts.
- Convert Windows PTY spawn failures into actionable inline guidance with explicit Retry behavior.
- Cover desktop/mobile terminal guidance, bootstrap retry loops, API error payloads, and Windows shell selection with regression tests.
- Document Windows embedded terminal behavior and add a patch changeset.
Files changed:
.changeset/FN-7417-windows-terminal-popup.md | 7 ++
docs/dashboard-guide.md | 2 +
.../components/__tests__/TerminalModal.test.tsx | 31 ++++++++
.../hooks/__tests__/useTerminalSessions.test.ts | 26 ++++++-
.../dashboard/app/hooks/useTerminalSessions.ts | 18 ++++-
.../src/__tests__/routes-automation.test.ts | 31 +++++++-
.../src/__tests__/terminal-service.test.ts | 86 ++++++++++++++++++++++
packages/dashboard/src/terminal-service.ts | 32 ++++++--
8 files changed, 222 insertions(+), 11 deletions(-)
Fusion-Task-Id: FN-7417
Fusion-Task-Lineage: edeb7743-c106-47e8-9506-6edaad821cfb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-02 11:38:31 -07:00