fb0863f660c19cbbe8796b0b53a69072d424a85b
13135 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
fb0863f660 |
FN-8753: enable installed voice input in project settings
Make Voice Input available only after its local model and runtime are ready. - Bundle the optional sherpa runtime with the published CLI. - Gate the project setting on model installation and stable runtime status codes. - Add localized recovery guidance, documentation, and coverage. Files changed: .changeset/fn-8753-voice-input-enable.md | 7 ++++ docs/dashboard-guide.md | 2 +- docs/settings-reference.md | 8 +++-- packages/cli/package.json | 3 ++ packages/cli/src/__tests__/package-config.test.ts | 16 +++++++++ .../settings/__tests__/VoiceInputSection.test.tsx | 36 ++++++++++++++++---- .../settings/sections/VoiceInputSection.tsx | 30 ++++++++++++----- packages/dashboard/package.json | 2 +- .../routes/__tests__/register-voice-routes.test.ts | 39 ++++++++++++++++++++++ .../dashboard/src/stt/__tests__/voice-stt.test.ts | 27 ++++++++++++--- packages/dashboard/src/stt/parakeet-service.ts | 26 ++++++++++----- packages/i18n/locales/en/app.json | 6 ++++ pnpm-lock.yaml | 6 +++- 13 files changed, 175 insertions(+), 33 deletions(-) Fusion-Task-Id: FN-8753 Fusion-Task-Lineage: db92b148-37f0-45d2-b616-ed2e3f2d54f6 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
46583a4cb6 |
chore(deps): bump @xterm/addon-search from 0.15.0 to 0.16.0 (#3308)
Bumps [@xterm/addon-search](https://github.com/xtermjs/xterm.js) from 0.15.0 to 0.16.0. <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
5301605130 |
chore(deps): bump pnpm/action-setup from 4 to 6 (#3305)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4 to 6. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pnpm/action-setup/releases">pnpm/action-setup's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <p>Added support for pnpm <a href="https://github.com/pnpm/pnpm/releases/tag/v11.0.0-rc.0">v11</a>.</p> <h2>v5.0.0</h2> <p>Updated the action to use Node.js 24.</p> <h2>v4.4.0</h2> <p>Updated the action to use Node.js 24.</p> <h2>v4.3.0</h2> <h2>What's Changed</h2> <ul> <li>docs: fix the run_install example in the Readme by <a href="https://github.com/dreyks"><code>@dreyks</code></a> in <a href="https://redirect.github.com/pnpm/action-setup/pull/175">pnpm/action-setup#175</a></li> <li>chore: remove unused <code>@types/node-fetch</code> dependency by <a href="https://github.com/silverwind"><code>@silverwind</code></a> in <a href="https://redirect.github.com/pnpm/action-setup/pull/186">pnpm/action-setup#186</a></li> <li>Clarify that package_json_file is relative to GITHUB_WORKSPACE by <a href="https://github.com/chris-martin"><code>@chris-martin</code></a> in <a href="https://redirect.github.com/pnpm/action-setup/pull/184">pnpm/action-setup#184</a></li> <li>feat: store caching by <a href="https://github.com/jrmajor"><code>@jrmajor</code></a> in <a href="https://redirect.github.com/pnpm/action-setup/pull/188">pnpm/action-setup#188</a></li> <li>refactor: remove star imports by <a href="https://github.com/KSXGitHub"><code>@KSXGitHub</code></a> in <a href="https://redirect.github.com/pnpm/action-setup/pull/196">pnpm/action-setup#196</a></li> <li>fix(ci): exclude macos by <a href="https://github.com/KSXGitHub"><code>@KSXGitHub</code></a> in <a href="https://redirect.github.com/pnpm/action-setup/pull/197">pnpm/action-setup#197</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/dreyks"><code>@dreyks</code></a> made their first contribution in <a href="https://redirect.github.com/pnpm/action-setup/pull/175">pnpm/action-setup#175</a></li> <li><a href="https://github.com/silverwind"><code>@silverwind</code></a> made their first contribution in <a href="https://redirect.github.com/pnpm/action-setup/pull/186">pnpm/action-setup#186</a></li> <li><a href="https://github.com/chris-martin"><code>@chris-martin</code></a> made their first contribution in <a href="https://redirect.github.com/pnpm/action-setup/pull/184">pnpm/action-setup#184</a></li> <li><a href="https://github.com/jrmajor"><code>@jrmajor</code></a> made their first contribution in <a href="https://redirect.github.com/pnpm/action-setup/pull/188">pnpm/action-setup#188</a></li> <li><a href="https://github.com/Boosted-Bonobo"><code>@Boosted-Bonobo</code></a> made their first contribution in <a href="https://redirect.github.com/pnpm/action-setup/pull/199">pnpm/action-setup#199</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pnpm/action-setup/compare/v4.2.0...v4.3.0">https://github.com/pnpm/action-setup/compare/v4.2.0...v4.3.0</a></p> <h2>v4.2.0</h2> <p>When there's a <code>.npmrc</code> file at the root of the repository, pnpm will be fetched from the registry that is specified in that <code>.npmrc</code> file <a href="https://redirect.github.com/pnpm/action-setup/pull/179">#179</a></p> <h2>v4.1.0</h2> <p>Add support for <code>package.yaml</code> <a href="https://redirect.github.com/pnpm/action-setup/pull/156">#156</a>.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
f4b3d9adc3 |
chore(deps): bump i18next-resources-to-backend from 1.2.1 to 1.2.2 (#3309)
Bumps [i18next-resources-to-backend](https://github.com/i18next/i18next-resources-to-backend) from 1.2.1 to 1.2.2. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/i18next/i18next-resources-to-backend/blob/main/CHANGELOG.md">i18next-resources-to-backend's changelog</a>.</em></p> <blockquote> <h3>1.2.2</h3> <ul> <li>security: validate <code>language</code> and <code>namespace</code> in <code>read()</code> before they are passed to the loader. i18next resolves any string as a language unless <code>supportedLngs</code> is set, so these values can carry whatever a language detector picked up from the querystring, path or a cookie. The documented usage pattern is <code>import(</code>./locales/${language}/${namespace}.json<code>)</code>, and while a bundler compiles that template to a fixed context map, an unbundled ESM runtime (Node SSR) resolves the specifier against the filesystem, where a crafted value escapes the locales directory. Values containing <code>..</code>, <code>\</code>, control characters, <code>__proto__</code> / <code>constructor</code> / <code>prototype</code>, or longer than 128 characters are now rejected with an error and the loader is never called; <code>/</code> is rejected for <code>language</code> but allowed for <code>namespace</code>, where nested layouts such as <code>a/b</code> are legitimate. The same check keeps the static-resources lookup off <code>Object.prototype</code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
6e416b044d |
chore(deps): bump actions/download-artifact from 4 to 8 (#3304)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 8. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's releases</a>.</em></p> <blockquote> <h2>v8.0.0</h2> <h2>v8 - What's new</h2> <blockquote> <p>[!IMPORTANT] actions/download-artifact@v8 has been migrated to an ESM module. This should be transparent to the caller but forks might need to make significant changes.</p> </blockquote> <blockquote> <p>[!IMPORTANT] Hash mismatches will now error by default. Users can override this behavior with a setting change (see below).</p> </blockquote> <h3>Direct downloads</h3> <p>To support direct uploads in <code>actions/upload-artifact</code>, the action will no longer attempt to unzip all downloaded files. Instead, the action checks the <code>Content-Type</code> header ahead of unzipping and skips non-zipped files. Callers wishing to download a zipped file as-is can also set the new <code>skip-decompress</code> parameter to <code>true</code>.</p> <h3>Enforced checks (breaking)</h3> <p>A previous release introduced digest checks on the download. If a download hash didn't match the expected hash from the server, the action would log a warning. Callers can now configure the behavior on mismatch with the <code>digest-mismatch</code> parameter. To be secure by default, we are now defaulting the behavior to <code>error</code> which will fail the workflow run.</p> <h3>ESM</h3> <p>To support new versions of the @actions/* packages, we've upgraded the package to ESM.</p> <h2>What's Changed</h2> <ul> <li>Don't attempt to un-zip non-zipped downloads by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/460">actions/download-artifact#460</a></li> <li>Add a setting to specify what to do on hash mismatch and default it to <code>error</code> by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/461">actions/download-artifact#461</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v7...v8.0.0">https://github.com/actions/download-artifact/compare/v7...v8.0.0</a></p> <h2>v7.0.0</h2> <h2>v7 - What's new</h2> <blockquote> <p>[!IMPORTANT] actions/download-artifact@v7 now runs on Node.js 24 (<code>runs.using: node24</code>) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.</p> </blockquote> <h3>Node.js 24</h3> <p>This release updates the runtime to Node.js 24. v6 had preliminary support for Node 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.</p> <h2>What's Changed</h2> <ul> <li>Update GHES guidance to include reference to Node 20 version by <a href="https://github.com/patrikpolyak"><code>@patrikpolyak</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/440">actions/download-artifact#440</a></li> <li>Download Artifact Node24 support by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/415">actions/download-artifact#415</a></li> <li>fix: update <code>@actions/artifact</code> to fix Node.js 24 punycode deprecation by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/451">actions/download-artifact#451</a></li> <li>prepare release v7.0.0 for Node.js 24 support by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/452">actions/download-artifact#452</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/patrikpolyak"><code>@patrikpolyak</code></a> made their first contribution in <a href="https://redirect.github.com/actions/download-artifact/pull/440">actions/download-artifact#440</a></li> <li><a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> made their first contribution in <a href="https://redirect.github.com/actions/download-artifact/pull/415">actions/download-artifact#415</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0">https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0</a></p> <h2>v6.0.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
0583f1684b |
chore(deps): bump ink from 7.0.5 to 7.1.1 (#3306)
Bumps [ink](https://github.com/vadimdemedes/ink) from 7.0.5 to 7.1.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vadimdemedes/ink/releases">ink's releases</a>.</em></p> <blockquote> <h2>v7.1.1</h2> <ul> <li>Fix: Preserve last <code><Static></code> line erased after a full-clear frame (<a href="https://redirect.github.com/vadimdemedes/ink/issues/974">#974</a>) e51dfdd</li> <li>Make <code>measureElement()</code> also return position coordinates (<a href="https://redirect.github.com/vadimdemedes/ink/issues/968">#968</a>) c073b27</li> </ul> <hr /> <p><a href="https://github.com/vadimdemedes/ink/compare/v7.1.0...v7.1.1">https://github.com/vadimdemedes/ink/compare/v7.1.0...v7.1.1</a></p> <h2>v7.1.0</h2> <ul> <li>Add <a href="https://github.com/vadimdemedes/ink#suspendterminalcallback"><code>suspendTerminal()</code></a> to hand the terminal to a child process (<a href="https://redirect.github.com/vadimdemedes/ink/issues/972">#972</a>) 9e8ed1f</li> </ul> <hr /> <p><a href="https://github.com/vadimdemedes/ink/compare/v7.0.6...v7.1.0">https://github.com/vadimdemedes/ink/compare/v7.0.6...v7.1.0</a></p> <h2>v7.0.6</h2> <ul> <li>Fix stale frames on Windows when output exactly fills the terminal (<a href="https://redirect.github.com/vadimdemedes/ink/issues/971">#971</a>) 2c08d55</li> </ul> <hr /> <p><a href="https://github.com/vadimdemedes/ink/compare/v7.0.5...v7.0.6">https://github.com/vadimdemedes/ink/compare/v7.0.5...v7.0.6</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
68dd03256c |
chore(deps-dev): bump tinyrainbow from 2.0.0 to 3.1.1 (#3310)
Bumps [tinyrainbow](https://github.com/tinylibs/tinyrainbow) from 2.0.0 to 3.1.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tinylibs/tinyrainbow/releases">tinyrainbow's releases</a>.</em></p> <blockquote> <h2>v3.1.1</h2> <h2>What's Changed</h2> <ul> <li>chore: bump devDependencies & add publish workflow by <a href="https://github.com/43081j"><code>@43081j</code></a> in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/7">tinylibs/tinyrainbow#7</a></li> <li>test: add browser tests by <a href="https://github.com/43081j"><code>@43081j</code></a> in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/9">tinylibs/tinyrainbow#9</a></li> <li>chore: only use clean-publish for cleaning by <a href="https://github.com/43081j"><code>@43081j</code></a> in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/10">tinylibs/tinyrainbow#10</a></li> <li>chore: enable <code>sideEffects: false</code> by <a href="https://github.com/43081j"><code>@43081j</code></a> in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/11">tinylibs/tinyrainbow#11</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/43081j"><code>@43081j</code></a> made their first contribution in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/7">tinylibs/tinyrainbow#7</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/tinylibs/tinyrainbow/compare/v3.1.0...v3.1.1">https://github.com/tinylibs/tinyrainbow/compare/v3.1.0...v3.1.1</a></p> <h2>v3.1.1-pre.1</h2> <h2>What's Changed</h2> <ul> <li>chore: only use clean-publish for cleaning by <a href="https://github.com/43081j"><code>@43081j</code></a> in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/10">tinylibs/tinyrainbow#10</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/tinylibs/tinyrainbow/compare/v3.1.1-pre.0...v3.1.1-pre.1">https://github.com/tinylibs/tinyrainbow/compare/v3.1.1-pre.0...v3.1.1-pre.1</a></p> <h2>v3.1.1-pre.0</h2> <h2>What's Changed</h2> <ul> <li>chore: bump devDependencies & add publish workflow by <a href="https://github.com/43081j"><code>@43081j</code></a> in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/7">tinylibs/tinyrainbow#7</a></li> <li>test: add browser tests by <a href="https://github.com/43081j"><code>@43081j</code></a> in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/9">tinylibs/tinyrainbow#9</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/43081j"><code>@43081j</code></a> made their first contribution in <a href="https://redirect.github.com/tinylibs/tinyrainbow/pull/7">tinylibs/tinyrainbow#7</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/tinylibs/tinyrainbow/compare/v3.1.0...v3.1.1-pre.0">https://github.com/tinylibs/tinyrainbow/compare/v3.1.0...v3.1.1-pre.0</a></p> <h2>v3.1.0</h2> <h3> 🚀 Features</h3> <ul> <li>Expose <code>disableDefaultColors</code> and <code>enabledDefaultColors</code> - by <a href="https://github.com/sheremet-va"><code>@sheremet-va</code></a> <a href="https://github.com/tinylibs/tinyrainbow/commit/ebdf5f7"><!-- raw HTML omitted -->(ebdf5)<!-- raw HTML omitted --></a></li> </ul> <h5> <a href="https://github.com/tinylibs/tinyrainbow/compare/v3.0.3...v3.1.0">View changes on GitHub</a></h5> <h2>v3.0.3</h2> <h3> 🐞 Bug Fixes</h3> <ul> <li>Return <code>isColorSupported</code> in <code>getDefaultColors</code> - by <a href="https://github.com/sheremet-va"><code>@sheremet-va</code></a> <a href="https://github.com/tinylibs/tinyrainbow/commit/2d14cf0"><!-- raw HTML omitted -->(2d14c)<!-- raw HTML omitted --></a></li> </ul> <h5> <a href="https://github.com/tinylibs/tinyrainbow/compare/v3.0.2...v3.0.3">View changes on GitHub</a></h5> <h2>v3.0.2</h2> <h3> 🐞 Bug Fixes</h3> <ul> <li>Assume tty by default - by <a href="https://github.com/sheremet-va"><code>@sheremet-va</code></a> <a href="https://github.com/tinylibs/tinyrainbow/commit/64261ce"><!-- raw HTML omitted -->(64261)<!-- raw HTML omitted --></a></li> </ul> <h5> <a href="https://github.com/tinylibs/tinyrainbow/compare/v3.0.1...v3.0.2">View changes on GitHub</a></h5> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
27d5bbc80e |
FN-8751: add depth to expanded sidebar
Give the expanded desktop sidebar a floating visual layer above board content. - Elevate the expanded sidebar with tokenized shadow and stacking context. - Keep collapsed and mobile navigation visually flat. - Cover the depth behavior with CSS-focused component tests. Files changed: .../dashboard/app/components/LeftSidebarNav.css | 6 +++++ .../components/__tests__/LeftSidebarNav.test.tsx | 26 +++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) Fusion-Task-Id: FN-8751 Fusion-Task-Lineage: 2c3197dc-f4f4-4d48-81bb-3fab67310e60 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
34ed2d1ffb |
FN-8750: redesign resolved GitHub issues table
Improve the resolved GitHub issues table across desktop, tablet, and mobile layouts. - Add responsive table styling with semantic links and readable metadata. - Add table hooks and regression coverage for layout and token use. - Capture desktop and mobile layout smoke screenshots. Files changed: ...mmand-center-css-token-canonicalization.test.ts | 15 ++ .../components/command-center/areas/GithubArea.tsx | 37 +++-- .../areas/__tests__/areas.github-signals.test.tsx | 27 ++-- .../app/components/command-center/areas/areas.css | 151 +++++++++++++++++++++ .../dashboard/scripts/browser-layout-smoke.mjs | 120 +++++++++++++++- screenshots/fn-8750-resolved-github-desktop.png | 3 + screenshots/fn-8750-resolved-github-mobile.png | 3 + 7 files changed, 333 insertions(+), 23 deletions(-) Fusion-Task-Id: FN-8750 Fusion-Task-Lineage: b229bad6-7d32-4a04-9681-c4184c46c015 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
a3bb584bff |
chore(release): v0.74.0
Version bump via changesets. |
||
|
|
bc34b724ac |
chore(release): v0.74.0-beta.9
Version bump via changesets. |
||
|
|
19e9f5bc88 |
chore(release): require interactive confirm; drop authorized/--yes skips
Remove the typed authorization phrase and the --yes/-y auto-confirm path so every real release must confirm y/N in an interactive terminal. Reject --yes with a clear error so old muscle memory cannot skip the proceed prompt. |
||
|
|
da17a57bde |
FN-8731: refresh task definition prompts during planning
Keep the visible task definition current while planning and Plan Review can revise it. - Refresh Definition prompts when the visible tab opens and poll during active planning lifecycles. - Preserve inline edit drafts while applying authoritative prompt updates. - Add lifecycle and hidden-host coverage, documentation, and a patch changeset. Files changed: .changeset/fn-8731-definition-prompt-refresh.md | 7 ++ docs/dashboard-guide.md | 1 + .../dashboard/app/components/TaskDetailModal.tsx | 106 ++++++++++++++++++--- .../TaskDetailModal.definition-actions.test.tsx | 91 +++++++++++++++++- .../TaskDetailModal.popup-hidden-gating.test.tsx | 25 ++++- 5 files changed, 215 insertions(+), 15 deletions(-) Fusion-Task-Id: FN-8731 Fusion-Task-Lineage: b5536ad7-cbe1-42ee-a6df-6e997eeeda05 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
4a67883bb0 |
fix: restore main full-suite after schema, hooks, and ledger drift (#3312)
## Summary Restores the non-blocking full suite on `main` after a multi-package failure cluster (latest red run: [30777132347](https://github.com/Runfusion/Fusion/actions/runs/30777132347)). ### Product fixes - **MissionManager**: move `handleDiscardInterviewSession` / `handleConfirmDelete` **above** `if (!isActive) return null` so hiding the inline Missions tab does not drop hooks (`Rendered fewer hooks than expected`). - **task-update dependency re-spec**: emit `task:moved` only when the column actually changes, with resolved endpoints (not hardcoded `todo`→`triage`); fixes `laneCache.set is not a function` harness failures and deleted-column announcements. ### Bookkeeping / suite alignment - **Schema applier tests**: baseline `0042`, project table count `104` (+4 FN-8685 consumer tables), historical `0000` fixture includes `mission_validator_runs` for 0042 upgrades, version lists include 0041/0042. - **Ledgers**: archived-gate TS inventory (lifecycle-ops), legacy collection ledger (`LEGACY_PLANNER_WAKE_COLUMNS`), worktree capacity audited bounds + two admission readers (scheduler + triage). - **Desktop**: pin `actions/setup-java@v5.6.0` after Dependabot bump. - **Dashboard tests**: FN-8701 ToolCallDetails nested `<pre>`; CreateRoomModal re-pins agent mock after empty-once. ## Test plan - [x] `@fusion/core` task-update + ledger tests - [x] `@fusion/core` schema-applier subset (table count, 0000/0001/0002/0003 upgrades, concurrent) - [x] `@fusion/dashboard` AgentLogViewer / CreateRoomModal / MissionManager overview tests - [x] `@fusion/desktop` release-workflow tests - [ ] CI full-suite green on this PR <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Bug Fixes** - Dependency re-specification now moves held tasks to the resolved workflow intake lane when available. - Task move events are emitted only when a task’s column changes. - Improved mission draft deletion handling for locked, missing, and failed operations. - Prevented mission management issues when inline Missions are shown or hidden. - Updated database migration handling for lifecycle-related tables. - **Tests** - Expanded coverage for workflow lanes, database upgrades, worktree limits, and release workflows. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
5931e10345 |
FN-8730: add Midnight dashboard theme
Add a persisted Midnight palette with consistent first-paint behavior across dashboard surfaces. - Register Midnight in shared theme metadata and web/Electron startup validators - Define light and dark Midnight tokens plus selector swatches - Cover selection and bootstrap validation, and document the new preset Files changed: .changeset/fn-8730-midnight-theme.md | 7 ++ docs/dashboard-guide.md | 5 +- docs/settings-reference.md | 2 +- packages/core/src/types/execution-and-ui.ts | 5 ++ .../dashboard/app/__tests__/midnight-theme.test.ts | 94 ++++++++++++++++++++++ .../dashboard/app/components/ThemeSelector.css | 14 ++++ .../components/__tests__/ThemeDropdown.test.tsx | 54 ++++++++++++- packages/dashboard/app/components/themeOptions.ts | 1 + packages/dashboard/app/index.html | 3 +- packages/dashboard/app/public/theme-data.css | 86 +++++++++++++++++++- packages/desktop/src/renderer/index.html | 2 + 11 files changed, 267 insertions(+), 6 deletions(-) Fusion-Task-Id: FN-8730 Fusion-Task-Lineage: 8e2d81bc-37f1-4381-8985-01e83cad06bd Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
0e69ed9a5b |
fix: stop stale-active-branch rescue spam for done squash leftovers (#3311)
## Summary - Local `fusion/*` branches for **done** tasks kept unique tip SHAs after squash/AI merge, so self-healing logged `stale-active-branch-rescue-needed` on every maintenance sweep without ever deleting them. - **Completion fan-out** now force-deletes the task branch even when unique commits remain (squash-safe). - **`reclaim-stale-active-branches`** force-deletes complete-lane leftovers (`reason=complete-column-unique-commits-force`) and no longer emits rescue-needed for those lanes; non-complete columns still warn and preserve unmerged work. Archived lanes still skip reclaim entirely. Also cleaned up 116 leftover local fusion branches on this machine (done/orphan only; 9 active kept). ## Test plan - [x] `pnpm --filter @fusion/engine exec vitest run src/__tests__/self-healing-completion-fanout.test.ts src/__tests__/self-healing.test.ts -t "SelfHealingManager reclaimStaleActiveBranches|self-healing completion fan-out|force-deletes"` - [ ] After merge/restart engine: confirm logs no longer spam rescue-needed for done tasks - [ ] Confirm active todo/in-progress fusion branches still get rescue-needed when unique and no worktree <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved cleanup of stale task branches after completion, including branches with unique commits remaining after squash or AI-assisted merges. * Completed tasks now reliably remove residual branches and worktree metadata. * Non-completed tasks continue to preserve recoverable branches and display rescue warnings. * Added clearer recovery logging and audit records for forced branch cleanup. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
0ae6c396d0 |
chore(release): v0.74.0-beta.8
Version bump via changesets. |
||
|
|
6cc687d3a3 |
FN-8728: retry incomplete planner runs before review
Retry planner attempts until a clean, changed artifact is ready for Plan Review. - Track each planning attempt's prompt baseline and fallback provenance. - Require a runtime-owned fallback-dispatch boundary before review handoff. - Back off and surface actionable errors for empty, unchanged, or fallback-engaged attempts. Files changed: .changeset/fn-8728-planner-retry-before-review.md | 7 + docs/architecture.md | 2 +- packages/engine/src/__tests__/triage.test.ts | 492 ++++++++++++++++++++++ packages/engine/src/agent-runtime.ts | 8 + packages/engine/src/agent-session-helpers.ts | 3 + packages/engine/src/pi.ts | 14 +- packages/engine/src/runtime-resolution.ts | 14 +- packages/engine/src/triage.ts | 135 +++++- 8 files changed, 656 insertions(+), 19 deletions(-) Fusion-Task-Id: FN-8728 Fusion-Task-Lineage: e7581d29-5bd6-43dc-aa0b-6594b9dd9c0d Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
4d933b19f6 |
FN-8729: move terminal close control after new tab
Keep the terminal close control last in the non-embedded terminal header across responsive layouts. - Render one shared close control after terminal tabs, workspace picker, and status. - Preserve the mobile corner ordering and prevent close-control shrinkage. - Add ordering coverage for desktop, mobile, workspace, and status states. - Add a patch changeset for the toolbar fix. Files changed: .changeset/fn-8729-terminal-toolbar.md | 7 +++ .../dashboard/app/components/TerminalModal.css | 15 +++--- .../dashboard/app/components/TerminalModal.tsx | 56 ++++++++-------------- .../components/__tests__/TerminalModal.test.tsx | 51 ++++++++++++++++++++ 4 files changed, 83 insertions(+), 46 deletions(-) Fusion-Task-Id: FN-8729 Fusion-Task-Lineage: ba9b039c-557d-4692-8203-bf764388d039 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
6d8492ba72 |
chore(FN): add changeset for settle-window sync task-move fix
Fusion-Task-Id: FN-scheduler-settle-window |
||
|
|
a84e16118a |
fix(engine): keep settle-window ledger updates synchronous on task moves
FN-8656 moved the recentEngineTodoRequeues / dispatch-oscillation reset behind await resolveTaskParkedColumns, racing sync delete/update handlers. A hold requeue then delete in the same tick could re-set the settle guard after the clear and leave the card undispatchable. Consume the sync parked lanes in the emitter prologue again. |
||
|
|
f21c07929a |
fix(dashboard): align mid-tablet shell chrome with JS viewport mode
Tablet-class devices at ≤768 CSS px were mode=tablet (left sidebar on, no MobileNavBar) while pure max-width:768 rules hid the sidebar and elevated the footer for a phantom tab bar. Publish data-viewport-mode and key shell CSS off it so tablet keeps the left sidebar and a true bottom footer. |
||
|
|
1e7f510ee2 |
fix: stop blocking tasks on open-PR file claims — board tasks are the only blockers
Remove the FN-8700 PR/file-claim blocking mechanism end to end (operator decision after FN-8728 parked on unrelated PR #2398): - Drop the AGENTS.md claim-check rule and scripts/check-file-claimed.mjs - Executor prompt + fn_task_done no longer accept pr:N refs or treat open PRs as blocked-exit reasons - execution-block-classifier classifies on Fusion task dependencies only; legacy pr refs are discarded, reason prose never makes a block durable - Remove the session-log BLOCKED promotion and the gh-backed reconcile-external-pr-blockers self-healing sweep - Legacy file-claim parks are no longer honored, so previously PR-blocked rows recover via normal paths Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|
|
4c0ead498a |
FN-8725: label pending authentication accounts
Add visible labels and responsive spacing for pending credential account fields. - Associate provider-specific account-name labels with pending credential inputs. - Preserve account labels through API-key saving and OAuth login actions. - Cover labeled pending fields for API-key and OAuth credential instances. Files changed: .../AuthenticationSection.instances.test.tsx | 24 +++++++++++++++++++--- .../settings/sections/AuthenticationSection.css | 4 ++++ .../settings/sections/AuthenticationSection.tsx | 11 +++++++++- 3 files changed, 35 insertions(+), 4 deletions(-) Fusion-Task-Id: FN-8725 Fusion-Task-Lineage: df0b6f7d-d1fb-471a-a277-60c794f6e7a7 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
df0b295454 |
chore(deps): bump actions/setup-java from 4 to 5.6.0 (#3303)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.6.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/setup-java/releases">actions/setup-java's releases</a>.</em></p> <blockquote> <h2>v5.6.0</h2> <h2>What's Changed</h2> <ul> <li>Backport to v5: Add Maven compiler problem matcher for javac diagnostics by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1087">actions/setup-java#1087</a></li> <li>feat: expose cache-primary-key output (<a href="https://redirect.github.com/actions/setup-java/issues/597">#597</a>) [v5 backport] by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1089">actions/setup-java#1089</a></li> <li>dist: Cover Tencent Kona JDK 25 (<a href="https://redirect.github.com/actions/setup-java/issues/1108">#1108</a>) [v5 backport] by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1110">actions/setup-java#1110</a></li> <li>Backport <a href="https://redirect.github.com/actions/setup-java/issues/1111">#1111</a>: Preserve Maven toolchains across repeated setup-java runs (<a href="https://redirect.github.com/actions/setup-java/issues/1099">#1099</a>) by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1113">actions/setup-java#1113</a></li> <li>Backport <a href="https://redirect.github.com/actions/setup-java/issues/1097">#1097</a>/<a href="https://redirect.github.com/actions/setup-java/issues/1098">#1098</a> to v5: cache Maven and Gradle wrapper distributions separately by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1122">actions/setup-java#1122</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-java/compare/v5...v5.6.0">https://github.com/actions/setup-java/compare/v5...v5.6.0</a></p> <h2>v5.5.0</h2> <h2>What's Changed</h2> <ul> <li>chore: enforce pre-PR validation (aggregate scripts, git hooks, PR checklist) by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1061">actions/setup-java#1061</a></li> <li>Bump github/codeql-action from 3 to 4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1069">actions/setup-java#1069</a></li> <li>Bump actions/checkout from 6 to 7 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1068">actions/setup-java#1068</a></li> <li>Bump actions/setup-python from 5 to 6 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1067">actions/setup-java#1067</a></li> <li>Bump <code>@typescript-eslint/parser</code> from 8.61.1 to 8.62.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1062">actions/setup-java#1062</a></li> <li>feat: Add verify-signature plumbing and Temurin+Microsoft verification support by <a href="https://github.com/johnoliver"><code>@johnoliver</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1060">actions/setup-java#1060</a></li> <li>Updated jetbrains test: https.request() now catches errors. This fixes leaking tests as well by <a href="https://github.com/jmjaffe37"><code>@jmjaffe37</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1070">actions/setup-java#1070</a></li> <li>Fix arm64 e2e workflow tests mislabeled as x64 by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> with <a href="https://github.com/Copilot"><code>@Copilot</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1073">actions/setup-java#1073</a></li> <li>feat: suppress Maven transfer progress via MAVEN_ARGS by default (add show-download-progress input) by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1053">actions/setup-java#1053</a></li> <li>feat: Disable interactiveMode in generated Maven settings.xml by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> with <a href="https://github.com/Copilot"><code>@Copilot</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1052">actions/setup-java#1052</a></li> <li>Bump prettier from 3.6.2 to 3.9.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1066">actions/setup-java#1066</a></li> <li>chore(deps-dev): bump eslint-plugin-jest from 29.0.1 to 29.15.4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1074">actions/setup-java#1074</a></li> <li>fix: Maven Toolchains grows unexpectedly by <a href="https://github.com/Okeanos"><code>@Okeanos</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/534">actions/setup-java#534</a></li> <li>dist: Support Tencent Kona JDK by <a href="https://github.com/johnshajiang"><code>@johnshajiang</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/672">actions/setup-java#672</a></li> <li>feat: Add set-default option by <a href="https://github.com/gsmet"><code>@gsmet</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1017">actions/setup-java#1017</a></li> <li>docs: document problem matcher (and how to disable it), Maven Wrapper caching, and generated interactiveMode by <a href="https://github.com/brunoborges"><code>@brunoborges</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1075">actions/setup-java#1075</a></li> <li>feat: Add distribution detection support to .sdkmanrc file by <a href="https://github.com/lukaszgyg"><code>@lukaszgyg</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/975">actions/setup-java#975</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/jmjaffe37"><code>@jmjaffe37</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-java/pull/1070">actions/setup-java#1070</a></li> <li><a href="https://github.com/gsmet"><code>@gsmet</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-java/pull/1017">actions/setup-java#1017</a></li> <li><a href="https://github.com/lukaszgyg"><code>@lukaszgyg</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-java/pull/975">actions/setup-java#975</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-java/compare/v5...v5.5.0">https://github.com/actions/setup-java/compare/v5...v5.5.0</a></p> <h2>v5.4.0</h2> <h2>What's Changed</h2> <ul> <li>Bump <code>@typescript-eslint/parser</code> from 8.48.0 to 8.61.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-java/pull/1021">actions/setup-java#1021</a></li> <li>Fix codeql workflow permissions by <a href="https://github.com/jsoref"><code>@jsoref</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/993">actions/setup-java#993</a></li> <li>fix CodeQL permissions by <a href="https://github.com/gdams"><code>@gdams</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1025">actions/setup-java#1025</a></li> <li>fix: reject non-semver candidate versions in isVersionSatisfies by <a href="https://github.com/sproctor"><code>@sproctor</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1009">actions/setup-java#1009</a></li> <li>Bump <code>@actions/cache</code> to 5.1.0, handle cache write denied by <a href="https://github.com/jasongin"><code>@jasongin</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1026">actions/setup-java#1026</a></li> <li>Add Maven Wrapper cache feature by <a href="https://github.com/mahabaleshwars"><code>@mahabaleshwars</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1027">actions/setup-java#1027</a></li> <li>Spelling by <a href="https://github.com/jsoref"><code>@jsoref</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/713">actions/setup-java#713</a></li> <li>add link to advanced configuration for JetBrains by <a href="https://github.com/robstoll"><code>@robstoll</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/850">actions/setup-java#850</a></li> <li>docs(action): fix missing required or default fields by <a href="https://github.com/kranthipoturaju"><code>@kranthipoturaju</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1007">actions/setup-java#1007</a></li> <li>feat: add microsoft openjdk 17.0.18 by <a href="https://github.com/al-kau"><code>@al-kau</code></a> in <a href="https://redirect.github.com/actions/setup-java/pull/1002">actions/setup-java#1002</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
cfc63fc8f5 |
FN-8724: stabilize hydration freshness tests
Make the useTasks hydration freshness coverage deterministic and restore it to the dashboard suite. - Control the system clock for hydration fixtures and flush async updates without advancing time. - Remove the rescued test from the dashboard exclusion list and quarantine ledger. Files changed: .../__tests__/useTasks-hydration-freshness.test.ts | 30 ++++++++++++++-------- packages/dashboard/vitest.config.ts | 8 ------ scripts/lib/test-quarantine.json | 5 ---- 3 files changed, 19 insertions(+), 24 deletions(-) Fusion-Task-Id: FN-8724 Fusion-Task-Lineage: 1d764e2c-0975-4d26-92c6-187a6a94caee Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
546a19aef6 |
chore(release): v0.74.0-beta.7
Version bump via changesets. |
||
|
|
4fb873f465 |
FN-8722: fix GitHub Import sheet spacing
Fix standalone GitHub Import content alignment on mobile and short sheet viewports. - Remove the standalone resize-handle gutter when the FloatingWindow sheet contract applies. - Add fixture and browser-smoke coverage for standalone, embedded, and detail import layouts. - Document the shared short-height sheet geometry behavior and add a patch changeset. Files changed: .changeset/fn-8722-github-import-mobile-spacing.md | 7 ++ docs/dashboard-guide.md | 3 +- .../__tests__/browser-layout-smoke-fixture.test.ts | 17 +++++ .../dashboard/app/components/FloatingWindow.css | 12 ++++ .../__tests__/GitHubImportModal.test.tsx | 18 +++++ .../dashboard/scripts/browser-layout-smoke.mjs | 78 ++++++++++++++++++++++ 6 files changed, 134 insertions(+), 1 deletion(-) Fusion-Task-Id: FN-8722 Fusion-Task-Lineage: cc812078-b0b5-4223-9435-ed77d80f2b47 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
fab2b3a7b1 |
fix(i18n): restore reverted-task locale parity (#3302)
## Summary - add reverted-task resolution keys to every secondary app catalog - restore structural locale parity after the reverted-task dashboard UI landed - include labeled patch release metadata ## Test plan - `pnpm --filter @fusion/i18n test` - `pnpm i18n:status` - `pnpm check:changesets -- --strict` - `pnpm build` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Localization** * Added localized labels for reverted tasks, resolution actions, revision actions, and related task titles in French, Korean, Simplified Chinese, and Traditional Chinese. * Added Spanish locale entries for consistent support of these task actions. * Improved terminology coverage across supported secondary locales. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
9e0f29abc9 |
fix: durable parks for file-claim and PR blockers (FN-8700)
Classify blocked exits so check-file-claimed / open-PR collisions never auto-replan. Park failed with externalBlockers metadata (pr:N supported), promote BLOCKED session logs instead of incomplete-step requeue, thrash- exhaust after 3 identical durable blocks, and clear parks when gh reports blocking PRs merged or closed. |
||
|
|
af138d73ee |
test: harden engine fixtures after lane and session refactors
Scope stuck-requeue merge-base failure to the task-branch proof so setup still reaches the session; loosen MCP coverage to allow let session rebinding; mock getRootDir for stranded-hold capacity; and expect the scheduler parked-role site to use awaited resolveTaskParkedColumns after FN-8656. |
||
|
|
400c640c85 |
fix: stop inactive DUPLICATE replan loop (FN-8704)
After one free needs-replan clear of an inactive DUPLICATE marker, a re-emit of the same dismissed canonical parks status failed (DUPLICATE_REPLAN_EXHAUSTED) so triage no longer re-admits the card. Tracks clear count in sourceMetadata; self-healing mirrors triage. |
||
|
|
66052d4178 |
test(FN-slow): replace real 400ms waits in ListView refetch tests with fake timers
Convert three real-timer 400ms wall waits in the unmapped-workflow forced-refetch negative-assertion tests to deterministic vi.useFakeTimers()/advanceTimersByTimeAsync advances, removing ~1.2s of dead wall-time while preserving the REVERT CHECK semantics (a regression that armed a RETRY_DELAY_MS retry would still fire and fail). Fusion-Task-Id: FN-slow |
||
|
|
6d176a9372 |
FN-8721: reconcile census, delegation routing, and archive repair
Align lifecycle census coverage while routing delegated work to workflow-ready lanes and safely repairing archived tasks. - Route delegated tasks through the selected workflow's hold or entry column. - Scope soft-deleted archive repairs by project and protect them with compare-and-set updates. - Refresh lifecycle-column census detection, baseline, documentation, and coverage. Files changed: docs/testing.md | 21 +++--- .../u15-engine-dashboard-consumers.test.ts | 31 ++++++++- .../core/src/task-store/archive-lifecycle-2.ts | 5 ++ .../core/src/task-store/async-archive-lineage.ts | 5 ++ packages/core/src/task-store/async-persistence.ts | 11 ++++ packages/core/src/task-store/async-self-healing.ts | 76 +++++++++++++++------- .../src/__tests__/agent-tools-delegation.test.ts | 43 +++++++++++- .../__tests__/lifecycle-column-census-ast.test.ts | 20 ++++++ .../src/__tests__/lifecycle-column-census.test.ts | 29 ++++++--- packages/engine/src/agent-tools.ts | 29 +++++++-- scripts/lib/lifecycle-column-census-ast.mjs | 21 +++++- scripts/lib/lifecycle-column-census-baseline.json | 17 ++--- scripts/lifecycle-column-census.mjs | 3 +- 13 files changed, 245 insertions(+), 66 deletions(-) Fusion-Task-Id: FN-8721 Fusion-Task-Lineage: ff78481f-5ecb-4d9b-b21a-a095682372ed Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
54c2c1e666 |
FN-8719: fix stale milestone validation badges
Keep persisted milestone validation rollups and dashboard badges synchronized after assertion changes. - Reconcile assertion mutations and validation rollups atomically within each project. - Prevent stale rollup and telemetry responses from overwriting newer milestone state. - Cover repaired and removed failure states with PostgreSQL and dashboard tests. Files changed: .changeset/fn-8719-milestone-validation-rollup.md | 7 + docs/missions.md | 4 + .../__tests__/postgres/mission-store.pg.test.ts | 61 +++++++ packages/core/src/async-mission-store.ts | 142 ++++++++++------ .../dashboard/app/components/MissionManager.tsx | 108 ++++++++---- .../MissionManager.validation-rollup.test.tsx | 181 +++++++++++++++++++++ 6 files changed, 416 insertions(+), 87 deletions(-) Fusion-Task-Id: FN-8719 Fusion-Task-Lineage: c505211c-935a-4ad3-b35d-81c486e56121 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
3b633512d8 |
FN-8707: recover noisy mission validator JSON
Recover bounded, valid mission validator payloads amid ordinary response formatting noise. - Extract bounded, string-aware fenced and balanced JSON candidates and prefer the final valid payload. - Conservatively repair trailing commas and missing closing delimiters while retaining fail-closed assertion validation. - Cover recovery and irreparable-response behavior, document the safety bounds, and add a patch changeset. Files changed: .../fn-8707-mission-validator-json-recovery.md | 7 + docs/missions.md | 2 + .../src/__tests__/mission-execution-loop.test.ts | 74 ++++++++- packages/engine/src/mission-execution-loop.ts | 183 +++++++++++++++------ 4 files changed, 204 insertions(+), 62 deletions(-) Fusion-Task-Id: FN-8707 Fusion-Task-Lineage: 0eb5e5c0-a520-4485-9f54-0376a47a5b5e Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
bf173dad7c |
FN-8696: keep reverted tasks out of Done
Keep reverted tasks out of completed views and give every task-detail host a revision recovery path. - Exclude reverted tasks from complete columns and group them in dedicated recovery lists. - Provide Delete and Revise actions in cards, lists, docks, modals, and popped-out details. - Add localized copy, documentation, regression coverage, and a patch changeset. Files changed: .changeset/fn-8696-reverted-task-resolution.md | 7 ++++ docs/dashboard-guide.md | 4 ++ packages/dashboard/app/App.tsx | 2 + packages/dashboard/app/components/AppModals.tsx | 2 + packages/dashboard/app/components/Board.tsx | 42 +++++++++++++++++++- packages/dashboard/app/components/DockTaskList.tsx | 21 +++++++++- packages/dashboard/app/components/ListView.tsx | 18 +++++++++ packages/dashboard/app/components/TaskCard.css | 4 ++ packages/dashboard/app/components/TaskCard.tsx | 9 +++++ .../dashboard/app/components/TaskDetailModal.tsx | 18 ++++++++- .../app/components/__tests__/Board.test.tsx | 46 ++++++++++++++++++++++ .../app/components/__tests__/DockTaskList.test.tsx | 29 +++++++++++++- .../app/components/dashboard/MainContent.tsx | 4 ++ .../app/components/overflowViewRegistry.tsx | 3 ++ .../app/components/useRightDockController.tsx | 9 +++++ .../app/utils/__tests__/taskRevert.test.ts | 16 +++++++- packages/dashboard/app/utils/taskRevert.ts | 18 +++++++++ packages/i18n/locales/en/app.json | 3 ++ 18 files changed, 249 insertions(+), 6 deletions(-) Fusion-Task-Id: FN-8696 Fusion-Task-Lineage: 7c9550fb-ef8e-4422-8ec1-0de1665413a3 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
529ab26ba4 |
FN-8695: fix dashboard assertion CRUD validation
Restore dashboard assertion status edits and deletes for store-generated IDs. - Validate assertion route IDs against the MissionStore-generated format while preserving legacy IDs. - Dispatch assertion deletes through the shared confirmation handler and surface request failures. - Cover current ID CRUD routes and desktop/mobile deletion behavior. Files changed: .changeset/fn-8695-assertion-id-validation.md | 7 ++ docs/missions.md | 2 +- .../dashboard/app/components/MissionManager.tsx | 51 ++++++++--- .../MissionManager.delete-confirm.test.tsx | 99 ++++++++++++++++++++ .../mission-assertion-id-validation.test.ts | 100 +++++++++++++++++++++ packages/dashboard/src/mission-routes.ts | 8 +- 6 files changed, 249 insertions(+), 18 deletions(-) Fusion-Task-Id: FN-8695 Fusion-Task-Lineage: b7e2d70f-d3c7-4fdd-92f6-989cf414570b Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
1e67e87321 |
FN-8702: fix Git Manager phone sheet spacing
Make Git Manager use the standalone phone layout only below the 768px boundary. - Remove the hidden resize-handle gutter from Git Manager phone sheets - Preserve embedded, tablet, and desktop Git Manager geometry - Add responsive layout smoke fixtures and regression coverage - Document the phone-sheet behavior and add a patch changeset Files changed: .changeset/fn-8702-git-manager-mobile-spacing.md | 7 + docs/dashboard-guide.md | 5 +- .../__tests__/browser-layout-smoke-fixture.test.ts | 23 ++++ .../dashboard/app/components/FloatingWindow.css | 12 ++ packages/dashboard/app/components/ScriptsModal.css | 10 +- .../components/__tests__/GitManagerModal.test.tsx | 31 +++-- packages/dashboard/scripts/browser-layout-smoke.mjs| 143 +++++++++++++++++++++ 7 files changed, 211 insertions(+), 20 deletions(-) Fusion-Task-Id: FN-8702 Fusion-Task-Lineage: 52473a8a-d3a7-48d2-b768-fc2f6fcd18b9 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
fdd2bf2418 | fix: prevent queued badge icon clipping on tablets | ||
|
|
5d06c92b77 |
FN-8713: handle missing auth-status query data
Keep auth-status available when direct callers omit credential-instance query data. - Default absent request query data to an empty selection. - Preserve validation and prevent dangling instances from falling back to other credentials. - Add coverage for omitted, valid, and dangling credential-instance queries. - Add a patch changeset for the auth-status fix. Files changed: .changeset/fn-8713-auth-status-query.md | 7 +++ .../register-auth-routes-hermes-additive.test.ts | 67 ++++++++++++++++++++-- .../dashboard/src/routes/register-auth-routes.ts | 9 ++- 3 files changed, 77 insertions(+), 6 deletions(-) Fusion-Task-Id: FN-8713 Fusion-Task-Lineage: 0bcb965e-0606-4c7b-aefc-e7e3461ae75d Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
494362cd23 |
FN-8697: preserve redacted failed-tool diagnostics
Persist safe error detail so operators can diagnose repeated executor tool failures. - Redact and retain failed-tool diagnostics even when tool output persistence is disabled. - Cover redaction, disclosure independence, inert rendering, and retry-backoff normalization. Files changed: .../__tests__/AgentLogViewer.rendering.test.tsx | 29 +++++++++++++++++ .../src/__tests__/agent-logger-diagnostics.test.ts | 38 ++++++++++++++++++++++ packages/engine/src/__tests__/agent-logger.test.ts | 4 +-- .../__tests__/executor-tool-failure-retry.test.ts | 22 ++++++++++++- packages/engine/src/agent-logger.ts | 11 +++++-- 5 files changed, 99 insertions(+), 5 deletions(-) Fusion-Task-Id: FN-8697 Fusion-Task-Lineage: 5ed900b6-a42b-4ad7-9270-47053295e6e1 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
39368f4bb8 |
FN-8694: add content-addressed validation memoization
Memoizes mission validation inputs and bounds repeat failures. - Persist validator input fingerprints and atomically admit validation runs. - Reuse unchanged static passes while enforcing per-fingerprint failure budgets. - Add migration coverage, execution-loop tests, and operator documentation. Files changed: .changeset/fn-8694-validation-memoization.md | 7 + docs/missions.md | 6 + docs/storage.md | 6 + .../__tests__/postgres/mission-store.pg.test.ts | 40 +++- packages/core/src/async-mission-store-queries.ts | 24 ++- packages/core/src/async-mission-store.ts | 65 +++++- packages/core/src/mission-store.ts | 10 +- packages/core/src/mission-types.ts | 19 ++ .../0042_fn_8694_validator_input_fingerprint.sql | 9 + packages/core/src/postgres/schema-applier.ts | 13 +- packages/core/src/postgres/schema/project.ts | 5 + .../src/__tests__/mission-execution-loop.test.ts | 72 ++++++- packages/engine/src/mission-execution-loop.ts | 217 +++++++++++++++++---- 13 files changed, 443 insertions(+), 50 deletions(-) Fusion-Task-Id: FN-8694 Fusion-Task-Lineage: 92a790d5-f2fc-4e71-b9ee-8334ff38b20d Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
7dc6c4b4ec |
FN-8711: preserve credential instances in settings actions
Preserve selected credential-instance identity across dashboard authentication actions. - Route named-account OAuth and API-key actions with their instance IDs. - Retain sibling credential accounts during targeted OAuth polling. - Document the default-versus-named credential contract and extend desktop/mobile coverage. Files changed: ...n-8711-settings-credential-instance-contract.md | 7 ++ docs/settings-reference.md | 2 +- .../app/__tests__/settings-moved-keys.test.ts | 2 + .../dashboard/app/components/SettingsModal.tsx | 49 +++++++++++--- .../__tests__/SettingsModal.models-auth.test.tsx | 78 ++++++++++++++++++++++ .../components/__tests__/settings-mobile.test.tsx | 14 ++-- .../settings/sections/AuthenticationSection.tsx | 15 +++-- .../settings-default-descriptions.test.tsx | 19 ++++++ 8 files changed, 165 insertions(+), 21 deletions(-) Fusion-Task-Id: FN-8711 Fusion-Task-Lineage: f43eaa27-4d36-4a3d-acf3-caba54e31857 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
6e98e16e70 |
fix: reject DUPLICATE-only PROMPT at dispatch (FN-8704)
FN-8704 failed at the graph parse node because PROMPT.md was only "DUPLICATE: FN-8676". Filesystem validation treated non-empty as planned and admitted the card into WIP, which then looped on parse failure. Treat a sole DUPLICATE redirect as unplanned: block dispatch and hold release, badge as awaiting planning, and if parse still sees that shape rebound to needs-replan with feedback instead of parking failed. |
||
|
|
7f29809728 |
fix: exclude failed WIP from live capacity holders
Failed parks left in the WIP column still counted as running agents and file-scope lease holders, so they consumed maxWorktrees/maxConcurrent and could serialize unrelated todos. Match review-lane semantics: status failed is never a live top-level holder. |
||
|
|
0512334e86 |
FN-8714: fix quality runner CLI argument passthrough
Allow dashboard aggregate quality commands through the pnpm script boundary. - Normalize pnpm’s leading argument separator before validating runner options - Add end-to-end aggregate and fail-fast quality-runner coverage with a deterministic fixture - Document aggregate quality-runner invocation and failure reporting Files changed: docs/testing.md | 15 ++++ packages/dashboard/scripts/__tests__/quality-runner-fixture.mjs | 18 +++++ packages/dashboard/scripts/__tests__/run-quality-tests.test.ts | 88 ++++++++++++++++++++++ packages/dashboard/scripts/run-quality-tests.mjs | 23 ++++-- 4 files changed, 139 insertions(+), 5 deletions(-) Fusion-Task-Id: FN-8714 Fusion-Task-Lineage: 48dbd434-a9e6-4283-8658-cbaa254a7dc7 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai> |
||
|
|
e3fbd2ebf5 |
fix: stop inactive-duplicate clear from replan-storming
Clearing a DUPLICATE marker for an inactive or kept canonical left status:null without PROMPT.md. The scheduler treats planning→null as "finished planning" and re-dispatched the card; FS validation rebounded to needs-replan with no ceiling, and triage re-planned with empty feedback so the planner could re-emit the same inactive marker forever (FN-8704 / FN-8676). Leave needs-replan + dismissal metadata + replan feedback instead, share the clear contract across triage and self-healing, and bound scheduler filesystem-validation rebounds with the shared recovery budget. |
||
|
|
60706ed5e4 |
fix: demote high-frequency TUI log lines to debug
Session setup, track bookkeeping, intentional skill exclusions, token-cache metrics, zero-count recovery summaries, and expected-missing PROMPT seed reads were flooding the default log pane. Gate them behind FUSION_DEBUG so only state transitions and operator-actionable warnings remain visible. |
||
|
|
7dbcff139c |
fix: board lane counts and card glow never exceed live running agents
Operators summing the lane-header executing counts saw 10 active cards under a 9-slot concurrency cap and read it as a capacity breach. The header unioned the shared Running predicate with the card activity-chrome predicate, which glowed needs-replan parks (FN-8494) and fresh planner-log windows (FN-8300) that hold no concurrency slot. isTaskAgentActive's positive arm now delegates to the shared isRunningAgentTask predicate (footer/admission truth) and Column headers count only that predicate, so glow and counts are a strict subset of the live-agent population. Idle replans render the existing "Queued to revise" waiting label instead of activity chrome. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |