From 7aa057e29b729ad6d9ac53e3a06f99858fc449e4 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 00:50:45 -0300 Subject: A column has a ctl, an exec and an rmdir over 9P, and Restore maps its serial A script could read and write a column's tag but not act on the column. col//ctl takes Delcol, Joincol, New and Tty, each acting on that column as from its tag; col//exec runs a word as a middle click in the tag; rmdir col/ closes an empty column and refuses one with panes (ENOTEMPTY, an err record saying why). The root ctl's refusal of Delcol and Joincol points at col//ctl. A dump keeps each column's serial and Restore logs restoredcol ; the dump golden gains them. Documented: Joincol's survivor, the column on the right, keeps its serial and tag. Co-Authored-By: Claude Opus 5.5 --- src/pardes.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pardes.zig') diff --git a/src/pardes.zig b/src/pardes.zig index a6a088de..8b3687a0 100644 --- a/src/pardes.zig +++ b/src/pardes.zig @@ -5309,7 +5309,7 @@ pub const Pardes = struct { p.raw_hover_intent = false; look.cancelLookHover(p); const reply = ctlfs.handle(p, req); - if (reply.status == .err and (req.op == .write or req.op == .setattr or (req.op == .open and reply.errno == ctlfs.E.NFILE))) ctlfs.events.noteError(p, req, reply); + if (reply.status == .err and (req.op == .write or req.op == .setattr or (req.op == .open and reply.errno == ctlfs.E.NFILE) or (req.op == .release and req.remove))) ctlfs.events.noteError(p, req, reply); // The request was a whole step of its own, so it settles the way a // step does: the cursor and scroll reconciled, the scripted panes // told, and the panes it made announced to /log now rather than at -- cgit v1.3