Repository navigation
Ghosttea is a native Ghostty-powered terminal runtime and desktop experience for Electron applications.
This release publishes 10 npm packages and 7 Rust crates under one shared version.
Changed
- Upgrade the terminal engine to libghostty-vt 1.0.0 at
0fa3d577a5614150ff8e2c152de5fb9d5c6d2dec(upstream tagvt-1.0.0), the
first versioned release of the library and the one that freezes its C API.
The build keeps the checksum-locked Zig 0.17 recipe, and the native build
retains Ghosttea's host-owned terminal geometry and recovery patches, now
written to upstream's 1.0 rules for the C API. - Carry five upstream fixes that landed after the tag and are in no upstream
release yet (ghostty-org/ghostty #15134, #15127 and #15141) as a
checksum-locked patch. It is dropped when the pin reaches a release that
contains them. - Rebuild the three VT archives and the Apple native artifact from the release
sources. - The C terminal constructor leaves Glyph Protocol APC handling off unless an
embedder opts in. Ghosttea does not opt in.
Added
- Option as Alt is the typing viewer's choice. A key input can carry
optionAsAlt, with protocol minors of its own (control 19, mesh 9), so a
client can tell a daemon that reads the keyboard's Option policy from one
that drops it and sends Alt. As Alt, Option sends Alt plus the key's own
character and never a bareESC [; as text, it sends the layout's
character, such as@on a German keyboard. - A view can attach without a snapshot. The caller's own refresh is then the
one forced full render an attach costs, and other viewers get one reset
frame instead of two. - A selection read can be fenced on its attachment, so a detached or
superseded view never reads and its selection is never brought back.
Fixed
- A resize that grows the rows and shrinks the columns in one step no longer
loses rows of the screen. With 60 short lines on an 80 by 24 terminal, a
resize to 60 by 30 left the cursor on row 23 with six blank rows under it;
the lines pulled down from scrollback now stay in view (upstream #15141). - The column editing sequences DECIC, DECDC, DECBI and DECFI are obeyed. They
were ignored. - A recovery fragment carries a wrap that is pending at the right margin, so a
replay no longer loses it. - Tracked pins are no longer left on a destroyed page when a column-growing
resize without reflow stops its backfill early (upstream #15134). - A failed render-state update no longer marks rows clean before they are
rebuilt (upstream #15127). - Input past a full or closed input queue is refused with the typed
ControlFailure(stageinput, codeinput-queue-fullorinput-closed)
instead of a bare error string.ControlFailureis public, with read
accessors.
Packages
npm:
@vibecook/ghosttea@vibecook/ghosttea-client@vibecook/ghosttea-electron@vibecook/ghosttea-frame@vibecook/ghosttea-native-tabs@vibecook/ghosttea-protocol@vibecook/ghosttea-react@vibecook/ghosttead@vibecook/ghosttead-darwin-arm64@vibecook/ghosttead-win32-x64
crates.io:
ghostteaghosttea-configghosttea-coreghosttea-textghosttea-truffleghosttea-vtghosttea-vt-sys
Publish order is a dependency order rather than this one; it is recorded in PUBLISHING.md.
Requirements
Node 22+ and Rust 1.88+. Native Ghostty VT artifacts are published for aarch64-apple-darwin and x86_64-pc-windows-msvc and x86_64-pc-windows-msvc-crt-static.