summaryrefslogtreecommitdiff
path: root/docs/fs.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/fs.md')
-rw-r--r--docs/fs.md9
1 files changed, 7 insertions, 2 deletions
diff --git a/docs/fs.md b/docs/fs.md
index a0dd86fa..9d95b36e 100644
--- a/docs/fs.md
+++ b/docs/fs.md
@@ -186,12 +186,17 @@ an open renders its frame; stat the entry.
`/log` is one ring (64 KiB) that records whether or not anyone reads it:
`new`, `del`, `rename` and `save <serial> <name>`, and `msg <serial|-> <text>`
-for every line the editor says, builtins announcing themselves included.
+for every line the editor says, repeats included (with `verbose` on, that
+includes each builtin announcing itself as it runs). A `msg` said while a
+pane is being made can precede that pane's `new`; panes present at boot are
+recorded before anything else.
Control characters in a record become spaces, so a record is one line. An
open freezes the ring's text the way `/screen` freezes a frame: reads walk it
and end. Writing `follow` to that same open makes reads past it park for the
next record, one per read; a follower the ring outran reads `lost N` first.
-Closing the open is the only way back, as with rio's `consctl`. `/screen` returns JSON with
+Closing the open is the only way back, as with rio's `consctl`. A record
+longer than a read comes in pieces, so a shell's `read` loop works. `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
terminal `body` freezes its history on the first read of each open handle;