ciregenz
|
0d98fd6bc7
|
[eric] model picker: groups render subscriptions first, API keys second, routers last with tier separators, never interleaved
|
2026-08-09 17:01:41 -07:00 |
|
ciregenz
|
97d0c7a8ef
|
[eric] apps: an app nobody is editing serves its built bundle with no dev-server process (~270MB -> ~0), vite reboots the moment an agent binds or the dist goes stale
|
2026-08-09 16:53:14 -07:00 |
|
ciregenz
|
2476d4c03d
|
[eric] linter: the file-size debt is reported (82 grandfathered oversized files, top offenders named) instead of hiding behind the enforcement zero
|
2026-08-09 14:47:31 -07:00 |
|
ciregenz
|
4804e232d9
|
[eric] canvas: NOTHING drags in fullscreen (untileForDrag chokepoint + guards on app and window cards; exit is the pill, green dot, or Escape)
|
2026-08-09 14:47:31 -07:00 |
|
ciregenz
|
f10591f07c
|
[eric] canvas: the legacy inline app picker is gone (Cmd+M and the composer route open the Applications window)
|
2026-08-09 14:15:27 -07:00 |
|
ciregenz
|
b47ad9c60f
|
[eric] agents: active time is stall-capped inter-event work, so one wedged turn can't book 54 hours of 'agent time'
|
2026-08-09 14:08:34 -07:00 |
|
ciregenz
|
5eca1df72d
|
[eric] agents: mid-turn provider backoff shows a muted retrying pill instead of a dead card, and transient pills survive session status frames
|
2026-08-09 14:01:11 -07:00 |
|
ciregenz
|
8fdc1fa2f9
|
[eric] settings: the shortcut recorder owns the keyboard while armed (window-level capture, hotkeys suppressed), so rebinding no longer snaps back to fn
|
2026-08-09 13:51:55 -07:00 |
|
ciregenz
|
d050517c4e
|
[eric] canvas: fullscreen locks canvas panning (drag joined the wheel gate), thirds cut from the tile menus, Applications window gets always-on search + image-only tiles (screenshot > symbol > svg, letters never)
|
2026-08-09 13:27:26 -07:00 |
|
ciregenz
|
3c2aeb8fa7
|
[eric] apps: runtime status carries ready + serving_url, so 'spawned' and 'actually serving' stop being the same claim
|
2026-08-09 12:51:12 -07:00 |
|
ciregenz
|
e4454a0b9e
|
[eric] skills: the Add box resolves pasted README install commands (npx/pnpm/bunx, skills.sh URLs) through the parser that shipped without a client
|
2026-08-09 12:51:02 -07:00 |
|
ciregenz
|
14d4a71e15
|
[eric] agents: a TLS certificate failure is non-transient and says so, instead of burning 335s of retries on a broken cert chain
|
2026-08-09 12:51:02 -07:00 |
|
ciregenz
|
c8c3e7be0e
|
[eric] canvas: app card chrome carries no identity (bare strip); the dock tile is the personalized mark and prefers the app's real thumbnail over any glyph
|
2026-08-09 12:13:05 -07:00 |
|
ciregenz
|
d013ac5f1f
|
[eric] canvas: app chrome identity is the app's own monogram tile (no name), and the Workflows strip goes bare like Settings/Marketplace
|
2026-08-09 11:56:27 -07:00 |
|
ciregenz
|
95a41451b3
|
[eric] apps: grant identity is server-derived only (minted per-app tokens + serve-path referer), forged ids refused, grant dialogs queue
|
2026-08-09 11:47:27 -07:00 |
|
ciregenz
|
c794706281
|
[eric] settings: the in-body X is gone (traffic lights are the close), onboarding cursor re-anchored to the red dot
|
2026-08-09 11:47:27 -07:00 |
|
ciregenz
|
99433fd399
|
[eric] canvas: window chrome homogenized (no separator, same surface as the body), app title centered, one exit affordance in fullscreen
|
2026-08-09 11:47:27 -07:00 |
|
ciregenz
|
54bdd42018
|
[eric] apps: card chrome goes slim (identity + reload/share/kebab), and fullscreen flips it to a dark edge-to-edge system bar with its own exit
|
2026-08-09 11:03:41 -07:00 |
|
ciregenz
|
5f6cf216ad
|
[eric] canvas: the marquee inverts the PAINTED transform instead of a second camera copy, so a drawn-vs-painted mismatch can't exist
|
2026-08-09 10:28:23 -07:00 |
|
ciregenz
|
6bd3f93f07
|
[eric] chat: questions and tool permission asks render as the vendored tool-ui cards (question-flow + approval-card); QuestionForm extracted to kill an import cycle; registry loads the full question-flow union
|
2026-08-09 10:01:02 -07:00 |
|
ciregenz
|
0688c85607
|
[eric] apps: apps can call the user's connected tools behind a per-app grant gate (approval card, deny-by-default, Origin-derived identity)
|
2026-08-09 08:52:36 -07:00 |
|
ciregenz
|
0592437941
|
[eric] memory: agents get MemoryRead/MemoryWrite (atomic batch, overflow-consolidate protocol) and the prompt block freezes per session, hermes-agent style
|
2026-08-09 08:52:30 -07:00 |
|
ciregenz
|
31a5386186
|
[eric] voice: the mic parks warm for 5 minutes after each dictation, so the next fn press skips the ~2.5s device power-up
|
2026-08-09 08:24:30 -07:00 |
|
ciregenz
|
4ebf9a91f6
|
[eric] canvas: fullscreen can no longer strand a chromeless shell (ghost-id guard, one owner, layout-fetch prune, always-clickable exit pill)
|
2026-08-09 07:48:30 -07:00 |
|
ciregenz
|
02cc65632a
|
[eric] tool-ui: repair the payload shapes agents actually emit (stat keys, step ids, receipt outcomes), so widgets render instead of quietly falling back
|
2026-08-09 07:48:30 -07:00 |
|
ciregenz
|
4ac57967ff
|
[eric] agents: the last silent-quit nudge demands a text answer instead of more work, and an exhausted budget says so in the chat
|
2026-08-08 22:35:41 -07:00 |
|
ciregenz
|
18cc7c7417
|
[eric] voice: mic open overlaps the IPC, context and worklet setup, and the stop path no longer waits on the streaming shutdown it rarely needs
|
2026-08-08 22:08:13 -07:00 |
|
ciregenz
|
c9840eb00b
|
[eric] hardening: legacy pre-collapse tool ids canonicalize to core, and the docked mini gets a load listener plus a 1s belt so a silent layout shift can't strand it
|
2026-08-08 20:48:47 -07:00 |
|
ciregenz
|
16d6b5e378
|
[eric] agents: combined server answers tool calls on threads and survives a broken module, restoring the parallelism ten processes gave for free
|
2026-08-08 14:35:35 -07:00 |
|
ciregenz
|
4faba74d55
|
[eric] agents: every builtin tool server rides ONE process per chat, and the gate enumerates its grants instead of wildcarding
|
2026-08-08 12:59:50 -07:00 |
|
ciregenz
|
c0d33c0cfb
|
[eric] browser: the docked mini re-measures when its slot announces a remount, retiring a 150ms forever-poll of layout reads
|
2026-08-08 09:47:25 -07:00 |
|
ciregenz
|
4d86b3377d
|
[eric] agents: the three ungated meta MCP servers ride one process, cutting three idle interpreters per parked chat
|
2026-08-08 09:41:45 -07:00 |
|
ciregenz
|
d60a99ddd1
|
[eric] boot: bootstrap fetches retry until the backend answers and heal on focus, so a lost boot race stops bricking first paint
|
2026-08-08 09:34:13 -07:00 |
|
ciregenz
|
5c0d6d52b6
|
[eric] apps: render-health beacons ride the runtime log stream where they actually arrive, vite-plugin-terminal owns the page console
|
2026-08-08 02:14:27 -07:00 |
|
ciregenz
|
ab847fe2c4
|
[eric] apps: a spawned agent lands on the most-recent dashboard when the app names none, so the card is visible not just real
|
2026-08-08 02:14:27 -07:00 |
|
ciregenz
|
9541d0cf09
|
[eric] apps: the warm node_modules cache proves completion with a sentinel and never npm-installs on the request path, which wedged the whole backend
|
2026-08-08 02:14:26 -07:00 |
|
ciregenz
|
a0e7e719fa
|
[eric] browser: delete the orphaned BrowserAgentInlineFeed component (missed in the action-feed removal commit)
|
2026-08-08 01:22:54 -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
|
610ba00a9d
|
[eric] apps: the host SDK lands, apps call the user's models, fire workflows, and spawn positioned agents through pre-wired helpers
|
2026-08-08 01:14:00 -07:00 |
|
ciregenz
|
1f3c211146
|
[eric] apps: generated apps default to an Apple design language, SF-first type, system blue, iOS grays, hairline structure
|
2026-08-08 01:05:40 -07:00 |
|
ciregenz
|
c764604a53
|
[eric] canvas: a rejected rect no longer scores as trusted, so the settle can fix a stale origin instead of parking fullscreen 52px off
|
2026-08-08 01:00:32 -07:00 |
|
ciregenz
|
ce2ad6bf4b
|
[eric] apps: Building only ever covers a frontend that actually threw while the agent edits, agent activity alone can never curtain an app
|
2026-08-08 00:40:54 -07:00 |
|
ciregenz
|
f25fe95c37
|
[eric] browser: RequestHumanIntervention is never auto-injected, the toggle really removes it, and workflow runs never see it
|
2026-08-08 00:37:38 -07:00 |
|
ciregenz
|
b2181e5a1c
|
[eric] browser: the black action-feed box is gone everywhere, the live mini browser IS the progress display
|
2026-08-08 00:34:07 -07:00 |
|
ciregenz
|
6dd2a2b26f
|
[eric] canvas: zoom dial runs 1.5x hotter so the default 50 feels like the old 75
|
2026-08-08 00:34:06 -07:00 |
|
ciregenz
|
bb906d81b8
|
[eric] apps: a frozen app runtime is thawed before it is reaped, so a parked ghost stops surviving every TERM we send it
|
2026-08-07 21:48:58 -07:00 |
|
ciregenz
|
b537a4ed63
|
[eric] apps: the ghost reaper reads working directories too, so an orphaned app backend whose argv never names the workspace stops being invisible
|
2026-08-07 21:36:51 -07:00 |
|
ciregenz
|
01e295ac5c
|
[eric] agents: parked CLIs die at 10 minutes and the warm cap drops to 8, cutting the measured 1.3GB idle ceiling roughly in half
|
2026-08-07 21:10:44 -07:00 |
|
ciregenz
|
ec9941821c
|
[eric] backend: respawn on unexpected exit (bounded, backoff), so a crash no longer leaves a dead shell and orphaned app runtimes
|
2026-08-07 21:02:08 -07:00 |
|
ciregenz
|
08694d18b8
|
[eric] apps: the ghost reaper matches workspace paths case-insensitively, so a packaged app's openswarm vs OpenSwarm casing no longer spares orphans
|
2026-08-07 21:00:44 -07:00 |
|
ciregenz
|
ed8e7d6304
|
[eric] updater: OPENSWARM_NO_UPDATE=1 stops a local packaged build from downgrading itself mid-smoke
|
2026-08-07 20:30:05 -07:00 |
|
ciregenz
|
2bd42f7f35
|
[eric] tests: the sync-test contract tests now pin the progress-based wait, not the deleted fixed budget
|
2026-08-07 20:27:10 -07:00 |
|
ciregenz
|
8e9baee839
|
[eric] workflows: at most 3 run at once, extra due fires queue for a slot and give up honestly, so 30 saved workflows can never become 30 live agents
|
2026-08-07 20:26:27 -07:00 |
|
ciregenz
|
256e922886
|
[eric] canvas: browsers and apps share one 10-renderer ceiling, so the two caps can no longer stack to 14
|
2026-08-07 20:10:59 -07:00 |
|
ciregenz
|
dfed363db7
|
[eric] apps: the scaffold ships a durable store and the skill forbids memory-only state, since the runtime dies on a timer
|
2026-08-07 20:01:06 -07:00 |
|
ciregenz
|
dec16d78db
|
[eric] apps: the ghost sweep fails closed, a bad ps scan or a mid-spawn race can no longer read working apps as ghosts
|
2026-08-07 19:54:11 -07:00 |
|
ciregenz
|
f32bcafc01
|
[eric] apps: idle pool holds 6 frozen runtimes instead of 3, affordable now that the TTL bounds their lifetime
|
2026-08-07 19:51:25 -07:00 |
|
ciregenz
|
913f597656
|
[eric] apps: ghosts get swept every 10 minutes not just at boot, and a frozen idle runtime dies after 15 minutes instead of squatting RAM forever
|
2026-08-07 19:47:16 -07:00 |
|
ciregenz
|
a276a5d64d
|
[eric] canvas: a browser leaving the rail lands on its snapshot and attaches the guest after the motion, killing the browser-only jank
|
2026-08-07 19:28:17 -07:00 |
|
ciregenz
|
8c8a9fe120
|
[eric] canvas: a card leaving the minimized rail lands in its tile in one frame, instead of flying in from a home nobody saw
|
2026-08-07 19:22:19 -07:00 |
|
ciregenz
|
ab875d5894
|
[eric] canvas: the tiling settle waits for the camera to demonstrably rest, not for a guessed delay
|
2026-08-07 19:13:57 -07:00 |
|
ciregenz
|
c8df096520
|
[eric] canvas: revert the top inset, the tiled window already sits above the drag strip and did not need it
|
2026-08-07 19:09:24 -07:00 |
|
ciregenz
|
c8dd05ddf4
|
[eric] canvas: tiling insets below the top drag strip, so a fullscreen window stops losing its top edge to window-drag
|
2026-08-07 19:00:58 -07:00 |
|
ciregenz
|
863a8274f9
|
[eric] canvas: stop re-solving a tile origin that was already right, which is what put fullscreen a few px off
|
2026-08-07 18:57:12 -07:00 |
|
ciregenz
|
85e50f029a
|
[eric] canvas: a browser card too small to read goes to sleep on zoom-out, not just stays asleep on zoom-in
|
2026-08-07 18:43:42 -07:00 |
|
ciregenz
|
31a45b003a
|
[eric] canvas: a tiling settle waits for the camera to stop moving, and re-measures once the rail lets the card go
|
2026-08-07 18:25:08 -07:00 |
|
ciregenz
|
dc1896c91f
|
[eric] canvas: tiling diagnostics log one flat line, since devtools ate the nested arrays on copy
|
2026-08-07 18:17:53 -07:00 |
|
ciregenz
|
088a31973b
|
[eric] canvas: temporary tiling diagnostics, so the minimized-to-fullscreen offset can be read off numbers
|
2026-08-07 18:12:58 -07:00 |
|
ciregenz
|
901d9ff070
|
[eric] browser: back, forward and reload lose their tooltips, which only ever landed on top of the page
|
2026-08-07 18:10:25 -07:00 |
|
ciregenz
|
df85b17100
|
[eric] canvas: fullscreen from the minimized rail lands square, instead of taking its origin from the -100000 park
|
2026-08-07 18:02:21 -07:00 |
|
ciregenz
|
0417e70b72
|
[eric] memory: the profile is about the person, not the project, and saying nothing is the default
|
2026-08-07 17:53:40 -07:00 |
|
ciregenz
|
0c83bb8f78
|
[eric] canvas: an app window owns its wheel whether or not you clicked in first; workflow tests wait on progress, not a clock
|
2026-08-07 17:37:30 -07:00 |
|
ciregenz
|
9b54b39dde
|
[eric] workflows: a test that runs long hands back what it has instead of telling the agent to poll; memory stops re-deriving facts it already stored
|
2026-08-07 17:33:20 -07:00 |
|
ciregenz
|
bde92de062
|
[eric] prompt: reading the web starts with WebSearch/WebFetch and only escalates to the browser when they come back thin
|
2026-08-07 17:18:30 -07:00 |
|
ciregenz
|
050a02fc52
|
[eric] workflows: a new workflow runs on the model you actually configured, not Anthropic's API lane
|
2026-08-07 17:06:48 -07:00 |
|
ciregenz
|
b16c31b8c2
|
[eric] canvas: scroll over an unfocused card drives the canvas again, and a scroll inside one never chains out of it
|
2026-08-07 16:52:55 -07:00 |
|
ciregenz
|
6d8ecc6fd4
|
[eric] canvas: the host window allows visual zoom, so macOS actually delivers a trackpad pinch to the dashboard (ENG-186)
|
2026-08-07 16:24:07 -07:00 |
|
ciregenz
|
b37509894d
|
[eric] tests: two suites imported a .js that never existed, so 13 assertions had never run once
|
2026-08-07 16:06:57 -07:00 |
|
ciregenz
|
9b0ca9f2fc
|
[eric] canvas: double-click to frame everything keeps a readable floor instead of bottoming out at 15%
|
2026-08-07 16:04:42 -07:00 |
|
ciregenz
|
5b63c98854
|
[eric] dictation: the cursor wins, so a transcript lands where you clicked, not where you started (reverts ENG-176)
|
2026-08-07 16:01:05 -07:00 |
|
ciregenz
|
d1d8597513
|
[eric] help: the 1.7.5 notes describe the build that exists, not the one that was planned
|
2026-08-07 15:52:28 -07:00 |
|
ciregenz
|
69797ba88a
|
[eric] workflows: pausing one clears its queued missed fires, so a switched-off workflow leaves nothing behind
|
2026-08-07 15:47:31 -07:00 |
|
ciregenz
|
4293904214
|
[eric] canvas: the stock wash is one flat colour, so a default install has no texture left to tear
|
2026-08-07 15:41:07 -07:00 |
|
ciregenz
|
5485021b7b
|
[eric] workflows: a stalled label lane can no longer hold a step edit open, which is what bricked the editor
|
2026-08-07 15:41:07 -07:00 |
|
ciregenz
|
c0117d817b
|
[eric] voice: reap fn-watchers stranded by a crash, so a dead session can't keep tapping the keyboard
|
2026-08-07 15:31:09 -07:00 |
|
ciregenz
|
ec0d706a80
|
[eric] canvas: cut the evictable full-window texture 98MB to 43MB, so the wash has far less left to drop as a band
|
2026-08-07 15:23:43 -07:00 |
|
ciregenz
|
f018eefdb9
|
[eric] workflows: a deleted workflow stays deleted, so the immortal 45-minute ghost can't write itself back to life
|
2026-08-07 15:05:42 -07:00 |
|
ciregenz
|
e53d01f9ef
|
[eric] canvas: wash and grain paint on the viewport itself, so there is no second layer to lose
|
2026-08-07 14:45:43 -07:00 |
|
ciregenz
|
8364864f9f
|
[eric] canvas: the wash is a real gradient, not a 119KB image the GPU can drop
|
2026-08-07 14:41:08 -07:00 |
|
ciregenz
|
48bcdd4f85
|
[eric] workflows: off means off on every path, and the refusal shows up in History
|
2026-08-07 14:35:08 -07:00 |
|
ciregenz
|
d05963884d
|
[eric] workflows: deleted or switched off means it cannot run, from any path, including mid-run
|
2026-08-07 14:30:29 -07:00 |
|
ciregenz
|
e5f4144f72
|
[eric] workflows: an agent will not start a workflow the user switched off
|
2026-08-07 14:26:33 -07:00 |
|
ciregenz
|
bb5893ff46
|
[eric] apps: a crash no longer leaves app runtimes running for days, boot reaps what no live backend owns
|
2026-08-07 14:23:25 -07:00 |
|
ciregenz
|
2287c1244b
|
[eric] canvas: browser cards past the first actually load their page again
|
2026-08-07 13:56:41 -07:00 |
|
ciregenz
|
86f92164b6
|
[eric] canvas: a card finishes its own attach work before the next webview starts
|
2026-08-07 13:50:16 -07:00 |
|
ciregenz
|
3c711d0f85
|
[eric] canvas: the next webview waits for the last one to attach, not for the next frame
|
2026-08-07 13:44:30 -07:00 |
|
ciregenz
|
5eed1385be
|
[eric] canvas: webview attaches go one per frame, so opening a loaded dashboard stops locking the app for 4.7s
|
2026-08-07 13:39:03 -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
|
571b10b521
|
[eric] release: 1.7.5
|
2026-08-07 12:48:06 -07:00 |
|
ciregenz
|
21e1400e3c
|
[eric] telemetry: a silent quit carries the same envelope as a hard error, found by reading the sink
|
2026-08-07 12:27:38 -07:00 |
|