ciregenz and Claude Opus 5
18b83d9697
[eric] build: the signing preflight must not assume a keychain exists
...
The pin added earlier read the local keychain unconditionally, which was right
for publish.sh and wrong for release-macos.yml: on CI the cert arrives as a
base64 .p12 in CSC_LINK and electron-builder imports it into a temporary
keychain LATER than this preflight runs, so the probe would have found nothing
and aborted every CI mac build before it started. Fixed by branching on where
the cert actually comes from -- keychain locally, the .p12 itself on CI -- and
running the profile check against whichever cert that resolves to, since both
sources can drift from the embedded profile.
Verified with controls on both paths: the .p12 reader returns the true SHA-1 of
a synthetic cert and returns nothing (rather than a bogus hash) under a wrong
password, and the local path still passes against the live cert and profile.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 11:49:01 -07:00
ciregenz and Claude Opus 5
e15b0dc8a1
[eric] build: prove the signing identity before packing, not after
...
find-identity reports five entries all named "Developer ID Application: Haik
Decie (Y26NUZH4NG)": one live cert and four copies of the one whose private key
died with the old Mac. The dead copies still report valid and only fail at the
moment they are asked to sign, so auto-discovery was a coin flip between a real
build and a crash forty minutes into packing a 4.8 GB .app. Pin by SHA-1, then
spend one scratch signature proving the key is actually usable.
The profile check is the same lesson applied to a quieter failure. entitlements
request keychain-access-groups, which macOS honors only when the embedded
profile lists the very cert that signed the app. A profile issued for the
previous cert signs without one complaint and then loses passkeys and Touch ID
at runtime: a green build that ships broken. Verified with both controls, the
old profile fails against the new cert and passes against its own.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 11:36:34 -07:00
ciregenz
50c5544494
[eric] apps: the bundled python keeps ensurepip so app-backend venvs are real, and a hollow venv can never reach an app
2026-08-14 12:27:42 -07:00
ciregenz
9663f91879
[eric] smoke: assert Gatekeeper would actually LAUNCH the app, and surface an unsigned DMG wrapper
2026-08-13 06:28:21 -07:00
ciregenz
58656efe5f
[eric] smoke: refuse to run when :8324 is already taken, or a stray backend answers for the app under test
2026-08-12 22:26:18 -07:00
ciregenz
c7c71b6ea0
[eric] build: the cancel trap fires only on INT/TERM and walks the tree; the EXIT variant flipped a green build's exit code to 1 under set -e
2026-08-11 10:57:14 -07:00
ciregenz
a7c1a8256e
[eric] build: a cancelled build reaps its whole process tree, so a killed run no longer orphans a 7za holding a 300MB archive for hours (ENG-247)
2026-08-11 06:33:51 -07:00
ciregenz
09df1c2d17
[eric] build: the webapp-template node_modules archive skips when already built for the digest, so an interrupted build stops re-running the 22s npm install every restart
2026-08-09 17:04:58 -07:00
ciregenz
a12047ae66
[eric] apps: the full tool-ui widget set is vendored into every app workspace behind an @toolui alias, deps exact-pinned to the host's locked versions
2026-08-08 01:22:43 -07:00
ciregenz
c0c190987e
[eric] qa: the perf gate measures main-thread blocking at mount, the class every other gate slept through
2026-08-07 13:19:13 -07:00
ciregenz
433a22d081
[eric] qa: a dead-control sweep clicks every control and fails when nothing happens
2026-08-07 11:55:44 -07:00
ciregenz
926a146d97
[eric] scripts: verifier forces overflow and both 401 shims, so silent recoveries show up in the ledger
2026-08-07 09:58:09 -07:00
ciregenz
b7366cce49
[eric] scripts: the verifier drives the CDP proofs too, so dictation, INP and idle rAF land in the same scoreboard
2026-08-07 09:48:12 -07:00
ciregenz
a565d5638c
[eric] scripts: the 1.7.5 verifier forces two failure classes live and stops gating boot on a baseline that never reproduced
2026-08-07 09:39:29 -07:00
ciregenz
8888c6856c
[eric] scripts: one command re-checks the 1.7.5 contract and prints a scoreboard
2026-08-07 09:08:04 -07:00
ciregenz
887a6a5531
[eric] bundles: youtube MCP drops the googleapis monolith for a one-API shim, 32.6M to 3.7M, handshake-verified
2026-08-06 11:20:53 -07:00
ciregenz
99d8ef8314
[eric] voice: fn-watcher compiles per-arch into build-staging and ships via extraResources
2026-08-05 21:12:15 -07:00
ciregenz
50d6010862
[eric] merge eric/browser-merged: browser hangs, wrong-surface sends, and measured latency
2026-08-03 12:22:10 -07:00
ciregenz
28f5ca29e6
[eric] release: the mac smoke ran the app off the read-only dmg, so the updater killed it mid-boot
2026-08-03 10:04:17 -07:00
ciregenz
2d93b899fa
[eric] release: read the Authority line, --requirements never contains the signer name
2026-08-02 22:57:21 -07:00
ciregenz
ae2f5e0f3d
[eric] release: smoke the packaged Mac build, including whether it contains the fixes it claims
2026-08-02 21:51:52 -07:00
ciregenz
06a4d3f29a
[eric] build: signup already prompts for the code, so stop asking twice
2026-08-02 19:08:22 -07:00
ciregenz
45e9c98826
[eric] build: one-time EVS setup so a Mac release stops stalling on missing Widevine creds
2026-08-02 19:01:28 -07:00
ciregenz
fb3ec15105
[eric] merge: bring eric/dev onto the browser v3 branch (7 conflicts resolved, gates green)
2026-08-02 16:14:53 -07:00
ciregenz
a7f1fbe62c
[eric] browser: say which runs the latency report skipped and why
2026-08-01 00:58:53 -07:00
ciregenz
abdf5d2fd7
[eric] browser: report where a run's time goes, so a speed change is judged on the part we own
2026-08-01 00:56:00 -07:00
ciregenz
955abfa69c
[eric] canary: cleanup passes on the outcome (marker gone), not on which code path deleted it
2026-07-31 01:15:38 -07:00
ciregenz
0d826b5daa
[eric] build: drop foreign-arch native prebuilds from the app, with a release gate to keep them out
2026-07-31 00:05:54 -07:00
ciregenz
3d5c287139
[eric] merge: bring eric/browser onto eric/dev (30 conflicts resolved, gates green)
2026-07-30 13:18:11 -07:00
ciregenz
df0e4a2393
[eric] merge eric/onboarding into eric/dev; version 1.6.0
2026-07-28 22:20:34 -07:00
ciregenz
35a281f4ad
[eric] voice: bundle per-arch whisper-server into the mac build (pinned v1.7.6, static + non-system-dylib gate; model stays the proven first-run download)
2026-07-28 17:27:05 -07:00
ciregenz
bf49c2c528
[eric] win: sign the bundled claude.exe (AV-quarantine class) + require-signed gate + post-sign smoke
2026-07-28 15:49:59 -07:00
ciregenz
fe29551d74
[eric] voice: native trackpad haptics addon (NSHapticFeedbackManager, mouseclamp pattern) taps on dictation start/stop
2026-07-28 15:01:59 -07:00
ciregenz
b8122d5649
[eric] build: uv presence check requires a universal binary, a thin dev uv no longer kills the dual-arch cut mid-build
2026-07-26 21:36:48 -07:00
ciregenz
243207e9b9
[eric] build: per-arch bundled python-env; x64 DMG shipped arm64 python, bricking Intel Macs
2026-07-06 14:52:26 -07:00
ciregenz
a0947fe13e
[eric] build: VMP_REQUIRE_SIGN=0 override for cred-less local cuts (CI keeps the hard gate)
2026-07-05 16:53:00 -07:00
ciregenz
0680c873dd
[eric] merge #117 : VMP-sign packaged builds so Widevine playback works
2026-07-05 16:14:57 -07:00
ciregenz
9603912237
[eric] merge eric/app-ux: app builder UX + browser tab drag-out + CreateApp fold-in
2026-07-02 16:10:56 -07:00
ciregenz
01e70fdd40
[eric] apps: restart.sh lets the agent bounce its own runtime (sentinel watched by the harness)
2026-07-02 02:48:21 -07:00
ciregenz
85d77ca552
[eric] apps: multiple independent instances per app (own runtime + ports; alt-click or paste to open)
2026-07-02 01:24:22 -07:00
ciregenz
6c916e633d
[eric] build: ship mac en.lproj locale pak + blocking verify gate (passkey suicide fix)
2026-07-02 00:45:27 -07:00
ciregenz
f19284a456
[eric] apps: card Preview/Code/Terminal switcher, terminal hard-reload, agent-readable terminal.log
2026-07-02 00:35:13 -07:00
ciregenz
77ff2b79e9
[eric] debugger: swap vendored debugger/ for PyPI swarm-debug in app workspaces
2026-07-02 00:16:53 -07:00
abccodes
fe52665193
[aidan] fix/spotify-drm: VMP-sign packaged builds so Widevine playback works
2026-07-01 18:28:53 -07:00
ciregenz
a2b8a2c335
[eric] build: bundle npm with node so packaged apps can install custom deps (fixes imported backend apps not starting)
2026-06-26 05:14:04 -07:00
ciregenz
1767389cbb
[eric] browser: leading-_ -> p_/P_/public for module functions+constants+state across browser subsystem; promote cross-file symbols public (detect_loop, BROWSER_HISTORY, TRUSTED, etc.), align analyze-browser-metrics.py + tests
2026-06-23 19:37:40 -07:00
Eric
1a559deadf
[eric] perf: revert #9 items 1+3 build wiring (measured: no cold benefit)
...
- zip-stdlib + pyc-only gave no cold improvement (cold is native-binary-scan-bound)
- keep build lean; scripts stay as drafts; cold lever is the opt-in defender exclusion (item 5)
2026-06-17 01:50:18 -07:00
Eric
b22f46be47
[eric] perf: enable #9 items 1+3 in the windows build (zip stdlib + pyc-only deps)
...
- shrinks python-env 13554 -> 9287 files (~31%); validated: backend.main imports clean with both applied
- targets the python-env Defender scan that dominates the 22.5s cold start
- guarded (skips if python313.zip already present); non-fatal
2026-06-17 01:08:00 -07:00
Eric
41f812f7d6
[eric] app-builder: ship webapp node_modules as .tar.gz, not pre-extracted (build perf)
...
- pre-extracting ~30k files into resources blew the windows build past 50min (squirrel lzma on tiny files) + bloated the installer
- revert step 4b to a single node_modules.<digest>.tar.gz (mirrors mac); runtime extracts to warm cache in the background at startup (off the create path)
- runtime _bundled_extracted_modules() stays as a harmless fallback (returns None -> tar path)
2026-06-16 23:44:21 -07:00
Eric
947a6c1db5
[eric] perf: draft opt-in defender exclusion helper for windows cold-start ( #9 item 5)
...
- scripts/add-defender-exclusion.ps1: dry-run default; -Apply/-Remove (admin); -Status
- excludes %LOCALAPPDATA%/%APPDATA%/~ openswarm dirs; kills defender cold-scan entirely
- security-sensitive: opt-in only, never silent; settings-toggle design documented, not auto-applied
2026-06-16 22:23:11 -07:00