Commit Graph
85 Commits
Author SHA1 Message Date
ciregenz 2c02286823 [eric] electron: clear the frontend HTTP cache every launch, kills the stale-bundle-after-upgrade class for good 2026-06-11 22:47:58 -07:00
ciregenz 8bf044fc60 [eric] electron: clear renderer cache on build change, so an upgrade actually loads the new frontend (unversioned bundle.js was served stale) 2026-06-11 17:08:46 -07:00
ciregenz cd681861bd [eric] electron: lift GPU-process crash limit so a GPU hiccup recovers, not kills the app 2026-06-11 15:44:38 -07:00
ciregenz e07fa73a2d [eric] mac: close-to-dock hide + window.close stub, the window cannot vanish uninvited 2026-06-11 02:05:01 -07:00
ciregenz f8afdf6b37 [eric] mac: window close no longer quits the app, dock reopen + quit-cause forensics 2026-06-11 01:40:59 -07:00
ciregenz 7238f86346 [eric] electron: silence the per-CDP-node ipc.handle log spam (hundreds per page read); OPENSWARM_DIAG_IPC=1 restores the firehose 2026-06-08 12:59:13 -07:00
ciregenz 1d4542bbf1 [eric] electron: race CDP sendCommand with 10s timeout, recycle debugger attachment on hang 2026-06-05 11:47:28 -07:00
ciregenz 79492416aa [eric] electron: disable renderer backgrounding, hidden-window agent webviews stopped executing JS 2026-06-05 00:53:23 -07:00
ciregenz f79172835e [eric] browser: block autoplay in agent webviews and reload a hung renderer to fight the wedge 2026-06-04 17:05:54 -07:00
ciregenz 2640930380 [eric] browser: add BrowserGetConsole so a stuck agent can read the page's console errors 2026-06-04 13:20:39 -07:00
ciregenz ad75228abe [eric] browser: guard capture-page on churning webviews to dodge the V8 crash 2026-06-04 11:26:50 -07:00
ciregenz e0359e0752 [eric] browser: passively capture redacted shadow-API routes while browsing (tier 2) 2026-06-02 04:08:10 -07:00
ciregenz 74fbef0bc4 [eric] browser: auto-attach OOPIF child frames and route CDP by sessionId 2026-06-02 03:55:52 -07:00
eric f6c1f73931 [eric] win: toggle devtools on f12 + ctrl/cmd+shift+i since the windows menu bar is hidden 2026-06-01 11:55:17 -07:00
eric eb70337b00 [eric] mac: after a crash relaunch user sees a tiny 'we had a hiccup, sessions are still here' chip for 8s instead of nothing 2026-05-31 22:22:13 -07:00
eric f325bc28c3 [eric] mac: chromium occlusion-feature flag dodge plus a watchdog that quietly relaunches on crash (5 guards so it never false-fires) 2026-05-31 21:52:08 -07:00
eric 3b42f608ad [eric] fix: pin packaged frontend server to port 4173 so localstorage survives restart and onboarding doesnt retrigger every update 2026-05-31 18:09:36 -07:00
ciregenz 496bea736d [eric] win: match the legacy NSIS uninstall entry by DisplayName -like 'OpenSwarm*' (NSIS appends the version, exact match found nothing) 2026-05-30 03:03:49 -07:00
ciregenz 78eedf18c4 [eric] win: squirrel firstrun silently removes the legacy NSIS install (NSIS->Squirrel migration cleanup, deferred to quit, best-effort) 2026-05-30 01:17:10 -07:00
ciregenz abf2daf0da [eric] win: fold proven squirrel autoUpdater fixes into squirrel (non-throwing check, event-signature normalization, already-running guard) 2026-05-30 01:06:11 -07:00
ciregenz be8d6fd081 [eric] win: switch product to squirrel target + wire built-in autoUpdater on the RELEASES feed 2026-05-29 22:22:43 -07:00
ciregenz ac31593eda [eric] win: handle Squirrel install events so the app makes its Start Menu/Desktop shortcut 2026-05-29 19:41:03 -07:00
Eric 9aaf503b03 [eric] e2e: expose the redux store deterministically via webPreferences.additionalArguments, fix visibility capture (read the chromium trace from tracingComplete, resolve click targets to the control, drop the dead contextBridge ipc wrap), harden onboarding/settings/combinatorial specs and add multi-window-stress 2026-05-28 21:41:01 -07:00
Eric 6353bbddda [eric] electron+e2e: close the init-script race - main reads OPENSWARM_E2E env on startup and appends an --openswarm-e2e chromium switch, preload reads the switch BEFORE any page script parses and contextBridge-exposes __OPENSWARM_E2E__=true so the production store-on-window gate fires deterministically rather than racing addInitScript against bundle parse 2026-05-28 09:38:29 -07:00
Eric 7fb57cea5e [eric] electron: defer the preflight cache-write until both preflight finished AND backend-http-ready fired so a kill in the window between cannot leave a verdict=ok token that masks a real boot break on the next launch, plus honor settings.preflight_enabled and a deterministic installation_id-bucket cohort gate 2026-05-28 02:49:11 -07:00
Eric 1396372c8f [eric] electron: wire the preflight module into main next to logPreflight, honor OPENSWARM_DISABLE_PREFLIGHT=1 kill switch, fire async so it overlaps with backend spawn instead of adding to boot, emit a [preflight2] verdict line and fold the result into the boot beacon payload 2026-05-28 02:13:14 -07:00
Eric d4aa87a320 [eric] fix: fire the boot beacon only after backend-ready, not just first-paint, so it doesnt post into a dead socket 2026-05-27 19:11:12 -07:00
Eric 9990ab8e09 [eric] feat: add boot preflight diagnostics and a silent opt-out-honored fleet boot beacon 2026-05-27 19:11:12 -07:00
Eric ac6ae7c7ce [eric] diagnostics: time the boot + stamp the shipped commit into the log 2026-05-27 10:19:53 -07:00
Eric 9c1940077f [eric] diagnostics: add backend.log, handle backend spawn failures, force utf-8 in executor sandbox 2026-05-26 20:25:31 -07:00
Eric 440a3e22f6 [eric] windows: fix "backend crashed" by making the app pick a port that is genuinely free so it stops colliding with another program already on port 8324; bump 1.1.68 2026-05-26 14:17:12 -07:00
EricandClaude Opus 4.7 c0d0e012cc [eric] outputs/quit: reap app builder child processes before killing the backend on windows so nsis upgrades stop hitting "cannot be closed"; bump 1.1.67
- root cause: window-all-closed called killBackend() (windows: taskkill /F) BEFORE before-quit could POST /shutdown-all, so the backend was dead before it could run stop_all(), orphaning the bundled vite node.exe; a running node.exe locks its own image at resources\node\x64\node.exe, so the next nsis upgrade cannot overwrite it and surfaces appCannotBeClosed via the file-lock retry path (extractAppPackage.nsh / installUtil.nsh), not the name-based app-running check
- windows-only because mac's killBackend sends SIGTERM, which lets uvicorn run its lifespan shutdown -> stop_all(); only since 1.1.64 because app builder first started spawning these children on windows in bf6d7a9 (before that they died with WinError 2)
- fix: drop the premature killBackend() in window-all-closed (will-quit still kills the backend, now AFTER the reap) and raise the pre-quit reap budget from 2s to 10s to cover stop_all's parallel taskkill (up to 5s) + 3s SIGTERM grace
- mac unaffected: will-quit already kills the backend; the app reap simply runs explicitly via /shutdown-all now instead of riding on SIGTERM timing

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 13:19:11 -07:00
Eric 3509c08057 [eric] workflows: remove scheduled-tasks end-to-end (frontend pages+slice, backend app+routes, electron poller), keep dock chat; bump 1.1.64 2026-05-26 11:12:29 -07:00
Eric fc8c35e5e0 [eric] windows 1.1.60: revert installer to nsis to test if squirrel was the renderer-crash trigger 2026-05-26 01:20:20 -07:00
Eric 0076909145 [eric] windows 1.1.56 hotfix: webRequest.onHeadersReceived filter uses 'subFrame' (Electron camelCase) not 'sub_frame' (Chrome extension snake_case) — wrong name threw "Invalid type sub_frame" synchronously during app.whenReady, became an unhandledRejection, prevented the app from booting on 1.1.55 2026-05-25 22:51:34 -07:00
Eric b73f508755 [eric] windows 1.1.55: (a) textarea-aware editor read/write/clear helpers so Enter-to-send works on Windows where EditorSurface uses textarea instead of contentEditable (handleSend was reading .textContent which is empty on textarea); (b) gate BrowserCard webview behind !Windows so dashboard hydration no longer segfaults from webview tag commit (iframe fallback is now usable for most sites since we also strip X-Frame-Options and CSP frame-ancestors on sub_frame loads via session.webRequest.onHeadersReceived, scoped to http/https types:sub_frame so OAuth popups and deep links keep their security headers); (c) gate onboarding video autoPlay on Windows so panel mount does not trigger the autoplay+animation crash; Mac path untouched everywhere 2026-05-25 22:29:17 -07:00
Eric 0bec1ea268 [eric] windows: serve packaged frontend via embedded http://127.0.0.1 server instead of file:// since dev mode (http origin) never crashed while packaged (file://) consistently 0xC0000005 segfaulted on chat/dashboard mount, confirming file:// origin is the actual native-crash trigger on Electron 40 CastLabs Chromium 144; revert disableHardwareAcceleration to keep GPU perf since the fault was never GPU-side; retag v1.1.44 2026-05-25 18:40:06 -07:00
Eric 9a6956477f [eric] windows: app.disableHardwareAcceleration() since dropping the gpu-blocklist override alone did not stop 0xC0000005 renderer crashes on chat/dashboard mount, so the native segfault is in the GPU process itself not just blocklist-bypass paths; software rasterization is slower but neutralizes the entire GPU-side native-crash class; win32 only, mac is unaffected; retag v1.1.44 2026-05-25 18:15:03 -07:00
Eric bfe59e52b0 [eric] windows: drop ignore-gpu-blocklist + enable-gpu-rasterization + enable-zero-copy since Crashpad confirms every renderer crash is STATUS_ACCESS_VIOLATION 0xC0000005 with no JS cause, classic blocklisted-driver segfault pattern on Electron 40 CastLabs Chromium 144; respecting the blocklist lets Chromium fall back to software rasterization on affected GPUs; retag v1.1.44 2026-05-25 17:49:12 -07:00
Eric 099a0c69e7 [eric] diag: max-coverage logs (crashReporter for native minidumps, main-process uncaughtException + unhandledRejection + child-process-gone + preload-error, full render-process-gone details, safe sendToRenderer, every ipcMain.handle entry, BrowserCard / WorkflowCard render, AgentChat before-jsx) so the next renderer crash leaves a complete trace; retag v1.1.44 2026-05-25 17:29:40 -07:00
Eric d27f289cea [eric] windows: fix UA-spoof leak onto recreated main window + add diag logs across preload, createWindow, recreateMainWindow, resumeSession, launchAndSendFirstMessage, AgentChat, WebSocketManager so packaged-build stderr captures the chat-spawn crash trail 2026-05-25 16:06:58 -07:00
Eric e7a09c9568 [eric] windows: fix preload race that crashed renderer on chat spawn
preload.js awaited two ipcRenderer.invoke calls before exposing
window.openswarm. Renderer code running in the gap saw the global
undefined: BrowserCard fell back to iframe mode (grey panel on sites
with X-Frame-Options), and chat-spawn calls to getAuthToken threw at
mount, crashing the renderer on Electron 40 + Windows.

