summaryrefslogtreecommitdiff
path: root/src/ninep/cols.zig
Commit message (Collapse)AuthorAge
* A column's ctl refuses as the other ctls do, and a bare answer says what it ↵Gabriel Schneider5 days
| | | | | | | | | | | | takes A column's ctl refused an unknown word in words 9ns maps to EIO, and took New extra as New. It now refuses the word as unknown control message (EINVAL, as the root and pane ctls) and any word but Tty with an argument as wrong #args. A bare answer on a pane's ctl says answer takes a choice or -, not unknown control message. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* A command run from a column's tag gets its pane in that columnGabriel Schneider5 days
| | | | | | | | | A command from a column's tag ran in a command pane at the foot of the last column, however far from the tag, and could reuse a finished one anywhere. It now goes to the tag's column, under both placements, and reuses only a finished command pane in that column. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* Words from the workspace and column tags run in the session's directoryGabriel Schneider5 days
| | | | | | | | | | A command or Tty run from the workspace tag or a column tag started in the focused pane's directory, though those tags have none of their own. As acme's row and column tags do, they now run in the session's directory, where pardes started (Pardes.sessionDir); a pane's tag and text keep the pane's. The same for /tagexec, a column's exec and ctl. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* An exec line over 1024 bytes fails the write, naming the limitGabriel Schneider5 days
| | | | | | | | | | A command line longer than the 1024 bytes a command pane takes was said on the message row after the write had already succeeded. An exec write (the root's, a pane's, tagexec, a column's) now refuses it before anything runs, EINVAL with "a command line is at most 1024 bytes" and an err record; a builtin's line, a long Msg or an Edit block, is not limited. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* The workspace tag has /tagexec, every exec file reads back what it touched, ↵Gabriel Schneider5 days
| | | | | | | | | | | | | | and a tag's words log as the session's /tagexec runs a word as a click in the workspace tag, as col/<serial>/exec does in a column's. A column's exec was write-only; it and /tagexec now read back the serials the last write touched, as /exec does. A click in a tag no longer goes to the focused pane's event reader, and what a word run from a column's ctl or exec or /tagexec says is logged msg -, not against the focused pane. The README, fs.md and the skill say so, and document the answer record. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* An error on a column's ctl, exec or rmdir names that file in the logGabriel Schneider5 days
| | | | | | | | noteError named every column node col/<serial>/tag, so a refused ctl write or rmdir pointed at the tag. It now names col/<serial>/ctl, /exec, /tag or the directory itself. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* A column has a ctl, an exec and an rmdir over 9P, and Restore maps its serialGabriel Schneider5 days
| | | | | | | | | | | | | | A script could read and write a column's tag but not act on the column. col/<serial>/ctl takes Delcol, Joincol, New and Tty, each acting on that column as from its tag; col/<serial>/exec runs a word as a middle click in the tag; rmdir col/<serial> 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/<serial>/ctl. A dump keeps each column's serial and Restore logs restoredcol <old> <new>; 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 <[email protected]>
* A focus write makes its pane's column the active one, and layout's active is itGabriel Schneider5 days
| | | | | | | | | | | Writing a serial to /focus gave that pane the keyboard but left the active column where it was, so pane/new under Placement acme went elsewhere, and /layout's active named the keyboard's column rather than where a new pane would go. A focus write now sets the active column as the user's click there would, under either Placement, and /layout's active names the active column, which pane/new and a look place into. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* Columns are named by stable serials over 9P, as panes areGabriel Schneider5 days
| | | | | | | | | | | /col/<n> named a column by its index, which shifts when a column left of it closes: exactly what scripts trip on. A column is now /col/<serial>, its serial kept while it lives and never reused; /layout lines give serial and index (`<serial> <index> ...`), active names the serial, /index's last field is the column's serial, and the log says newcol and delcol with serials. Docs, the skill and the tree's README say so. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* The tree serves the layout: /layout, /tag and /col/<n>/tagGabriel Schneider5 days
A script could not see where the panes sit or edit the tags a person clicks in. /layout lists each column, its index, x and width in cells, current or not, empty or full, and its panes' serials, then the active column; /tag is the workspace tag and /col/<n>/tag a column's, read and written as a pane tag is (one line: a newline written in is a space, and a truncating write drops the one ending it); /index's lines end with the pane's column; the log says newcol <n> and delcol <n>. acme serves no column files, and the docs say so. Co-Authored-By: Claude Opus 5.5 <[email protected]>