<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pardes.git/docs/typ/README, branch release-0.24</title>
<subtitle>Pardes</subtitle>
<id>https://git.0x4200.cafe/pardes.git/atom?h=release-0.24</id>
<link rel='self' href='https://git.0x4200.cafe/pardes.git/atom?h=release-0.24'/>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/'/>
<updated>2026-10-01T18:24:04Z</updated>
<entry>
<title>The landing's words jump to their recordings, the casts open on their telling frame, and #mode-box draws the box</title>
<updated>2026-10-01T18:24:04Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T17:03:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=3b186b7724dd3ca0ff67c3c8a0f9823f0f161fc5'/>
<id>urn:sha1:3b186b7724dd3ca0ff67c3c8a0f9823f0f161fc5</id>
<content type='text'>
Each recording on the landing has an anchor (rec-&lt;name&gt;); the "What's
in it" words jump to theirs (Terminals, PDFs, Images, Diff review,
Scripting) and the recording's caption ends in a link to the docs;
Language servers and Themes, with no recording, link to the docs. A
cast's `poster_at` in casts.toml picks the frame it shows until it
plays: live-text at the error, terminals at the copied line, petscii on
the Mandelbrot; the casts wait for the in-view script to play them. A
caption may hold markup: the 9P clip links 9ns to setup. The downloads
give their size, read from project.download, and the footer links the
changes (project.changes).

The guide's annotated pane has alt text, pin 1 beside the workspace tag
rather than on Changelog, and pin 5 on the body's text; pin positions
are written with repr, since str puts a U+2212 minus CSS cannot read.
#mode-box(mark, unsaved:) draws a pane's box as it looks, in print and
HTML.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Builtins are chips that link to a glossary generated from the registry, and the virtual filesystem is drawn as a tree</title>
<updated>2026-10-01T16:16:47Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T16:05:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=f700b2af8e874c586e6996b8311c3983203c6637'/>
<id>urn:sha1:f700b2af8e874c586e6996b8311c3983203c6637</id>
<content type='text'>
#word draws a builtin as a chip on the tag's ground over a rule (Look and
Exec in acme's look green and exec red), a &lt;code class="word"&gt; in HTML,
and links it to its entry in a new Builtins chapter wherever that
chapter is in the same output (the book, the site). The chapter is
drawn from docs/typ/builtins-tty.json and builtins-gui.json, which
`zig build builtins-json -Dplatform=tty|gui` writes from the registry
and the Help rows (src/builtins_json.zig, tools/gen_builtins_json.zig;
summaryOf in ninep/ctl.zig is now pub); style.typ merges them, marking
the window-only words. The doc steps refresh their build's file first,
and each build's unit-test fails when its file is stale. Everyday words
first (`everyday` in style.typ), then groups by leader prefix as Help
has them, then settings, the words with no path, debugging and
internals, and last an A-Z index of every word. `zig build book` joins
the doc steps.

#fstree draws a directory tree with its connectors, a description
column and links to the sections that document each file; reference.typ
draws the served tree with it, each pane, pty and column file on its
own line, and a test in config.zig checks it against ninep/tree.zig's
files both ways. The cheatsheet has a two-level version. On the site
the tree reads as `tree` text in w3m and wraps descriptions under the
names on a phone.

The site's tutor draws its B1, B2, B3 and 1-2 chords as mouse glyphs;
the landing credits Plan 9 and acme, as does the book's title page;
install.typ no longer lists the mirrors (the footer does).

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>The docs become a website: a page per chapter, a landing page with recordings, one Typst bundle run</title>
<updated>2026-10-01T15:24:31Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T14:11:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=5874742494a293c5e285d2f1284c748e39d980f8'/>
<id>urn:sha1:5874742494a293c5e285d2f1284c748e39d980f8</id>
<content type='text'>
docs/site/site.typ writes every page in one bundle compile: the landing
page (the tagline, the recordings listed in media/clips.toml, links to
start from), a page per entry of `chapters` in style.typ, and the tutor.
Every page shares a tag-line header with the chapter words; #doc links
resolve to the right page and anchor; a chapter with four or more
sections gets an "On this page" list. Links are relative and pages flat,
so it reads from file:// or any static server. `zig build site` installs
it to &lt;prefix&gt;/share/doc/pardes/site and fails plainly without typst.

The look is 0x4200.cafe's lapis layout (framed panels, hard shadows, a
tag-line trail, Departure Mono headings over Crimson Pro) in orchard's
greens and amber, forestbones_light when the reader prefers light; both
fonts are OFL and shipped. In HTML a key is one pill with its + and ›,
and a mouse button is an inline SVG in currentColor. The tagline lives
once in style.typ for the sheet, the book and the site, and the single
page html.typ gives way to the site.