Only bit Windows post-lazy-boot (ddd82ef): startBackend now loads main
while preload runs. Mac lacks the downstream native crash trigger;
pre-lazy Windows had idle IPC at preload time.

Replace awaits with sendSync against new ipcMain.on mirrors.
backendPort is assigned before any window exists, so sendSync at
preload time always finds a real value.
2026-05-25 15:45:37 -07:00
Eric 6777d45d1c windows: stop killing app on renderer crash; recreate window instead of reload
The render-process-gone handler called mainWindow.reload() to recover from
renderer crashes (e.g. WebGL / native / OOM in chat-spawn flows). On the
Electron 40 CastLabs build the reload re-registers a session/webview observer
that Chromium base/observer_list.h:318 refuses to add twice. The DCHECK
aborts the entire main process with exit 3, taking the app down whenever the
renderer dies.

Recreate the BrowserWindow instead: a fresh webContents has no duplicate
observers to add. The closed handler is identity-checked so the old window
teardown does not null out the new mainWindow reference.

When the 3-in-60s crash cap trips we now surface a native dialog (Reload /
Quit) instead of leaving a stuck dead window. Native dialog runs outside the
render-process-gone call stack, so its Reload button cannot itself reproduce
the DCHECK.

Bumps to 1.1.43 (re-cutting the deleted release draft).
2026-05-25 15:14:29 -07:00
ciregenz 846ee3bb01 [eric] workflows: auto-fit card height, drop stray step bands, fix active-poll 401 + view dead-ends 2026-05-25 12:22:25 -07:00
ciregenz 083d70def5 [eric] workflows: merge scheduled-tasks onto dev, re-home dashboard + fix backend imports 2026-05-24 23:41:53 -07:00
ciregenz 4c5457c751 [eric] onboarding: crash can't blank app; isolate boundary + dismiss + renderer reload 2026-05-23 19:16:04 -07:00
ciregenz ea35db7b55 [eric] workflows: port electron lifecycle from dev (drain on quit + updater veto) 2026-05-21 22:29:18 -07:00
ciregenz 08986dfb6d [eric] windows: switch installer to squirrel target + split auto-updater (exp.2) 2026-05-21 15:19:52 -07:00
ciregenz ddd82ef239 [eric] windows: lazy backend boot, render in parallel with python cold-start (exp.2) 2026-05-21 13:52:54 -07:00
ciregenz 47c8f8f2a9 [eric] windows: prewarm Defender on install (exp.1) 2026-05-21 11:57:36 -07:00