<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slosh.git/vendor/libghostty-vt/src/apprt, branch docs-new</title>
<subtitle>an opinionated terminal multiplexer in C with programmable pane chrome</subtitle>
<id>https://git.sl0p.foo/slosh.git/atom/vendor/libghostty-vt/src/apprt?h=docs-new</id>
<link rel='self' href='https://git.sl0p.foo/slosh.git/atom/vendor/libghostty-vt/src/apprt?h=docs-new'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/'/>
<updated>2026-08-24T08:01:26Z</updated>
<entry>
<title>vendor: an unanchored build/ ignore was eating libghostty-vt's build tooling</title>
<updated>2026-08-24T08:01:26Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-24T08:01:26Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=75774b64ecfdbbfc6df78e34fb489ed21e401386'/>
<id>urn:sha1:75774b64ecfdbbfc6df78e34fb489ed21e401386</id>
<content type='text'>
The build/ pattern matched every directory of that name, not just our
build output at the root -- so vendor/libghostty-vt/src/build/ (the
library's own build.zig helpers) never made it into git, and make
vendor broke on fresh clones. Anchor the ignore to /build/ and restore
the 284 files it had silently dropped.
</content>
</entry>
<entry>
<title>sl0ptty: M0 — libghostty-vt vendored, one pane, compositor, diff renderer</title>
<updated>2026-08-13T20:00:03Z</updated>
<author>
<name>sl0p</name>
<email>sl0p@sl0p.foo</email>
</author>
<published>2026-08-13T20:00:03Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=2c1b855c3cf8cf8841bf25cd939e478a7f0bfac8'/>
<id>urn:sha1:2c1b855c3cf8cf8841bf25cd939e478a7f0bfac8</id>
<content type='text'>
Design contract in DESIGN.md. libghostty-vt vendored fresh from ghostty
main@bedb6f2 (zig 0.16), built to a 14MB static lib.

M0: pty spawn (no libutil), a lib-vt terminal per pane, a screen cell buffer,
a diff emitter that repaints only what changed, raw mode, SIGWINCH, and a
~120Hz frame cap that coalesces pty reads.

Also the seed of the headless harness: --headless dumps the composited screen
without a tty, so composition is testable in milliseconds.

tests/live_m0.py covers what headless cannot: raw mode, the diff emitter,
resize propagation, and the quit path. 6/6 green.
</content>
</entry>
</feed>
