ciregenz
b047e31abd
[eric] agents: a refusal guard may not eat a real answer; wording alone never destroys content (ENG-387)
2026-08-23 15:27:36 -07:00
ciregenz
8ed2330c76
[eric] agents: the two guards that could fail silently now declare themselves (ENG-388, ENG-386)
2026-08-23 13:19:26 -07:00
ciregenz
d4bfc122f0
[eric] agents: OSW_FAULT fires real provider failures on demand so the guards get drilled, not hoped for
2026-08-23 11:31:58 -07:00
ciregenz
7e4bb7a43b
[eric] agents: OSW_COMPACT_CEILING_TOKENS makes the mid-turn breaker drillable without a 180K turn
2026-08-22 21:55:05 -07:00
ciregenz
690da2940b
[eric] release: bump to 1.7.9-exp.1
2026-08-21 18:46:14 -07:00
ciregenz
628f6e57a0
[eric] dictation: the Accessibility check waits on the Input Monitoring request by callback, not line order (rdar://7381305)
2026-08-21 15:52:59 -07:00
ciregenz
07566a77e5
[eric] dictation: ask for Input Monitoring before any Accessibility check, or macOS never shows the prompt (rdar://7381305)
2026-08-21 15:50:14 -07:00
ciregenz
89f7621140
[eric] dictation: a denied watcher stays listed in the Input Monitoring pane instead of vanishing (ENG-360)
2026-08-21 14:45:26 -07:00
ciregenz
1947238dec
[eric] dictation: using dictation asks for the fn grant every time, not once per launch (ENG-360)
2026-08-21 14:30:31 -07:00
ciregenz
76ef467a6e
[eric] tests: bound the relay assertion on the region, not a magic char count
2026-08-21 14:16:01 -07:00
ciregenz
4be3f0fb7e
[eric] dictation: log the trigger path so a dead key can be told from an unpressed one
2026-08-21 14:15:01 -07:00
ciregenz
35a4b18647
[eric] dictation: fn recovers without a relaunch, and no OS is left with a silent dead key (ENG-360)
2026-08-21 13:51:09 -07:00
ciregenz
5e2fe299a3
[eric] dictation: a live fn watcher now MEANS a working tap, and a dead fn key says so (ENG-360)
2026-08-21 13:20:57 -07:00
ciregenz
05cd0f1990
[eric] agents: drop an unused import from the aging recap
2026-08-21 11:51:14 -07:00
ciregenz
df31e8d5d2
[eric] tests: the suite can never resume real chats with live credentials (ENG-388)
2026-08-21 11:51:14 -07:00
ciregenz
6cc705c0ee
[eric] models: only the catalog retires a pinned model, so a router bounce cannot move a chat vendors (ENG-386)
2026-08-21 11:51:14 -07:00
ciregenz
2c8ae9a3b8
[eric] agents: extraction-shaped handoffs and relayed refusals never reach the subscription lane (ENG-387)
2026-08-21 11:51:14 -07:00
ciregenz
2583c80f6c
[eric] agents: a session about to continue reports running, and releases it if the continuation dies (ENG-390)
2026-08-21 11:51:14 -07:00
ciregenz and Claude Opus 5
771a7243b0
[eric] agents: a silent quit rebuilds only when the rebuild would buy something (ENG-354)
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-21 10:29:56 -07:00
ciregenz and Claude Opus 5
da18c0a5ef
[eric] agents: the Resume chip is a human, so a stopped chat honours it (ENG-384)
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_018foyDoK19jjbYdudfzQVkZ
2026-08-21 08:07:55 -07:00
ciregenz and Claude Fable 5
f3e7f7b1af
[eric] release: bump to 1.7.8-exp.21
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-21 00:20:05 -07:00
ciregenz and Claude Fable 5
de70e9fe79
[eric] agents: a subscription-lane policy block fails over to the user's own API key (ENG-383)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-21 00:20:05 -07:00
ciregenz and Claude Fable 5
42e4f9116b
[eric] agents: transport heals respawn the CLI on the same transcript instead of rebuilding it (ENG-382)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-21 00:20:04 -07:00
ciregenz and Claude Fable 5
a4be8c469f
[eric] agents: the recap carries no model text, nudges are short and unlabeled (ENG-358)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-21 00:20:04 -07:00
ciregenz and Claude Fable 5
295a7b52e2
[eric] agents: a policy block ratchets the recap down instead of bricking the chat (ENG-358)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 23:44:44 -07:00
ciregenz and Claude Fable 5
e8dc7c5fdd
[eric] import: only markdown becomes a bare skill, and skills always confirm (ENG-376)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:49 -07:00
ciregenz and Claude Fable 5
5e0e89abe1
[eric] agents: a fresh heartbeat extends the unwedger to a 300s hard ceiling (ENG-368)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:49 -07:00
ciregenz and Claude Fable 5
e90abb7bfc
[eric] system: watchdog deaths blame no workflow, card tails not owed, 20s probe (ENG-366)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:49 -07:00
ciregenz and Claude Fable 5
1f1ce09d7a
[eric] agents: 401 needs auth context; answers can be blocks; quits forgiven (ENG-364/365)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:49 -07:00
ciregenz and Claude Fable 5
74d70de13f
[eric] workflows: a schedule switch never lies; writes roll back or serialize (ENG-375)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:48 -07:00
ciregenz and Claude Fable 5
fa9196c8af
[eric] signin: live port hand-off, stalled-wait retry, openswarm:// registered (ENG-381)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:48 -07:00
ciregenz and Claude Fable 5
3c24c10cbd
[eric] voice: prefetch the dictation model at boot so the first press never waits (ENG-380)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:48 -07:00
ciregenz and Claude Fable 5
6c14b2d65b
[eric] dictation: no cursor means your composer, not a new chat (ENG-378)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:48 -07:00
ciregenz and Claude Fable 5
326574b995
[eric] chat: the transcript follows the stream until the USER scrolls away (ENG-379)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:48 -07:00
ciregenz and Claude Fable 5
0ccc3af040
[eric] canvas: a resize ends when the hand lets go, webview or not (ENG-377)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01En8dRGsJPLrJCQBEkTH4Mp
2026-08-20 22:22:48 -07:00
ciregenz
8e0d10f49b
[eric] release: publish.sh sources gitignored .release.env (Apple + castlabs EVS) so a signed build never stalls on missing creds
2026-08-20 20:52:48 -07:00
ciregenz
672ba51592
[eric] import: a dropped screenshot no longer strands the Drop overlay; unsupported files are told so, and a file:// drop can never replace the app
v1.7.8-exp.20
2026-08-20 19:39:33 -07:00
ciregenz
3235324122
[eric] agents: a user's Stop or Close is final; no watchdog resend, disk reload, read, or late-booting child revives the card
2026-08-20 19:39:33 -07:00
ciregenz and Claude Opus 5
6edce86d68
[eric] browser: children survive turn 1 on every lane, never report "done" for nothing, tables render first try
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 18:16:51 -07:00
ciregenz
b14791074f
Revert "[eric] agents: Stop disarms every queued injection, so a stopped agent can never resurrect"
...
This reverts commit 332ae7d183 .
2026-08-20 16:13:50 -07:00
ciregenz
10bca6ba17
Revert "[eric] browser: a card the renderer parked is slow, not dead; parallel agents no longer ghost"
...
This reverts commit 6ed6206c7b .
2026-08-20 16:13:50 -07:00
ciregenz and Claude Opus 5
6ed6206c7b
[eric] browser: a card the renderer parked is slow, not dead; parallel agents no longer ghost
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 15:50:55 -07:00
ciregenz and Claude Opus 5
332ae7d183
[eric] agents: Stop disarms every queued injection, so a stopped agent can never resurrect
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 15:50:55 -07:00
ciregenz and Claude Opus 5
ea04b1da11
[eric] agents: one provider verdict per ask, and a spent plan is never sold as a short wait
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 15:08:12 -07:00
ciregenz and Claude Opus 5
7c04c755ae
[eric] agents: an invisible thinking pill no longer breaks the repeat-card dedup
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 12:32:14 -07:00
ciregenz and Claude Opus 5
6f313a445c
[eric] settings: the disconnect spinner always releases, even when the refresh throws
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 12:22:34 -07:00
ciregenz and Claude Opus 5
e5e8da37ac
[eric] agents: a provider's error never reaches the user as the agent's own words
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 12:22:34 -07:00
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
00e4336b71
[eric] build: rebind the embedded profile to the live signing cert
...
The profile shipped with the app listed only the certificate whose private key
was lost with the old Mac, so it would have signed the new build without
complaint and then dropped keychain-access-groups at runtime, taking passkeys
and Touch ID with it. Regenerated against the cert we can actually sign with;
the preflight added alongside it now refuses any build where the two disagree.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_014wtspwSFzZmjCx9UNPAorQ
2026-08-20 11:40:00 -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