Commit Graph
462 Commits
Author SHA1 Message Date
Eric aa0ace4363 [eric] test: make the boot checks mutation-testable and prove every guard fires on a break 2026-05-27 19:11:11 -07:00
Eric ecb63478f3 [eric] build: add the mcp sdk dep plus lockfile the gui hand needs 2026-05-27 19:11:11 -07:00
Eric 8bfeb803f0 [eric] test: add a selftest that proves the gui hand can launch, drive, and read the real app 2026-05-27 19:11:11 -07:00
Eric e050cd6608 [eric] test: add a playwright hand to drive the packaged app (launch, click, type, screenshot, read-dom, read-log) 2026-05-27 19:11:11 -07:00
Eric 5a1d0362ef [eric] test: fold the agent-turn check into the run-everything command so it auto-skips unless opted in 2026-05-27 15:41:13 -07:00
Eric 5d8672b9a0 [eric] test: add a check that runs one real agent turn on your own login and proves a genuine reply 2026-05-27 15:41:13 -07:00
Eric 587a7d93d2 [eric] test: add one command that runs every packaged-app check and tallies the score 2026-05-27 15:35:08 -07:00
Eric 993d5391db [eric] test: add a check that auth, 9router, and the update feed are actually wired up 2026-05-27 15:35:08 -07:00
Eric df747893c3 [eric] test: add a check that the app shrugs off a busy port and a double-click 2026-05-27 15:35:08 -07:00
Eric 2ae8bce3d6 [eric] test: add a check that says whether the build is really signed or honestly admits it isnt 2026-05-27 15:35:08 -07:00
Eric 992d075cc0 [eric] test: pull the app-launch plumbing into a shared lib so each check stays tiny 2026-05-27 15:35:08 -07:00
Eric 0531f59fa6 [eric] test: add a script that launches the packaged app and confirms it boots, paints, and serves (no browser automation) 2026-05-27 15:01:22 -07:00
Eric 56282c5080 [eric] build: stop shipping the dead google client id/secret that nothing reads at runtime 2026-05-27 14:40:04 -07:00
Eric f133b44a12 [eric] ci: skip the heavy e2e build on docs-only pushes 2026-05-27 13:05:03 -07:00
Eric 74ffff4148 [eric] docs: add the secret rotation + history-purge runbook so the leaked creds can actually be killed 2026-05-27 13:05:03 -07:00
Eric af16274934 [eric] ci: auto-verify both update feeds agree + resolve whenever a release is published 2026-05-27 13:02:36 -07:00
Eric 35280166f1 [eric] ci: drop the retired windows-2019 image, add an opt-in self-hosted win10 lane instead 2026-05-27 13:01:45 -07:00
Eric b544a9264e [eric] perf: strip type stubs + unix build leftovers from the bundled python so defender frisks fewer files 2026-05-27 13:00:15 -07:00
Eric 0d4dbd35df [eric] ci: add a windows-2019 (win10-era kernel) runner to the e2e matrix so older windows is covered too 2026-05-27 12:51:46 -07:00
Eric c8e781cc83 [eric] build: make the python lock universal so the mac build stops trying to install windows-only pywin32 2026-05-27 12:28:40 -07:00
Eric e2f1e89cb8 [eric] build: import the notarize esm module lazily so electron-builder stops choking on every non-mac build 2026-05-27 12:28:40 -07:00
Eric 7dcb99cdec [eric] ci: run the e2e matrix on eric/lock pushes so the real app boot is verified on win + mac 2026-05-27 12:02:51 -07:00
Eric 33d2797d8f [eric] ci: drop the half-baked windows-artifact-smoke stub since e2e already smokes the real packaged app 2026-05-27 11:25:10 -07:00
Eric 6d2bf4d4db [eric] ci: gitleaks-ignore the known historical secrets so our branch stops failing on leaks it didnt add 2026-05-27 11:03:43 -07:00
Eric de599151f2 [eric] docs: move the release runbook, checklist + squirrel plan into docs/ so root stops feeling cluttered 2026-05-27 11:03:43 -07:00
Eric bd09778e1a [eric] build: commit the lockfiles npm ci needs + ignore the build-info stamp 2026-05-27 10:19:54 -07:00
Eric 0b72102adc [eric] build: install python from the lock + slim the bundled stdlib 2026-05-27 10:19:54 -07:00
Eric 237738d928 [eric] build: pin uv + npm ci the builders + add an opt-in squirrel target 2026-05-27 10:19:54 -07:00
Eric 46c7059802 [eric] ui: show the build commit in settings about so a screenshot says what shipped 2026-05-27 10:19:54 -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 1fc4ab9163 [eric] test: drive the real packaged app on mac + windows to catch breakage early 2026-05-27 10:19:53 -07:00
Eric b7cb505561 [eric] docs: add the squirrel-vs-nsis race plan so we only swap if its faster 2026-05-27 10:19:53 -07:00
Eric c957716e0c [eric] ci: dont call anything latest until both update feeds agree + resolve 2026-05-27 10:19:53 -07:00
Eric 202c656b15 [eric] ci: build the mac app in the cloud so both platforms come from one commit 2026-05-27 10:19:53 -07:00
Eric 54a7cb96b4 [eric] ci: boot the packaged backend in ci + check its health and agent endpoints 2026-05-27 10:19:53 -07:00
Eric 6230d5685b [eric] docs: add the release runbook so cutting a build isnt tribal knowledge 2026-05-27 10:19:53 -07:00
Eric 0d561fa49d [eric] perf: stopwatch the boot + headcount every file we ship 2026-05-27 10:19:53 -07:00
Eric 6a0e437c8c [eric] build: freeze python deps in a hashed lock so pip cant sneak one in 2026-05-27 10:19:52 -07:00
Eric 4f61b6cd49 [eric] ci: pin build node to 20.18.1 to match the runtime we ship 2026-05-27 10:19:52 -07:00
Eric 30914ae40c [eric] build: pin electron-builder + deps to exact versions so the packager cant drift 2026-05-27 10:19:52 -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 ca5d69301d [eric] app builder: fix windows-built apps failing by always creating the workspace .env (the windows build dropped the .env.example it seeds from) and writing app files as utf-8 (windows cp1252 choked on arrows and chess pieces); stays on 1.1.69 to rebuild only the windows installer v1.1.69 2026-05-26 17:40:51 -07:00
Eric 8c5b3bdf64 [eric] ui: fix the windows guide cursor jumping instead of gliding (it was being rebuilt from scratch every frame) and remove the new chat / history pills above the composer; bump 1.1.69 2026-05-26 15:41:13 -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 v1.1.68 2026-05-26 14:17:12 -07:00
EricandClaude Opus 4.7 45a97aa05f [eric] windows: stop nsis upgrades hitting "cannot be closed" by reaping app builder children on quit and fixing the dead orphan-killer; bump 1.1.67
- root cause: window-all-closed called killBackend() (windows: taskkill /F) BEFORE before-quit could POST /shutdown-all, so the backend died before running 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, letting uvicorn run its lifespan shutdown -> stop_all(); only since 1.1.64 because app builder first spawned these children on windows in bf6d7a9 (before that they died with WinError 2)
- electron/main.js: 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 grace
- electron/build/installer-recovery.nsh: replace the customInit orphan-killer (wmic, removed from windows 11 24H2 so it silently no-oped) with a path-scoped powershell Stop-Process; backtick-delimited for valid nsis tokenization, verified the macro compiles with makensis + the bundled nsExec plugin
- mac unaffected: will-quit already kills the backend; the app reap just runs explicitly via /shutdown-all now instead of riding on SIGTERM timing; the .nsh path is windows-only

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 13:30:05 -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>
v1.1.67
2026-05-26 13:19:11 -07:00
EricandClaude Opus 4.7 cf74ada3c2 [eric] auth: generate installation_id at backend startup so first-launch sign-in always has a non-empty install_id; bump 1.1.66
- installation_id was created lazily on the first analytics submission; 1.1.64 removed the workflows startup poller, which was the early backend ping that used to generate it, so on a clean install the sign-in window built its google/email oauth url with an empty install_id and the cloud rejected the start
- now generated in main.py at the same pre-bind moment as the auth token, so GET /api/settings carries it from the very first fetch (no dependency on analytics timing)
- idempotent uuid4 hex, only written when missing; lazy path kept as fallback; platform-agnostic so mac is unchanged except the id exists slightly earlier

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v1.1.66
2026-05-26 12:25:31 -07:00
Eric 40b7c19b75 [eric] onboarding cursor: restore writePos-after-spring order so mac stays byte-identical (windows still eases via no-op controls + css transition); bump 1.1.65 v1.1.65 2026-05-26 11:17:01 -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 v1.1.64 2026-05-26 11:12:29 -07:00
Eric bf6d7a9235 [eric] app-builder: cross-platform workspace runtime so apps build and run on windows (resolve bash/python/npm, venv Scripts layout, bundled-node PATH, online npm retry) 2026-05-26 04:18:38 -07:00