v0.23.0
Apple Silicon. Signed and notarized — it opens without a warning.
sha256 a4b4383773dae8fb83324320898a4b50b7a4eeda21e348c06b35fd9e0a09e3f4
Your pane layout comes back the way you left it. Since document panes
arrived, quitting could quietly lose the arrangement you had — you would
relaunch into an older window and rebuild it by hand. The layout was being
kept in the browser's storage behind a short delay, with a page-unload event
as the promise it would be flushed on the way out. That event never fires:
zero exits the process without unloading the page, so the write never
happened, and the browser's own copy never reached disk either. Both failures
were silent.
The layout now lives in a file, written the moment anything moves. Nothing is
sitting in a queue waiting for a deadline that quitting won't let arrive.
Four smaller faults went with it, each of which could cost part of a layout on
its own:
- A split with one bad stored size came back as an even split, resizing every
pane beside it. - Dragging a divider against an already-tiny pane could store a size of zero,
which the next launch distrusted — taking that split's other panes with it. - A pane whose tabs were all unsaved scratch buffers vanished on relaunch,
taking its place in the layout. One pane per launch, with nothing said. - Retired fields were being rewritten forever after they had been read.
Sessions here got about a fifth smaller.
Two things the terminal daemon made necessary. If the layout file can't be
read, zero no longer treats that as "no terminals are wanted" — it leaves your
shells alone rather than ending live Claude sessions over a transient error.
And a tauri dev build no longer shares a layout with the installed app: they
had separate storage before, and now they have separate files.
Still true: unsaved scratch buffers don't survive a relaunch — their
contents only ever exist in the editor. A pane holding nothing else now comes
back empty instead of disappearing.
Full Changelog: v0.22.1...v0.23.0