The landing leads with one plain sentence (columns of panes, click to
run or open, helix keys, scripts through files), then the tagline and a
line on where it runs; a hero image is the first ready clip's poster;
"Start: the guide" leads the links, "Hands on: the tutor" next, the rest
a plain row; the captions use no undefined words. docs/typ/install.typ
holds the install lines once: setup.typ has an Install section that
includes it, and the landing includes it too. Building says up front it
is for contributors and points at setup to install. In HTML the guide's
glossary is a closed &lt;details&gt; (#glossary, the same heading and table on
paper), each drawn mouse carries hidden text (left-click, hold left,
click middle) for screen readers, w3m and copying, and the footer takes
a source link and a licence from `project` in style.typ once decided.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>The book and the HTML gain "Setting up your environment" after the guide</title>
<updated>2026-10-01T03:12:18Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T03:04:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=9ad4d38746dfacdf4921949e1c8bd050a0817cc7'/>
<id>urn:sha1:9ad4d38746dfacdf4921949e1c8bd050a0817cc7</id>
<content type='text'>
chapters lists setup.typ second and #doc takes a setup id. Shell lines
(#cmd) follow the density too: roomy in the book and the HTML, with a
tint and space around them, tight on the A4 sheet; the book sets code
blocks on the same tint.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>The book and the HTML hold every topic, and #doc links to its chapter or section</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T02:12:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=9155fb6632c1337ed077b76e06e9d176b5b4889f'/>
<id>urn:sha1:9155fb6632c1337ed077b76e06e9d176b5b4889f</id>
<content type='text'>
chapters now names guide, cheatsheet, scripting, reference, themes and
building. #doc takes the chapter ids, keeps the old ones mapped onto
them (tags and fs to the guide and the reference, config, keys and
detached to their guide sections), and links in the book and the HTML,
where a doc-links state says every chapter is there; on the A4 sheet it
names the chapter and section. The reference points at the scripting
and building chapters by #doc instead of in words, and the guide heading
for pardes FILE and --wait keeps its two dashes.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>docs/typ gets book and HTML wrappers over one chapter list</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T01:41:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=450ce314c18603b045f0ce808f21c8577237ba83'/>
<id>urn:sha1:450ce314c18603b045f0ce808f21c8577237ba83</id>
<content type='text'>
style.typ lists the chapters in reading order (guide, cheatsheet,
scripting, reference, building), each with its content file or none
while unwritten. book.typ sets them as an A4 book with a title page and
contents, the tutor read from src/tutor.txt last; html.typ sets them as
one HTML page with a nav of anchors. An unwritten chapter shows a
placeholder, so both compile before the topics exist.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>The cheatsheet draws mouse buttons as a mouse, keys as chips, and pairs as tables</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T01:33:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=989dcf395be7280240fc501ba1f07f75bacf91a3'/>
<id>urn:sha1:989dcf395be7280240fc501ba1f07f75bacf91a3</id>
<content type='text'>
#btn and #chord draw a mouse (left button, wheel, right button) with the
pressed part filled; the wheel is a narrow slot on a paper halo, hollow
or filled, so it never reads as a button. A chord is the held button,
then for each click the held one and that one down, with arrows between;
#btn(.., shift: true) adds a ⇧. HTML gets a span with an aria-label.

A key is one soft pill with no border: a combination (Ctrl-w) reads
Ctrl + w and a sequence (g g, SPC f c) g › g, separators muted inside it;
#keys("h", "j", ...) sets alternatives as separate pills. The drift
test reads every key a #keys call names.

#pairs sets key | meaning content as a two-column table on alternating
tints; split: 2 sets the leader map as two such tables side by side.
The mouse chords get their own table: cut, paste, copy (B1-B2 then
B1-B3, one B1 hold, as mouse.zig says), 2-1 with an argument, 2-3
cancelling. The A4 page draws its own title and drops the content's level-1
heading. docs/typ/README is the function contract for content files.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A one-page A4 cheatsheet, the first file of a Typst docs corpus in docs/typ</title>
<updated>2026-10-01T03:12:17Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T00:05:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=db2a259a18b9247edc23b1128dcfda703858f120'/>
<id>urn:sha1:db2a259a18b9247edc23b1128dcfda703858f120</id>
<content type='text'>
docs/typ/cheatsheet.typ holds the facts as semantic calls (#key, #btn,
#chord, #word, #tag, #addr, #file, #cmd, #doc); docs/typ/style.typ
defines those once, drawing them for paged output and emitting HTML
elements under --features html; docs/typ/cheatsheet-a4.typ is the page.
`zig build cheatsheet` renders it when typst is on PATH. A config.zig
test reads every .typ in docs/typ and fails when one names a builtin,
key binding or default tag pardes no longer has.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
