From da920ca49e3f5d1649e811bbdc3ddba482c6aae4 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 07:33:14 -0300 Subject: The docs: a log stat is the whole ring, changed's three forms, terminal +Search rows' column range, /commands in the skill, read -t through FUSE Dogfood round 17 found these false or missing: the skill said a stat of log was one record's length; fs.md's changed covered only unsaved edits; a terminal's +Search row is `@p::`, not a line alone; the skill's /commands line predated `both`, setting values and the description; bash's `read -t` never times out on a followed file through FUSE. Co-Authored-By: Claude Opus 5.5 --- docs/fs.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'docs') diff --git a/docs/fs.md b/docs/fs.md index 8e70af3e..6b393918 100644 --- a/docs/fs.md +++ b/docs/fs.md @@ -350,7 +350,10 @@ same tree without leaving the process. (`LookWord list` on the root ctl lists every place in a `+Search` pane instead, as pardes did before; `LookWord search` is the default). In a terminal, which has no dot to go on from, a plain word is always listed - in a `+Search` pane, its rows naming the terminal as `@p:`, + in a `+Search` pane, its rows naming the terminal as + `@p::`, the columns a range, `@p3:12:5-9` (bytes 5 + through 9 of logical line 12, 1-based, both ends in), which a look of the + row selects, and look reads that pane back. - a line written to `exec` is a middle click: a command word from `src/builtins.zig` (`Save`, `Del`, `New`, `Newcol`, `Mount NAME DIAL`, @@ -728,7 +731,8 @@ scratch, opens its prompt for a path, answered `answer ` or `answer `answer ` when it is answered, by key or ctl, `-` for taken back or for its pane closing with the question standing, `changed ` when a pane's file changed on disk under its unsaved -edits (below), `unsaved ` for each pane an Exit, Restore, +edits (below), `changed reloaded` when a pane with none reloaded +it, and `changed deleted` when it was deleted or moved away, `unsaved ` for each pane an Exit, Restore, Del or Delcol refuses over (before that write's `err`), and `save `, `dump ` when a Dump is written and `restore ` in a Restore's new log after its panes' `new`s (a relative Restore path is looked for in @@ -751,9 +755,9 @@ between words, and ends in an ellipsis, `…`, as an `err`'s reason is past 200; its serial is the pane it ran at, `-` when the keyboard was on a column or workspace tag, or the line came to the root's ctl, `/tagexec` or a column's ctl or exec), and `err -: ` (the serial the pane's whose file it is, and for the root's -`exec` and `look` the pane the line ran at, `err 3 exec: ...`; `-` for -another root file) for every write or truncation the tree refused or that +: ` (the serial is that of the pane whose file it is, and for +the root's `exec` and `look` the pane the line ran at, `err 3 exec: ...`; +`-` for another root file) for every write or truncation the tree refused or that failed -- through a mount a shell sees only the errno its kernel mapped the reply to, usually `Invalid argument`, and this is the reason (`err 3 addr: no match for regexp`). A record said again word for word, straight after @@ -893,7 +897,11 @@ longer than a read comes in pieces, so a shell's `read` loop works: `exec 3<>$m/log; echo follow >&3; while read -r line <&3; do ...; done`. bash's `read` takes a chunk, keeps one line and seeks back to just past it; a followed log, `event` and `pty/data` answer a read at an offset inside -their last answer from that answer again, so no record is lost. `tail -f` +their last answer from that answer again, so no record is lost. Through a +FUSE mount (9ns --mntgen) bash's `read -t` does not time out on a followed +file: the read waits in the mount, where its timer cannot cut it; wrap the +loop in `timeout N`, or read with `cat` in the background and poll what it +wrote. `tail -f` never writes `follow`, so it sees nothing new: use the follow open instead. `/screen` returns JSON with `cols`, `rows`, `cursor`, a `styles` table, and row-major `cells` of `[grapheme, style_index]`. Each open freezes one frame until close. A -- cgit v1.3