<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pardes.git/test/snapshots/exec.snap, 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-01T03:12:14Z</updated>
<entry>
<title>Notices become tagline bands at the top of the body</title>
<updated>2026-10-01T03:12:14Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-22T05:21:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=43b9d696f9e25ad7589527b91a74666e71ff0472'/>
<id>urn:sha1:43b9d696f9e25ad7589527b91a74666e71ff0472</id>
<content type='text'>
A message, a leader chord and a prompt used to share one row of body text at
the bottom of a pane, wearing the tagline font and nothing else about a
tagline. Now each one is a TagLayer of its own, emitted through the same
renderHeaderLayer the pane and column tags go through, so it gets the tagline
height, the small-font metrics, the band offset and the border for free --
none of which a body-grid row can have by changing its font role. The text is
right aligned. The prompt stays on the canonical grid because it owns a
cursor, and a cursor has to sit on a real cell.

The body starts BELOW the bands rather than under them, the way tree-sitter
context rows already worked. Pane.body_offset is how many rows they took and
Pardes.bodyTop(pane, rect) is the one place that answers "where does the body
begin" -- replacing fifteen copies of `if (tag_bottom) r.y else r.y + BOX_H`
spread across the paint, hit-test, scroll, PDF and image paths, which is what
let the bands and the text under them come adrift. Every notice is painted on
the grid as well, because the grid is what a terminal client draws and a band
it cannot see is a message it never gets; the GUI skips grid cells a tag layer
covers, so nothing is drawn twice.

Three bugs the bands exposed, fixed here:
  - a prompt band flush with the right edge put its caret one column past the
    pane, which the detached wire refuses -- so every frame was dropped for as
    long as the prompt was open. The band now reserves that column.
  - a click on a band mapped to Sel row 0, which is the TAG row: clicking
    chrome expanded a word out of the tagline and ran it as a builtin.
  - a watched file reloading under the editor changed the core without going
    through update, so needs_frame was never set and the reload was never
    drawn. Pardes.invalidate() is the name for that, and the file and theme
    reloads call it.

A session can now drive its own 9P namespace instead of being refused one:
ownMountSuffix answers what a path names inside this editors own tree and
resolve, readLimit and write serve it from memory rather than making the
syscall that never returns. The match is anchored to whole components under
the registrys 9p/pardes/&lt;name&gt;, because a bare /pardes/&lt;name&gt; anywhere in a
string would claim ~/src/pardes/&lt;name&gt;/README -- and, before write learned the
same trick, write the trees bytes over the real file. readFileLimit and
writeFile refuse instead, having no core to answer from.

A toggle setting SETS when given `on` or `off` and only flips when it is bare,
so the report LocationsConfig prints can be fed back as configuration and mean
what it says.

Snapshots: 97/98, from 0/98. The goldens were several commits stale and 17
scripts had stopped running; `config &lt;line&gt;` is a new script command that
appends to the per-script startup config, so a script that clicks body
coordinates pins `Verbose off` instead of counting the rows an announcement
moves. nested-optout is left failing on purpose: two levels of nesting prepend
vaxis F3 codepoints to typed lines, which is a real bug and is written down in
docs/divergences.md with a repro.

Co-Authored-By: Claude Opus 5 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>trunk: resume before the Reload experiment</title>
<updated>2026-09-15T20:24:42Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-09-11T15:38:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=682e237df7e8b22f820d14a4adee58e6e2f84268'/>
<id>urn:sha1:682e237df7e8b22f820d14a4adee58e6e2f84268</id>
<content type='text'>
Empty marker on the last pre-Reload change. Keep the Reload experiment on reload (3801914), its first change on reload-start (200a1fc), and the unfinished performance investigation on reload-perf-wip.
</content>
</entry>
<entry>
<title>tests: a capture is a delta and a click names its word, so a tagline edit stops rewriting the suite</title>
<updated>2026-08-25T15:28:58Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-08-25T14:05:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=e5f9e172330bc4500995ddd5954ed94f94e07af6'/>
<id>urn:sha1:e5f9e172330bc4500995ddd5954ed94f94e07af6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>builtins + config: Save reaches every pane holding text of its own, and takes a path argument</title>
<updated>2026-08-25T12:42:07Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-08-25T02:00:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=28c70cabb6ceb7e5fecfd74f6984f5a995269f01'/>
<id>urn:sha1:28c70cabb6ceb7e5fecfd74f6984f5a995269f01</id>
<content type='text'>
</content>
</entry>
<entry>
<title>show New in every pane tag and enforce builtin-first Exec fallback</title>
<updated>2026-08-10T12:17:07Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-08-02T23:07:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=022773d94dad2775c806f863a374bd945d4dc989'/>
<id>urn:sha1:022773d94dad2775c806f863a374bd945d4dc989</id>
<content type='text'>
</content>
</entry>
<entry>
<title>the mode is a character in the layout box, not a word in the tagline</title>
<updated>2026-08-01T18:02:08Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-08-01T01:52:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=f4ac5ee26851ced516b826953fa340008fa7069c'/>
<id>urn:sha1:f4ac5ee26851ced516b826953fa340008fa7069c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>build.zig runners and testing improvements</title>
<updated>2026-08-01T18:02:07Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-07-28T16:21:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=0b5ad7a30ba9e7c6eedcb426be294bd94219310f'/>
<id>urn:sha1:0b5ad7a30ba9e7c6eedcb426be294bd94219310f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>boot with a single shell pane (was three). Options.shells (default 1; &gt;=3 gives the classic two-column boot), -n &lt;count&gt; CLI flag. The 26 legacy snap scripts pin -n 3 on their start line so their coordinates and goldens stay valid; boot.snap tests the new default (golden regenerated: one full-width pane). 28/28 green.</title>
<updated>2026-08-01T18:02:07Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-07-06T23:36:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=d0ba070a87c54c538e5f788485391b0af927d0fb'/>
<id>urn:sha1:d0ba070a87c54c538e5f788485391b0af927d0fb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>mode indicators: 3-char uppercase (nm→NOR, in→INS, sy→TTY). tagPrefix + dump-load tty detection (startsWith "TTY "), tutor.txt docs, exec/fileedit snap tag-click cols +1 for the wider prefix, all 18 goldens regenerated (indicator text + 1-col tag shift only)</title>
<updated>2026-08-01T18:02:07Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-07-06T17:23:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=c1310964ac74cef1a108bd924f8d1983c3ec0e61'/>
<id>urn:sha1:c1310964ac74cef1a108bd924f8d1983c3ec0e61</id>
<content type='text'>
</content>
</entry>
<entry>
<title>pardes v2: the rewrite, complete and organized. src/ (core + three shells), test/ (snapshot parity harness + 18 frozen goldens). One sans-IO core, vaxis tty + SDL3 GPU native + wasm web shells, 18/18 parity with the purged prototype, 7.6k lines vs 12.1k. Fix: gui shell pre-sized the core at init so the greet-releasing resize never fired (blank panes until first interaction); live sessions now init at defaults and get the real grid as a resize event (the shell contract, documented on Options).</title>
<updated>2026-08-01T18:02:07Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-07-05T23:21:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=de4def3548a6729b0dfd2120495a61beef8c8c2c'/>
<id>urn:sha1:de4def3548a6729b0dfd2120495a61beef8c8c2c</id>
<content type='text'>
</content>
</entry>
</feed>
