a73x

98a28017

docs: a split arrow key closes the picker — the trade-off, and the fix if it's ever wrong

a73x   2026-08-28 19:53

Commit message
docs: a split arrow key closes the picker — the trade-off, and the fix if it's ever wrong

README.md
Old New
@@ -91,7 +91,7 @@ The focused tile has the terminal, and only the prefix is held back:
91 | `Ctrl-\` `1`-`9` | focus tile N — the digit on that tile's label bar. A new tile takes the lowest free digit, so end 2 of 1 2 3 and the next session is 2 again | 91 | `Ctrl-\` `1`-`9` | focus tile N — the digit on that tile's label bar. A new tile takes the lowest free digit, so end 2 of 1 2 3 and the next session is 2 again |
92 | `Ctrl-\` `x` | end the focused session — the daemon hangs up its shell and every attached client sees the exit. With other clients on it the daemon refuses the first press and says how many; a second `x` within 3 seconds forces it | 92 | `Ctrl-\` `x` | end the focused session — the daemon hangs up its shell and every attached client sees the exit. With other clients on it the daemon refuses the first press and says how many; a second `x` within 3 seconds forces it |
93 | `Ctrl-\` `w` | zoom out to the wall | 93 | `Ctrl-\` `w` | zoom out to the wall |
94 | `Ctrl-\` `s` | the host picker: a popup listing every daemon on the wall with what its last poll said — `N sessions`, `no sessions`, `unreachable`, `connecting`. `j`/`k` or the arrows move, `1`-`9` pick a row, Enter or `c` starts a session on the selected machine and closes, `x` forgets it (the file line goes, the sessions keep running), `a` adds one by spelling — `HOST`, `quic://HOST[:PORT]` or `--sock PATH`, Enter adds and Esc returns to the rows. Esc or `s` closes. The spelling editor takes printable ASCII only, so a path or hostname with any other byte in it goes in the hosts file or on argv instead. While the picker is open every key is its own: nothing reaches a session | 94 | `Ctrl-\` `s` | the host picker: a popup listing every daemon on the wall with what its last poll said — `N sessions`, `no sessions`, `unreachable`, `connecting`. `j`/`k` or the arrows move, `1`-`9` pick a row, Enter or `c` starts a session on the selected machine and closes, `x` forgets it (the file line goes, the sessions keep running), `a` adds one by spelling — `HOST`, `quic://HOST[:PORT]` or `--sock PATH`, Enter adds and Esc returns to the rows. Esc or `s` closes — and an arrow key split across two reads reads as a bare Escape, so it closes too. The spelling editor takes printable ASCII only, so a path or hostname with any other byte in it goes in the hosts file or on argv instead. While the picker is open every key is its own: nothing reaches a session |
95 | `Shift+PageUp` / `Shift+PageDown` | scrollback, a screen at a time (any other key returns to live) | 95 | `Shift+PageUp` / `Shift+PageDown` | scrollback, a screen at a time (any other key returns to live) |
96 | mouse wheel | scrollback, three rows a notch (arrow keys to a full-screen app) | 96 | mouse wheel | scrollback, three rows a notch (arrow keys to a full-screen app) |
97 | drag with the left button | select what it crosses, copy on release | 97 | drag with the left button | select what it crosses, copy on release |
docs/decisions.md
Old New
@@ -7346,6 +7346,14 @@ is mux's, because a script reads that code — so `Tile.keeps_wall` does, set
7346 by `pickBirth` and read by `endAction` before the exit arm. A piped `mux` has 7346 by `pickBirth` and read by `endAction` before the exit arm. A piped `mux` has
7347 no wall to leave standing and still exits with the code. 7347 no wall to leave standing and still exits with the code.
7348 7348
7349 Nothing is held across reads, so a SPLIT arrow closes the popup: an Esc that
7350 arrives alone is a bare Escape, and the `[A` behind it lands in the next read
7351 with `picking` already false and goes to the focused session. Holding the Esc
7352 back would make every real Escape wait for the next keystroke, which is worse
7353 — terminals write an arrow as one three-byte write, and the `:` prompt has
7354 taken the same trade since it existed. A hold buffer is the fix if a terminal
7355 that splits is ever found.
7356
7349 ## 2026-08-28 — a new tile takes the lowest free digit 7357 ## 2026-08-28 — a new tile takes the lowest free digit
7350 7358
7351 Reuse, not renumbering. `Ctrl-\ 1-9` addresses digits, so a digit an ended 7359 Reuse, not renumbering. `Ctrl-\ 1-9` addresses digits, so a digit an ended