Commit Graph

3945 Commits

Author SHA1 Message Date
gsxdsm
d92494d4da Merge pull request #37 from timothyjlaurent/fix/issue-36-mission-interview-stale-cant-type
fix: Plan Mission With AI modal stale data and unable to type
2026-05-04 22:14:22 -07:00
Timothy Laurent
ac22146c99 fix(FN-001): remove eslint-disable for non-existent react-hooks/exhaustive-deps rule
Co-authored-by: Orca <help@stably.ai>
2026-05-04 21:46:06 -07:00
Timothy Laurent
657419e958 fix: remove eslint-disable-line for unregistered react-hooks/exhaustive-deps rule
The project's ESLint flat config does not include the react-hooks plugin,
so referencing its rules in eslint-disable comments causes a "rule not found"
error. Replace with a plain comment preserving the intent.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 21:38:27 -07:00
Timothy Laurent
b061e2bfe6 fix(FN-001): fix stale goal and unable to type in Plan Mission With AI modal (#36)
Split the combined useEffect that handled both auto-start and
persisted-goal restoration into two separate effects:

- Goal restoration: depends only on [isOpen], runs once on modal open
- Auto-start: keeps handleStartInterview dep for initialGoalProp flow

Previously the single effect depended on handleStartInterview, which
recreates on every missionGoal change. Every keystroke re-triggered
the effect, which read the stale persisted value from localStorage
and overwrote user input — making the textarea uneditable and showing
stale data from the last planned mission.

Co-authored-by: AI <ai@runfusion.ai>

Co-authored-by: Orca <help@stably.ai>
2026-05-04 21:32:41 -07:00
Fusion
499dede1e3 feat(FN-3384): simplify org chart node metadata in AgentsView
- Remove org chart node subtitle metadata rendering from AgentsView
- Update AgentsView tests to assert the simplified node content and behavior
- Document the org chart skill simplification in docs/agents.md

Fusion-Task-Id: FN-3384
2026-05-04 21:21:22 -07:00
Fusion
bc6e1276e3 feat(FN-3414): enable heartbeat tool mode and compact mobile header styling
This merge delivers three distinct features: a compact mobile header row for the dashboard with corresponding regression tests, a plugin slot registry with Docker node provisioning for the mesh network, and heartbeat agent sessions now support tool mode for expanded capability access.

Fusion-Task-Id: FN-3414
2026-05-04 21:21:22 -07:00
Fusion
d3137ba594 feat(FN-3115): add plugin slot registry, docker node provisioning, and hear
This merge introduces a plugin slot registry system for extensible dashboard panels, adds docker node provisioning routes with planning modals, enables tool mode for heartbeat agent sessions, and enhances the agent detail view with skill badges. It also includes research settings documentation, sett

Fusion-Task-Id: FN-3115
2026-05-04 21:21:22 -07:00
Fusion
a0c1e5b982 feat(FN-3459): enable tool mode for heartbeat agent sessions
This merge enables heartbeat agents to use coding sessions with tool access (FN-3459). It adds heartbeat session prompt tests, updates the heartbeat executor to support tool mode, modifies dashboard node components and hooks, and includes a fix for a typecheck regression. A changeset is included for

Fusion-Task-Id: FN-3459
2026-05-04 21:21:22 -07:00
Fusion
783d834b91 feat(FN-3381): add skill detail panel with readable badges to agent detail
Adds readable skill badges to the agent detail view with an interactive detail panel, along with corresponding tests and utility functions. A typecheck fix for the dashboard docker config is included.

Fusion-Task-Id: FN-3381
2026-05-04 21:21:22 -07:00
Fusion
d790854e24 feat(FN-3313): add plugin slot registry, planning mode rewind, and docker n
This merge lands five features spanning the Fusion stack: research settings key renaming (FN-3313, Steps 2–7) across types, defaults, CLI, and engine packages; static plugin slot-host rendering contract documentation (FN-3260); Docker node provisioning routes with a planning modal (FN-3116); plannin

Fusion-Task-Id: FN-3313
2026-05-04 21:21:22 -07:00
Fusion
fccec582f4 feat(FN-3260): document static slot-host rendering contract
Documents the static slot-host rendering contract in `docs/PLUGIN_AUTHORING.md`, clarifying how plugins should interact with the rendering system.

Fusion-Task-Id: FN-3260
2026-05-04 21:21:22 -07:00
Fusion
e0e871555d feat(FN-3116): add docker node provisioning routes with planning modal and
This merge adds Docker node provisioning infrastructure with API routes for provisioning lifecycle, Docker node management, and failure-state handling, along with corresponding test coverage for onboarding, lifecycle, and error flows. It also introduces planning session rewind capability with a moda

Fusion-Task-Id: FN-3116
2026-05-04 21:21:22 -07:00
Fusion
7b45ae15ee feat(FN-3447): add planning session rewind capability with modal back actio
This merge delivers four major features: a planning session rewind system (FN-3447, steps 1–4) with a new backend route for rolling back sessions, modal back-action wiring, and updated typing; workspace verification gates (FN-3385) for agent prompt editing; an agents view org chart spacing rework (F

Fusion-Task-Id: FN-3447
2026-05-04 21:21:22 -07:00
gsxdsm
f909688dd9 Merge pull request #30 from timothyjlaurent/fix/sqlite-corruption-wal-pragmas
fix: prevent SQLite B-tree corruption with WAL tuning and batched agent logs
2026-05-04 21:20:32 -07:00
Timothy Laurent
9cb37aacd6 fix: resolve Greptile P1 close() timer leak, engine git init, dashboard test
- store.ts close(): clear retry timer and buffer before nulling _db to
  prevent re-opening a new connection after close (Greptile P1)
- merger-staging-allowlist.test.ts: use `git init -b main` so the
  default branch is always named 'main' regardless of git config
- SettingsModal.test.tsx: fix expected text for compact DroidCli card
  — shows "✓ Active" badge, not "✓ Connected — 1.2.3"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 21:12:42 -07:00
Fusion
c14ab3fd84 fix(FN-3385): restore workspace verification gates
- Reintroduce local task-priority sorting helpers in Board to avoid cross-package runtime dependency coupling
- Keep board ordering deterministic by sorting by priority, creation time, then numeric task ID
- Document rich prompt editing affordances for Soul, Agent Memory, and Inline Instructions in agent creation flow

Fusion-Task-Id: FN-3385
2026-05-04 19:46:15 -07:00
Fusion
d216c6fe74 feat(FN-3375): rework agents view org chart spacing
Rebuilt the agents/org chart layout with improved spacing, adding corresponding tests for the updated card styling and mobile responsiveness.

Fusion-Task-Id: FN-3375
2026-05-04 19:39:26 -07:00
Fusion
196adbd04e feat(FN-3372): add safety net for mobile viewport reset in ChatView test
Merged commit adds a safety net test for mobile viewport reset in ChatView.

Fusion-Task-Id: FN-3372
2026-05-04 19:28:31 -07:00
Fusion
e3011e9aca feat(FN-3362): add node detail modal with docker config routes
This merge delivers three focused changes: fixes the Git Manager modal mobile overflow (FN-3367) with new CSS, stabilizes the Docker config modal recreate indicator tests (FN-3114) with comprehensive new test coverage, and adds hook baseline cleanup tests (FN-3362). The changes span the core databas

Fusion-Task-Id: FN-3362
2026-05-04 19:17:16 -07:00
Fusion
8f0f9257ed feat(FN-3114): stabilize docker config modal recreate indicator test
The merge stabilizes a test case in the NodeDetailModal test file related to the docker config modal's recreate indicator, correcting an assertion that was causing intermittent failures.

Fusion-Task-Id: FN-3114
2026-05-04 19:05:48 -07:00
Fusion
5fb7c77095 feat(FN-3367): fix Git Manager mobile changes overflow
- Add mobile-only Git Manager layout rules so changes lists and sections can shrink without horizontal page scrolling
- Wrap section header actions and file rows at narrow widths while preserving readable file names and controls
- Extend GitManagerModal CSS regression coverage for mobile wrapping selectors
- Add core mobile modal test assertions for wrapped actions/rows and bounded section width
- Add a patch changeset for @runfusion/fusion documenting the mobile overflow fix

Fusion-Task-Id: FN-3367
2026-05-04 18:43:53 -07:00
Fusion
a494a44f74 feat(FN-3361): stabilize mobile keyboard test isolation
Fix FN-3361 stabilizes mobile keyboard test isolation in ChatView by adding a missing test assertion.

Fusion-Task-Id: FN-3361
2026-05-04 18:39:38 -07:00
Fusion
1fed8ff7bc feat(FN-3357): stabilize mobile keyboard tests in ChatView
Stabilizes mobile keyboard tests in ChatView by refining timing assertions and test setup, addressing FN-3357 regressions in the third and final step of the fix.

Fusion-Task-Id: FN-3357
2026-05-04 18:35:02 -07:00
Fusion
9deb19484f feat(FN-3445): align bulk edit list styles with design tokens
Refactored ListView component CSS to use design token variables instead of hardcoded values, ensuring consistent styling with the dashboard's design system across all themes.

Fusion-Task-Id: FN-3445
2026-05-04 18:29:49 -07:00
gsxdsm
fdc37a3cf8 chore(changeset): add changeset for dashboard-tui auto mouse toggle
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 18:22:18 -07:00
gsxdsm
cbe272b93b feat(dashboard-tui): auto-toggle mouse mode based on focused panel
Default mouse reporting OFF so click-drag selection works by default —
useful for copying the auth token directly off the System panel without
needing the [c] keyboard shortcut. Auto-enable when the user focuses a
panel that consumes wheel events:

  - Status mode → on while Logs is focused, off elsewhere
  - Interactive → on for Files / Git / Board (which uses wheel in the
    task-detail screen), off for Agents / Settings

Implemented as a useEffect in DashboardApp that maps state.activeSection
+ state.mode + state.interactiveView → controller.setMouseEnabled. [M]
remains a manual override; the next focus change reapplies the auto
policy. Controller's start() now honors initial mouseEnabled rather than
unconditionally writing the SGR enable sequence.

Updated System-panel hint to advertise click-drag selection, simplified
the help-overlay [M] entry, and flipped the createInitialState test
expectation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 18:21:57 -07:00
Fusion
739e10bf3c feat(FN-3356): ship llama.cpp provider integration, mobile org chart contro
This merge delivers v0.19.0 with several major features and reliability improvements: a new llama.cpp provider integration for the pi extension and mobile dashboards, an extensive refactor of the agent heartbeat system with per-agent configuration and test coverage, a large PlanningModeModal test su

Fusion-Task-Id: FN-3356
2026-05-04 18:19:38 -07:00
Fusion
cced0cec9a feat(FN-3352): improve in-process runtime cleanup reliability
Adds comprehensive tests for cleanup reliability in the in-process runtime (131-line test suite) plus related coverage in the executor tests, with a small fix to the runtime implementation itself to address the reliability issue.

Fusion-Task-Id: FN-3352
2026-05-04 18:08:31 -07:00
Fusion
69c75feaea feat(FN-3330): add wait_for_completion polling for research runs in extensi
Adds `wait_for_completion` polling support for research runs in the CLI extension, along with tests covering the research status schema and wait behavior, and ships a patch changeset for `@runfusion/fusion`.

Fusion-Task-Id: FN-3330
2026-05-04 17:57:17 -07:00
Fusion
e71e848059 feat(FN-3419): remove inline lock indicator from PlanningModeModal
Removed the inline lock indicator from PlanningModeModal and added a new test file covering the planning flow behavior.

Fusion-Task-Id: FN-3419
2026-05-04 17:55:34 -07:00
gsxdsm
2b809fc99e fix(engine/merger): autostash unrelated rootDir changes around aiMergeTask
The merger issues several `git reset --hard` / `git reset --merge` and
forced-checkout calls against `rootDir` during merge attempts. When
`rootDir` is the developer's primary checkout (common for solo / single-host
setups), those resets silently discard any unrelated unstaged or untracked
changes — we burned dev work this way during FN-3329 (dashboard-tui edits
wiped mid-flight by an unrelated merge run).

Snapshot dirty paths at entry to `aiMergeTask`, stash them under a
recognizable label including the taskId (`-u` to capture untracked), and
pop them in a finally block on every exit path. On pop conflict we leave
the stash intact and log a recovery hint rather than dropping it. Best-
effort: a stash failure logs and proceeds with the old behavior so the
merge itself is never blocked.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 17:22:21 -07:00
Fusion
1187ea45d0 feat(FN-3329): refine dashboard TUI system panel and setup wizard UX
- Expand dashboard TUI state/controller wiring for system panel interactions and mouse toggle behavior
- Update dashboard TUI app rendering and tests to cover the new panel controls
- Improve SetupWizardModal layout and interaction behavior with matching CSS and test updates
- Restore docs/research.md wording and add a changeset for the published CLI package

Fusion-Task-Id: FN-3329
2026-05-04 17:22:21 -07:00
Fusion
1634dc786c feat(FN-3328): refactor droid-cli into compatibility shim backed by fusion-
Merged FN-3328: Refactored the droid integration by converting `droid-cli` into a lightweight compatibility shim that delegates to `fusion-plugin-droid-runtime`, reducing droid-cli by ~5,400 lines of code while moving the actual runtime logic into the plugin scaffold. Updated the plugin loader to al

Fusion-Task-Id: FN-3328
2026-05-04 17:22:21 -07:00
Fusion
b1b9e86c84 feat(FN-3325): remove monolithic PlanningModeModal test file
Removed the monolithic PlanningModeModal test file (3,476 lines), completing the refactor of the test suite for this component.

Fusion-Task-Id: FN-3325
2026-05-04 17:22:21 -07:00
Fusion
a9a1f4c209 feat(FN-3323): recover orphaned agents and add reports health section to he
The merge lands FN-3323's self-healing system: a new "reports health" prompt section and `agent-heartbeat.ts` module that detect orphaned agents and recover their state (clearing stale error states and re-enabling heartbeat execution). The engine's `self-healing.ts` was expanded with wired recovery

Fusion-Task-Id: FN-3323
2026-05-04 17:22:21 -07:00
Fusion
d5e8318748 feat(FN-3227): add startup model sync for opencode-go commands
- Add shared startup model sync helper and integrate it into dashboard, serve, and daemon command startup flows
- Introduce opencode-go model sync setting in core schema/types and expose it in dashboard settings UI
- Add CLI regression tests covering startup model sync behavior and command wiring
- Document the new startup model sync setting and related CLI behavior updates

Fusion-Task-Id: FN-3227
2026-05-04 17:22:21 -07:00
gsxdsm
ef4f3ba3be chore(release): v0.19.0
Version bump via changesets.
2026-05-04 15:54:42 -07:00
gsxdsm
893afc7b4b fn-docs: (docs) Beads/Dolt evaluation doc 2026-05-04 15:53:39 -07:00
gsxdsm
082c62a6e2 fix(dashboard): prevent cross-agent overwrite from stale Config tab autosave
Switching agents in the AgentsView split layout while on the Config tab
caused the autosave to write the previously-viewed agent's surface fields
(name, role, title, icon, model, skills) onto the newly-selected agent.
The Config tab's form state was initialized once at mount and never
resynced, while the master-detail layout reused the same component
instance across selections. Add key={selectedAgentId} on AgentDetailView
and key={agent.id} on ConfigTab so both remount with fresh state on every
agent transition.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 15:53:00 -07:00
Fusion
6be45ad78b fix(FN-3386): restore workspace verification gates and docs
- Resolve the cli-alias merge conflict by keeping mainline-deletion semantics under smart-prefer-main
- Add TaskCard workspace verification UI behavior and regression coverage
- Update plugin-sdk exports and related task/dashboard documentation for verification workflow

Fusion-Task-Id: FN-3386
2026-05-04 15:44:18 -07:00
Fusion
53ae8c5465 feat(FN-3324): add runtime guard regression sentinel
Adds a regression test sentinel in the engine's in-process runtime test suite to guard against runtime guard behavior regressions (FN-3324).

Fusion-Task-Id: FN-3324
2026-05-04 15:33:39 -07:00
Fusion
02541b094c feat(FN-3320): add agent configuration tools for settings management
The merge completes FN-3320 by implementing configuration tools for the agent system (`agent-tools.ts`), wiring them through the executor, and adding test coverage (`agent-tools-config.test.ts`). Documentation was updated in `AGENTS.md` and the engine tools reference, with minor updates to the agent

Fusion-Task-Id: FN-3320
2026-05-04 15:21:40 -07:00
Fusion
95d368e7d7 feat(FN-3211): document app CPU metric in system stats
Updated the architecture documentation to document the app CPU metric in the system stats section.

Fusion-Task-Id: FN-3211
2026-05-04 15:16:53 -07:00
Fusion
a66ddf2e7f feat(FN-3314): align auth route assertion in agents routes test
Test FN-3314 completes its final step by refining an auth route assertion in the agents routes test, ensuring the test accurately validates the expected behavior.

Fusion-Task-Id: FN-3314
2026-05-04 15:04:36 -07:00
Timothy Laurent
cd09f12c77 merge main: resolve db.test.ts import conflict
Combined both branches: TaskStore import from main + rmSync import
from our branch (needed for fresh DB test cleanup).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 14:58:47 -07:00
Timothy Laurent
8e7b8e139f fix(tests): resolve 4 failing tests across cli and dashboard packages
- task.test.ts: save/delete GITHUB_REPOSITORY env before
  runTaskPrCreate fallback test so CI env doesn't bypass the
  getCurrentRepo code path
- app.test.tsx: increase waitForFrameContains timeout for ASCII QR
  render from 3s to 6s to accommodate slower CI environments
- remote-auth.test.ts: switch createRemoteSettings default from
  tailscale to cloudflare with a static ingressUrl so
  resolveRemoteBaseUrl doesn't 409 when no tunnel is running

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-04 14:54:55 -07:00
Fusion
3b4bb2d134 test(FN-3314): align persistent auth route assertion
- Update the remote access auth login-url test to assert global settings persistence
- Replace the outdated store.updateSettings expectation with store.updateGlobalSettings
- Keep persistent token strategy verification coverage intact
2026-05-04 14:53:08 -07:00
Fusion
0d19a7b7d8 feat(FN-3317): add merge scheduler recovery test coverage
Added 95 lines of test coverage for merge scheduler recovery paths in the merge error recovery test suite, completing Step 4 of FN-3317.

Fusion-Task-Id: FN-3317
2026-05-04 14:47:12 -07:00
Fusion
a56f22026e feat(FN-3311): add version notes extractor for GitHub releases
Merges FN-3311 work into the release pipeline: adds a version notes extractor with tests and integrates GitHub release creation into the release script, plus a minor CSS design token consistency fix in the dashboard.

Fusion-Task-Id: FN-3311
2026-05-04 14:35:23 -07:00
Fusion
496c000e99 feat(FN-3310): add fn update command to CLI reference
Adds a changeset for a new `fn` command and updates the CLI reference documentation with the command details.

Fusion-Task-Id: FN-3310
2026-05-04 14:18:25 -07:00