Commit Graph
2983 Commits
Author SHA1 Message Date
ciregenz 3aa50b6aef [eric] canvas: stopping a workflow run keeps its card, because you stopped it to read it (ENG-420) 2026-08-27 18:19:00 -07:00
ciregenz 3ccbeb680d [eric] chat: the Other... box is visible and appears when you pick it, not after Enter (ENG-419) 2026-08-27 17:11:23 -07:00
ciregenz b3f59c4324 [eric] agents: the prefix mode is a type, so the ratchet's own assignment typechecks 2026-08-27 16:11:04 -07:00
ciregenz 1e27431e77 [eric] agents: one outputs scan per turn, and the spill comment stops claiming it bounds model context 2026-08-27 16:09:29 -07:00
ciregenz b5f7eb6516 [eric] canvas: the eviction fallback paints the tone the canvas averages, so the flash stops reading white (ENG-340) 2026-08-27 15:09:40 -07:00
ciregenz ee93672d26 [eric] web: a fetched page carries no appended instruction, because the model attributes it to the page (ENG-413) 2026-08-27 14:59:30 -07:00
ciregenz 5c47533d0b [eric] browser: a wedged app preview remounts its webview instead of being left stuck (ENG-402) 2026-08-27 14:41:22 -07:00
ciregenz 8e28c2706c [eric] chat: React is the only writer of streamed text, so an answer cannot corrupt itself (ENG-415) 2026-08-27 14:33:50 -07:00
ciregenz 4cb9662294 [eric] chat: a streamed answer cannot corrupt itself, and a long one never renders blank (ENG-415) 2026-08-27 14:23:31 -07:00
ciregenz e59b6efae1 [eric] agents: a chat can edit the app it built, without the user re-selecting the card (ENG-416) 2026-08-27 14:20:05 -07:00
ciregenz fd2abfa467 [eric] tests: the direct-key env test pins the OS-root export so it stays exact on every platform 2026-08-27 14:08:49 -07:00
ciregenz 54ab6863ab [eric] tls: the Node children get the OS roots, so a proxy or endpoint-tool root no longer kills every model call (ENG-408) 2026-08-27 14:01:30 -07:00
ciregenz a1e1c4224e [eric] agents: the dead_lane fault follows the arming convention and is registered in the wiring map 2026-08-27 12:56:29 -07:00
ciregenz b1ccba5aec [eric] agents: OSW_FAULT=dead_lane makes the preflight decision drillable without touching a real credential 2026-08-27 12:50:50 -07:00
ciregenz 0cffa158c7 [eric] agents: an elision carries no path, because an instruction inside tool output reads as an injection 2026-08-27 12:26:24 -07:00
ciregenz 50b9f09302 [eric] tests: the direct-key env test follows the tool-search flag onto every lane 2026-08-27 12:14:02 -07:00
ciregenz bbec021610 [eric] agents: ENABLE_TOOL_SEARCH is set on every lane, not four of eight (ENG-394) 2026-08-27 12:07:57 -07:00
ciregenz 71a826c41d [eric] agents: the mid-turn breaker says whose session it cannot protect instead of going quiet (ENG-391) 2026-08-27 12:06:07 -07:00
ciregenz 71eecf5cdc [eric] agents: a shaped tool result names the file we already wrote, and where the cut starts 2026-08-27 12:03:13 -07:00
ciregenz ecea6b3844 [eric] agents: preflight bounces the router but never declares a credential dead, because it has not dispatched (ENG-414) 2026-08-27 11:59:53 -07:00
ciregenz 02da919068 [eric] agents: a turn ends with a sentence, because the prompt taught the tool-tail our detector flags 2026-08-26 16:59:42 -07:00
ciregenz a84b1b5946 [eric] browser: a card's cached transcript belongs to the chat that produced it, not the card (ENG-403) 2026-08-26 13:56:21 -07:00
ciregenz a340f1d67d [eric] browser: a run that read nothing back says its specifics are unverified (ENG-404) 2026-08-26 13:53:39 -07:00
ciregenz 7a9cb01ea7 [eric] tests: the bundled-model assertion follows the fetch, not the retired warn-and-continue branch 2026-08-26 13:50:16 -07:00
ciregenz 895c5d49f4 [eric] tests: os_trust liveness assertions read the logger directly, so app import order cannot silence them 2026-08-26 13:37:37 -07:00
ciregenz 16f87d8bc9 [eric] router: a stale-router kill is scoped to our own port and never fires under test (ENG-393) 2026-08-26 13:25:48 -07:00
ciregenz dc2a9fbb8d [eric] browser: a failed dispatch says whether anything changed, so a caller can branch instead of guessing (ENG-402) 2026-08-26 13:22:25 -07:00
ciregenz 492a28a2b4 [eric] agents: a policy-block failover borrows the user's API key for one ask, not forever (ENG-383) 2026-08-26 13:14:41 -07:00
ciregenz 2a2ab3a520 [eric] build: the dictation model fetches itself, so a release cut can never silently ship without it 2026-08-26 13:11:42 -07:00
ciregenz 38c5bfe072 [eric] crash: safe mode is enforced in main, and offscreen windows are never torn down mid-call (ENG-400) 2026-08-26 13:05:09 -07:00
ciregenz 52d764f155 [eric] canvas: sub-agent arrows pick their anchors like every other tether, and one height formula (ENG-412) 2026-08-26 12:56:07 -07:00
ciregenz 5617e8b19e [eric] agents: the CLI's prose policy refusal is the provider talking, not the agent's answer (ENG-411) 2026-08-26 12:52:03 -07:00
ciregenz 6b43b820bb [eric] agents: a delegated child is told its step budget and running out is not an error (ENG-409) 2026-08-26 12:47:14 -07:00
ciregenzandClaude Opus 5 e59ba8c561 [eric] canvas: an app gets the same surface contract as a browser, in the slot, the embed and the pill (ENG-410)
Three symptoms, one asymmetry: the app surface was copied from the browser surface and the copy was incomplete.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-26 12:42:01 -07:00
ciregenzandClaude Opus 5 66ca97d773 [eric] dictation: ship the model in the app so the first fn press never waits on a download
Costs ~181MB in the DMG; the alternative is pressing fn into silence while 190MB fetches. Checksum-gated so a truncated model fails the build instead of dying at the first press.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-25 14:56:19 -07:00
ciregenz db0912d22d [eric] auth: backend https trusts the OS root store, ending the Windows sign-in 502 (ENG-407) 2026-08-25 11:38:46 -07:00
ciregenzandClaude Opus 5 5335c98b8a [eric] agents: shaping handles the shape Read actually emits, and an unknown big payload says so
The live drill caught what 18 green unit tests could not: Read nests its body under file.content, so a 34KB file reached the model untouched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-25 08:12:45 -07:00
ciregenzandClaude Opus 5 df85e9ea86 [eric] tests: the surface a test needs is public, not reached into
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-25 01:59:48 -07:00
ciregenzandClaude Opus 5 164956965e [eric] tests: follow the code the file splits moved, without loosening any assertion
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 23:15:03 -07:00
ciregenzandClaude Opus 5 857a374bf0 [eric] tests: the innocent case for every guard added since 1.7.9
A fix that fires beyond its intent is a trade, not a win. Each control was verified to fail with its guard removed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 23:13:44 -07:00
ciregenzandClaude Opus 5 fb92d785b4 [eric] agents: a human's Stop outranks every recovery path, checked before any of them (ENG-402, ENG-369)
The liveness door resurrected stopped sessions; a stopped browser agent looks exactly like a dead sidecar.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 22:59:44 -07:00
ciregenzandClaude Opus 5 10084b1b28 [eric] agents: split the delegation backstop and the quit telemetry into their own files
Both host files crossed the 300-line ceiling; the seams were already there (quick-tool wedge vs delegation backstop, ladder logic vs its telemetry).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 22:07:31 -07:00
ciregenzandClaude Opus 5 b2ae28bd8c [eric] agents: record the one nudge outcome the user actually sees (ENG-399)
1,695 nudges were counted on one install and zero outcomes, so "how often does the recovery fail" was unanswerable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 22:02:03 -07:00
ciregenzandClaude Opus 5 2b2c08a541 [eric] chat: the MCP suggestion card reserves room for its dismiss X, so Activate cannot sit under it (ENG-405)
Reported by Haik Decie. Padding derived from the X's own footprint so the two cannot drift apart.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 21:30:11 -07:00
ciregenzandClaude Opus 5 8761320213 [eric] agents: a frozen sidecar can no longer hang a delegation forever (ENG-402)
Exempt from the 25s wedge deadline was silently also exempt from the 300s ceiling; the discriminator is liveness, not time. Reported by Haik Decie.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 21:27:13 -07:00
ciregenzandClaude Opus 5 51296ed24b [eric] docs: the asar trap, because gitignored and unpacked are different lists
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 13:27:55 -07:00
ciregenzandClaude Opus 5 c0bf5156e6 [eric] release: the 181MB dictation model is a runtime download, not something to ship in app.asar
Gitignored is not the same as excluded from electron-builder; the two lists had diverged, costing 175MB on every auto-update.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 12:53:12 -07:00
ciregenzandClaude Opus 5 dc014c5377 [eric] skills: an export never ships a venv, and a licence id is not an API key (ENG-401)
Both halves diagnosed by Haik Decie.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 11:38:26 -07:00
ciregenzandClaude Opus 5 2e8d431118 [eric] agents: a run's result is not a replay, so the final answer survives the trail (ENG-396)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 11:16:06 -07:00
ciregenzandClaude Opus 5 264f2ef6de [eric] agents: the nudge ladder's last rung is bounded by construction, and can never widen a ratchet (ENG-399)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-24 10:54:05 -07:00