Commit Graph

3899 Commits

Author SHA1 Message Date
gsxdsm
51e28fb7ca fix(desktop): re-show hidden window on dock/Finder activate + log gate flow
The close handler hides the BrowserWindow instead of destroying it, so
once closed, subsequent dock or Finder activations were no-ops because
the activate handler only created a new window when mainWindow === null.
Show + focus the existing window if it's hidden so relaunch behaves as
expected. Also add console.log breadcrumbs in DesktopLaunchGate so we
can diagnose why the chooser sometimes appears not to render.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 22:24:40 -07:00
gsxdsm
75a712771e feat(desktop): Connection → Change Launch Mode menu item
Adds a "Connection" submenu with a "Change Launch Mode…" item that lets
users switch between Run Locally and Connect to Remote after the initial
chooser. The menu sends shell:reset-desktop-mode-request to the renderer;
the dashboard's DesktopLaunchGate listens, calls the new
shell:resetDesktopMode IPC (clears hasCompletedModeSelection, stops the
embedded runtime), strips the cached serverBaseUrl/shellMode query params,
and reloads so the gate re-prompts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 22:16:27 -07:00
gsxdsm
b143f6c88b feat(dashboard): desktop launch gate for run-local vs connect-remote
Wrap <App /> in a DesktopLaunchGate that runs only inside the Electron shell.
On first run it shows a chooser (Run Locally / Connect Remote). On "local"
it calls setDesktopMode("local") so main starts the embedded runtime, polls
shell:getState until localRuntime.state === "running", then reloads with
?serverBaseUrl=http://127.0.0.1:<port> so the dashboard's API calls route
to the embedded server (file:// origins can't resolve relative /api). On
"remote" it opens the existing connection manager. Replaces the dead-end
"can't reach backend" landing in the packaged desktop app.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 22:10:58 -07:00
Fusion (runfusion.ai)
53e0372bc9 test(FN-4986): complete Step 3 — update footer cluster alignment assertions
Fusion-Task-Id: FN-4986
Fusion-Task-Lineage: d7a2c969-f3ea-4f93-bcdb-f86521845fce
2026-05-17 21:34:06 -07:00
Fusion (runfusion.ai)
10d00423a4 feat(FN-4986): complete Step 2 — align footer chip cluster via first-chip anchor
Fusion-Task-Id: FN-4986
Fusion-Task-Lineage: d7a2c969-f3ea-4f93-bcdb-f86521845fce
2026-05-17 21:34:06 -07:00
Fusion (runfusion.ai)
24076970b1 feat(FN-4926): add fn_task_list regression tests
Adds regression tests for `fn_task_list` in the pi-extensions test suite and updates an existing planning-board-tools test, both scoped to FN-4926 coverage.

Fusion-Task-Id: FN-4926

Fusion-Task-Lineage: 9a6a82cb-4b17-4471-a386-7c4b7d275c40
2026-05-17 20:09:36 -07:00
gsxdsm
f9cf3f1bde feat(FN-4921): merge fusion/fn-4921 2026-05-17 19:11:59 -07:00
gsxdsm
bf0e9a3e37 feat(FN-4766): merge fusion/fn-4766 2026-05-17 19:11:40 -07:00
Fusion (runfusion.ai)
9475639a48 test(FN-4942): align route task tests with hook-based tracking
Fusion-Task-Id: FN-4942
Fusion-Task-Lineage: 20865705-e5ec-4261-932c-4d47c2d8dc12
2026-05-17 19:04:18 -07:00
Fusion (runfusion.ai)
8ef7fe2b18 feat(FN-4942): complete Step 2 — route tracking creation via hook
Fusion-Task-Id: FN-4942
Fusion-Task-Lineage: 20865705-e5ec-4261-932c-4d47c2d8dc12
2026-05-17 19:04:18 -07:00
Fusion (runfusion.ai)
f5cd0dd472 feat(FN-4971): add PrInfo regression test
Adds a regression test for the PrInfo endpoint to guard against FN-4971, covering the legacy PR info API path in the dashboard package.

Fusion-Task-Id: FN-4971
2026-05-17 19:03:51 -07:00
gsxdsm
22729135e8 fix(dashboard): use queueMicrotask instead of setTimeout for iOS scroll reset in ChatView focus handler 2026-05-17 18:21:00 -07:00
gsxdsm
4dc281f5c3 feat(FN-4977): merge fusion/fn-4977 2026-05-17 17:42:04 -07:00
Fusion (runfusion.ai)
d13ee7f526 feat(FN-4962): complete Step 4 — dashboard fallback and reliability coverage
Fusion-Task-Id: FN-4962
Fusion-Task-Lineage: de4ce54b-c5e4-40f9-a048-677adac3e1a0
2026-05-17 15:55:18 -07:00
Fusion (runfusion.ai)
235754a766 test(FN-4945): complete Step 3 — add secrets route regression tests
Fusion-Task-Id: FN-4945
Fusion-Task-Lineage: f3049b2a-26de-4d48-be99-eb90e4780a9e
2026-05-17 15:17:22 -07:00
Fusion (runfusion.ai)
bce62834f1 feat(FN-4945): complete Step 2 — harden secrets route guards
Fusion-Task-Id: FN-4945
Fusion-Task-Lineage: f3049b2a-26de-4d48-be99-eb90e4780a9e
2026-05-17 15:17:22 -07:00
gsxdsm
91ac073f8e feat(FN-4940): merge fusion/fn-4940 2026-05-17 15:11:48 -07:00
Fusion (runfusion.ai)
b60f359088 test(FN-4937): complete Step 2 — cover matching import and linked issue permutations
Fusion-Task-Id: FN-4937
Fusion-Task-Lineage: 1eceb69d-b6b2-4256-9629-3841a03b68e9
2026-05-17 15:10:00 -07:00
Fusion (runfusion.ai)
b96298d11d feat(FN-4937): complete Step 1 — merge github footer indicator logic
Fusion-Task-Id: FN-4937
Fusion-Task-Lineage: 1eceb69d-b6b2-4256-9629-3841a03b68e9
2026-05-17 15:10:00 -07:00
Fusion (runfusion.ai)
ae740bdb24 fix(FN-4764): add dismissible structured PR error blocks and styles
Fusion-Task-Id: FN-4764
Fusion-Task-Lineage: 14809ad5-8463-4e16-a934-1414225f17ae
2026-05-17 14:48:31 -07:00
Fusion (runfusion.ai)
26c3d330d3 feat(FN-4764): complete Step 2-4 — surface structured gh errors in API UI CLI
Fusion-Task-Id: FN-4764
Fusion-Task-Lineage: 14809ad5-8463-4e16-a934-1414225f17ae
2026-05-17 14:48:31 -07:00
Fusion (runfusion.ai)
abd4fad929 test(FN-4925): complete Step 6 — add mobile layout regression coverage
Fusion-Task-Id: FN-4925
Fusion-Task-Lineage: 31fe1419-89df-4d8b-b7fe-7a872801c665
2026-05-17 14:03:16 -07:00
Fusion (runfusion.ai)
f25c83a37b feat(FN-4925): complete Step 4 — fix mobile dev server layout overlap
Fusion-Task-Id: FN-4925
Fusion-Task-Lineage: 31fe1419-89df-4d8b-b7fe-7a872801c665
2026-05-17 14:03:15 -07:00
Fusion (runfusion.ai)
abb0f63aae feat(FN-4915): complete Step 2-3 — add secret audit emitters and approval audits
Fusion-Task-Id: FN-4915
Fusion-Task-Lineage: d5c49dae-6069-4998-b632-aca52cc312dc
2026-05-17 13:54:32 -07:00
Fusion (runfusion.ai)
bba945c8be feat(FN-4763): complete Step 7 — finalize reclaim wiring and docs
Fusion-Task-Id: FN-4763
Fusion-Task-Lineage: b3628e63-682b-4a39-9a7d-2c96278c5366
2026-05-17 13:46:24 -07:00
Fusion (runfusion.ai)
412ee29a24 fix(FN-4763): align PrInfo typing with mergeable conflict state
Fusion-Task-Id: FN-4763
Fusion-Task-Lineage: b3628e63-682b-4a39-9a7d-2c96278c5366
2026-05-17 13:46:24 -07:00
Fusion (runfusion.ai)
f8c20e1b96 feat(FN-4763): complete Step 5 — surface PR conflict reclaim in panel
Fusion-Task-Id: FN-4763
Fusion-Task-Lineage: b3628e63-682b-4a39-9a7d-2c96278c5366
2026-05-17 13:46:24 -07:00
Fusion (runfusion.ai)
76b1ba8178 feat(FN-4763): complete Step 4 — add conflict reclaim route test coverage
Fusion-Task-Id: FN-4763
Fusion-Task-Lineage: b3628e63-682b-4a39-9a7d-2c96278c5366
2026-05-17 13:46:23 -07:00
Fusion (runfusion.ai)
b0a34d70c1 fix(FN-4763): export PrConflictState and expand mapping tests
Fusion-Task-Id: FN-4763
Fusion-Task-Lineage: b3628e63-682b-4a39-9a7d-2c96278c5366
2026-05-17 13:46:23 -07:00
Fusion (runfusion.ai)
9d5d310fdc feat(FN-4763): complete Step 1 — capture PR mergeable state
Fusion-Task-Id: FN-4763
Fusion-Task-Lineage: b3628e63-682b-4a39-9a7d-2c96278c5366
2026-05-17 13:46:21 -07:00
Fusion (runfusion.ai)
b99298d559 test(FN-4923): complete Step 2 — add tracking chip alignment regressions
Fusion-Task-Id: FN-4923
Fusion-Task-Lineage: 2ea94680-edd7-40a9-92a6-9774b97a75f4
2026-05-17 13:07:54 -07:00
Fusion (runfusion.ai)
171df2ad2b feat(FN-4923): complete Step 1 — broaden chipFarRight timer-column guard
Fusion-Task-Id: FN-4923
Fusion-Task-Lineage: 2ea94680-edd7-40a9-92a6-9774b97a75f4
2026-05-17 13:07:54 -07:00
Fusion (runfusion.ai)
cb184910c7 fix(FN-4913): complete Step 9 — resolve quality gate failures
Fusion-Task-Id: FN-4913
Fusion-Task-Lineage: 2fa1fe49-a2a9-405d-833b-cb34d41ef19a
2026-05-17 12:58:02 -07:00
Fusion (runfusion.ai)
cca96a7604 test(FN-4913): complete Step 7 — add secrets sync contract coverage
Fusion-Task-Id: FN-4913
Fusion-Task-Lineage: 2fa1fe49-a2a9-405d-833b-cb34d41ef19a
2026-05-17 12:58:01 -07:00
Fusion (runfusion.ai)
22f8893db8 feat(FN-4913): complete Step 6 — wire secrets sync route registrars
Fusion-Task-Id: FN-4913
Fusion-Task-Lineage: 2fa1fe49-a2a9-405d-833b-cb34d41ef19a
2026-05-17 12:58:01 -07:00
Fusion (runfusion.ai)
eef8db102f fix(FN-4913): ensure inbound secrets sync always closes central core
Fusion-Task-Id: FN-4913
Fusion-Task-Lineage: 2fa1fe49-a2a9-405d-833b-cb34d41ef19a
2026-05-17 12:58:01 -07:00
Fusion (runfusion.ai)
cd7e29e4ef feat(FN-4913): complete Step 4 — add inbound secrets sync routes
Fusion-Task-Id: FN-4913
Fusion-Task-Lineage: 2fa1fe49-a2a9-405d-833b-cb34d41ef19a
2026-05-17 12:58:01 -07:00
Fusion (runfusion.ai)
db7eddd79c feat(FN-4913): complete Step 3 — add outbound secrets sync routes
Fusion-Task-Id: FN-4913
Fusion-Task-Lineage: 2fa1fe49-a2a9-405d-833b-cb34d41ef19a
2026-05-17 12:58:01 -07:00
Fusion (runfusion.ai)
9dfefc551b feat(FN-4941): close or delete GitHub issues when tasks are deleted
Fixed GitHub issue close and delete behavior when tasks are deleted in the dashboard's GitHub tracking state module, with test coverage added for both delete and state tracking scenarios.

Fusion-Task-Id: FN-4941
2026-05-17 12:56:38 -07:00
Fusion (runfusion.ai)
3ba9e13f75 feat(FN-4924): complete Step 2-3 — tighten tasks hydration and failed-refresh cache clearing
Fusion-Task-Id: FN-4924
Fusion-Task-Lineage: a5f882e1-8348-4f9d-89be-15994adc148c
2026-05-17 12:41:21 -07:00
Fusion (runfusion.ai)
13bcb8ed85 feat(FN-4924): complete Step 1 — add tasks TTL constant
Fusion-Task-Id: FN-4924
Fusion-Task-Lineage: a5f882e1-8348-4f9d-89be-15994adc148c
2026-05-17 12:41:21 -07:00
Fusion (runfusion.ai)
01caeb6d88 feat(FN-4762): merge fusion/fn-4762
Commits merged:
- merge fusion/fn-4762

Files changed:
AGENTS.md                                       | 25 ++++++++++++++++++++++---
 docs/README.md                                  |  6 ++++++
 packages/core/src/store.ts                      |  4 ++--
 packages/dashboard/app/App.tsx                  | 10 ++++++++--
 packages/dashboard/src/__tests__/github.test.ts |  3 ++-
 5 files changed, 40 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-4762

Fusion-Task-Lineage: 5c7ef3b8-fefc-4cc2-a703-634124d77cde
2026-05-17 12:24:45 -07:00
Fusion (runfusion.ai)
1543df69a4 fix(FN-4762): address review feedback for PR panel merge controls
Fusion-Task-Id: FN-4762
Fusion-Task-Lineage: 5c7ef3b8-fefc-4cc2-a703-634124d77cde
2026-05-17 12:11:51 -07:00
Fusion (runfusion.ai)
73454fae5c feat(FN-4762): complete Step 3 — PR merge routes and dashboard controls
Fusion-Task-Id: FN-4762
Fusion-Task-Lineage: 5c7ef3b8-fefc-4cc2-a703-634124d77cde
2026-05-17 12:11:51 -07:00
Fusion (runfusion.ai)
102893cba3 feat(FN-4762): complete Step 1 — core PR merge transition support
Fusion-Task-Id: FN-4762
Fusion-Task-Lineage: 5c7ef3b8-fefc-4cc2-a703-634124d77cde
2026-05-17 12:11:51 -07:00
gsxdsm
3c2bbf36c5 fix: add missing lastReviewDecision to legacy PrInfo type
PrPanel.tsx references prInfo.lastReviewDecision but the local
PrInfo interface in legacy.ts was missing this field, breaking
typecheck on main.
2026-05-17 12:10:14 -07:00
Fusion (runfusion.ai)
329b102eb2 fix(FN-4939): stabilize desktop test mocks and restore lint/type safety
Fusion-Task-Id: FN-4939
Fusion-Task-Lineage: b2a00edb-5245-4223-97e4-0a16dd2c3289
2026-05-17 11:49:09 -07:00
Fusion (runfusion.ai)
9a462388b5 feat(FN-4928): complete Step 2 — fix prompt-sizes SQL and add real DB regression test
Fusion-Task-Id: FN-4939
Fusion-Task-Lineage: b2a00edb-5245-4223-97e4-0a16dd2c3289
2026-05-17 11:49:08 -07:00
Fusion (runfusion.ai)
439716165b test(FN-4761): complete Step 5 — add review transition regression coverage
Fusion-Task-Id: FN-4761
Fusion-Task-Lineage: b6b1ed73-c396-4dd2-b97f-366272d05c7f
2026-05-17 11:39:19 -07:00
Fusion (runfusion.ai)
3d7e737fbe feat(FN-4761): finalize review auto-move docs and release note
Fusion-Task-Id: FN-4761
Fusion-Task-Lineage: b6b1ed73-c396-4dd2-b97f-366272d05c7f
2026-05-17 11:39:19 -07:00