Commit Graph
2258 Commits
Author SHA1 Message Date
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
Eric 9605454ebf [eric] windows: onboarding cursor eases via cursorStore-driven css transition (snaps while tracking, eases on moveTo) to match the mac spring 2026-05-26 04:16:57 -07:00
Eric 529d350cae [eric] windows 1.1.63: drop the textarea + file-input squirrel-era ablations, restore contentEditable @-mention UI and the attach
paperclip on windows, plus a cubic-bezier cursor transition
v1.1.63
2026-05-26 02:42:56 -07:00
Eric da61377d8c [eric] windows 1.1.62: cursor and popups follow target on windows via store-driven style.transform v1.1.62 2026-05-26 02:10:56 -07:00
Eric 31a90502c7 [eric] windows 1.1.61: restore AgenticCursor render on Windows now that the framer-motion shim makes motion.div safe v1.1.61 2026-05-26 01:42:05 -07:00
Eric fc8c35e5e0 [eric] windows 1.1.60: revert installer to nsis to test if squirrel was the renderer-crash trigger v1.1.60 2026-05-26 01:20:20 -07:00
Eric bb2de72f6f [eric] windows 1.1.59: production webpack and framer-motion shim v1.1.59 2026-05-26 00:29:17 -07:00
Eric 7407e6cb37 [eric] windows 1.1.58: three fixes — (a) revert file-input restore: <input type="file"> is ALSO a Windows commit-phase crasher just like the contentEditable was, both must stay ablated, drag-and-drop still works; (b) nuclear-disable OnboardingRoot on Windows since the AgenticCursor visual ablation alone was insufficient (Onboarding panel/director/popups have additional Framer Motion + portal subtrees that segfault on commit) — user loses the guided tour on Windows but the rest of the app works; (c) remove iframe sandbox from BrowserCard so sites that need full-document access can render (Google specifically still appears grey because they run JavaScript anti-iframe detection that blanks document.body when window.top !== window.self, which header stripping cannot defeat; most non-Google sites should render fine now); Mac path untouched v1.1.58 2026-05-25 23:47:14 -07:00
Eric aff9ccf98a [eric] windows 1.1.57: four fixes — (a) textarea Enter-to-send now actually clears the input (missed editor.innerHTML='' at ChatInput.tsx:181 in the post-send path); (b) textarea draft restore (useDraftLoad) routes through .value instead of innerHTML on Windows so a saved draft repopulates the input on remount; (c) restore the <input type="file"> + attach button on Windows since the original 1.1.54 crash root cause was the contentEditable TSF init not the file input — replacing contentEditable with textarea was the actual fix, file input was over-ablated; (d) relax CSP frame-src to allow http:/https: so BrowserCard iframe can render external sites; (e) gate AgenticCursor's portaled Framer Motion infinite-loop animation on Windows so onboarding panel commit no longer 0xC0000005 segfaults; Mac path untouched v1.1.57 2026-05-25 23:22:06 -07:00