<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pardes.git/src/ninep/tree.zig, 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-02T04:43:04Z</updated>
<entry>
<title>An Edit filter that can never be reaped no longer holds the Edit's answer: at the limit the command's group is killed and reaped off the answer's path, the stdin writer owning its input, so a filter writing its own ctl with &gt; or &gt;&gt; answers EIO at 10 s instead of hanging; a running Edit keeps its own copies of the names it reports, and the panes it changes refuse Del, delete, rmdir, Undo, Redo, Get and Zerox (busy, EBUSY); e and r say unreadable files in Get's words; the reference says both sides of a filter's own ctl write need &lt;&gt;</title>
<updated>2026-10-02T04:43:04Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-02T03:50:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=97c939b981bc7fbf1a58511a9d83d9f1e12a8f16'/>
<id>urn:sha1:97c939b981bc7fbf1a58511a9d83d9f1e12a8f16</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Round 39's small ones: a name write past its one line is refused by that write; Get and Edit's e load over a scratch under 100 bytes unasked, as Del closes it; Putall saves a Zerox pair once; bare Tab on the root ctl says the width as from a pane, and a ctl check of Tab no longer sets it; a directory read is "is a directory" (EISDIR), an unreadable file "permission denied" (EACCES), Incl of a file "not a directory" (ENOTDIR), and a device "not a regular file", never read to the stream limit</title>
<updated>2026-10-02T02:22:39Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-02T02:20:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=dd6a3c2c367cee12a8e2da81e7da6a2c8f3103d5'/>
<id>urn:sha1:dd6a3c2c367cee12a8e2da81e7da6a2c8f3103d5</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A name held for its newline that no newline could make good (a terminal's, a component over 255 bytes, a path too long) is refused by the write that held it, not at the close (monkey9p's close_runs_only_line_files; follows sswkwwvv)</title>
<updated>2026-10-01T14:28:48Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T14:28:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=9e30f716e73b4b830b0fde7c5142d8f6b8deb511'/>
<id>urn:sha1:9e30f716e73b4b830b0fde7c5142d8f6b8deb511</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>`&gt; exec` through a mount no longer hangs the editor, and a close holding a last line is answered at once: the line runs at the editor's next step</title>
<updated>2026-10-01T14:09:59Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T13:45:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=c5e5db988e59689b44feb42c59090c07687bcd42'/>
<id>urn:sha1:c5e5db988e59689b44feb42c59090c07687bcd42</id>
<content type='text'>
A shell's truncating open of exec (or look, ctl, log, pager) sends a
setattr that changes nothing; it waited for the editor to be quiet, and
through a 9ns mount that quiet could never come: 9ns answers nothing else
on the mount while the setattr is out, and the editor's step may be out
reading a pane's file through it. This was the "truncating open of exec
hangs, only in selfmount" mystery. Only a truncate of a pane's file or a
tag waits now.

A close holding a last line with no newline hands it to the editor's step
(tree.runClosedLines, beside fillClosedPagers), as a /pager close does, and
is answered at once; a refusal is the log's err.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A +Pager keeps its program's colours: the session parses what /pager is written after its directory with ghostty-vt, SGR becomes spans drawn over the plain text, every other escape is dropped, and PagerColor off pages it plain</title>
<updated>2026-10-01T13:36:28Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T13:09:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=edad6d960dc0fc1165cbb3b801e0538045b2247f'/>
<id>urn:sha1:edad6d960dc0fc1165cbb3b801e0538045b2247f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>A command or terminal pane refused for room is refused before anything is logged or answered of it, and a serial is never handed out twice</title>
<updated>2026-10-01T13:36:27Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T12:58:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=70881bb4edd15fe918ee5fed4ed3e8922bc7fc6a'/>
<id>urn:sha1:70881bb4edd15fe918ee5fed4ed3e8922bc7fc6a</id>
<content type='text'>
A command pane with no room logged `new N` and `run N ls`, was answered
to its exec, then went with `del N` and no `exit N`; and sync gave N
back (`next_serial -= 1`) to the next pane made, so a script holding N
found another pane under it. Tty did the same. Both now take a refused
placement back at once, before the run is logged or the serial answered
(the pane was never announced, so it leaves no record), and fail the
write with no room. The decrement is gone: gaps are fine, and a serial
once said names one pane for good.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A command line runs when its newline comes, or at its open's close, never because a write was short: a long line cut by a mount is one line</title>
<updated>2026-10-01T13:16:45Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T12:54:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=caa8ed077e8b9b67d18f18b3ec46891bd8d310a7'/>
<id>urn:sha1:caa8ed077e8b9b67d18f18b3ec46891bd8d310a7</id>
<content type='text'>
A write shorter than its message, and not a multiple of 4096, was taken
as whole, its tail a line. 9ns cuts a FUSE write of up to 512 KiB into
65512-byte Twrites, the last one short, so a 600 KiB `Edit ,c/.../`
arrived cut and its tail ran as an unknown control message; the 1 MiB
refusal failed the same way. Each open now holds a partial line until
its newline, or its release, which ends the last line; an Edit block is
whole when it closes, as before. A name write with a NUL still fails
its write at once. selfmount writes a 600 KiB Edit line and a 1.1 MiB
line through a real 9ns mount; building.typ says how lines are cut.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A ctl, exec or look line over 1 MiB is refused once, EINVAL in words a mount maps, and the rest of it is dropped through its newline, not run as a second line</title>
<updated>2026-10-01T11:53:11Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T11:35:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=642bcfd9e37c1a3437c2757434c1d6d9c941d9c4'/>
<id>urn:sha1:642bcfd9e37c1a3437c2757434c1d6d9c941d9c4</id>
<content type='text'>
Past the 1 MiB a line may hold, the write that crossed it was refused
and the pending text dropped, but what followed of the same line was
taken as a new line and ran when its newline came: a second refusal,
`unknown control message "zzz…"`, and a second err. The open now drops
the rest through the newline, and the refusal says `invalid write: a
line or Edit block over 1 MiB`.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A look of `./x` that is not there is a miss, as `x` and `/abs/x` are: the write answered, the err logged, not ENOENT</title>
<updated>2026-10-01T11:53:11Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T11:32:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=c4bc85b8da17ae2a191d0c73424e17fde8b6391e'/>
<id>urn:sha1:c4bc85b8da17ae2a191d0c73424e17fde8b6391e</id>
<content type='text'>
`./x` and `../x` failed their write with ENOENT while every other name
that opens nothing was a miss the write was still answered with. They
are misses now too, said and logged `look: ./x: no such file`. A pane's
own directory gone stays a failure.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>A command pane an exec open was answered is leased to it while that open stays open: another client's command in the same directory gets a pane of its own</title>
<updated>2026-10-01T07:52:47Z</updated>
<author>
<name>Gabriel Schneider</name>
<email>gbrls@0x4200.cafe</email>
</author>
<published>2026-10-01T07:52:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0x4200.cafe/pardes.git/commit/?id=e7aaeca8e12887e2b90aae257c41efce6847c26d'/>
<id>urn:sha1:e7aaeca8e12887e2b90aae257c41efce6847c26d</id>
<content type='text'>
A finished command pane was the next command's for its directory, from
any client, so with four clients scripting one session, one read
another's output as its own last run. An open of a look or exec file
whose write was answered a pane's serial now holds that pane: reuse
passes over it and a new command pane runs the line. The open's own
next command may run there again, and once it is closed the directory's
one command pane is reused as before.

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