diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-21 23:23:22 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:14 -0300 |
| commit | 8fc6bb0633d7992dad6b28a2d36730689226e096 (patch) | |
| tree | 0139d5be0d57d93c1af3706d2b1c6b576c005ddb /features.txt | |
| parent | 50e91395a2b82f586b50eafb57df945f01a3058c (diff) | |
| download | pardes-8fc6bb0633d7992dad6b28a2d36730689226e096.tar.gz pardes-8fc6bb0633d7992dad6b28a2d36730689226e096.zip | |
Stack a pane's transient lines instead of letting the last one win the row
A pane's message, its pending leader chord and a prompt waiting for input all
wanted the same row above the tagline. The prompt won it, the leader drew over
whatever was there on the right, and renderBodyLayer recomputed "is anything
down there" inline to reserve a single row. Three claimants, one row, and two
places deciding.
Pane.Notices is that decision in one place: a short ordered list of the lines
a pane is showing, rebuilt every frame by collectNotices from the state that
owns each one. The body layer reserves exactly notices.len rows, the way it
already reserves rows for sticky context headers, and the paint pass walks the
list and gives each line a row of its own, stacked upward from the tagline.
Nothing stores a second copy of the truth, so a line that goes away is simply
not added next frame and the rest close the gap. One notice lands on exactly
the row the message always had, and the prompt stays nearest the tagline so it
keeps its cursor.
Last also learned what to do when the jumplist is empty. It used to walk the
jumps and, finding nothing, do nothing at all -- which is the ordinary case
for a pane that opened beside this one and was never focused, such as the text
pane the bare tty layout puts under the shell. It now falls back to
neighbourPane: the next pane down the column, wrapping, and any other live
pane failing that. Alternating with the neighbour is what Last is for.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Diffstat (limited to 'features.txt')
| -rw-r--r-- | features.txt | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/features.txt b/features.txt index 7515d455..e05f6f07 100644 --- a/features.txt +++ b/features.txt @@ -136,3 +136,6 @@ gamepad subsystem. Two fields and a branch for nothing, so it went back out. Conclusion for both platforms: nothing in pardes's own logic is slow at startup. The cost is the Debug build's allocator tracing and the GPU/driver stack coming up, and the only lever on either is the build mode. + +The Last builtin should fall back to a heuristic when the jumplist has nothing to offer, so the bare tty layout -- a shell with an unfocused text pane under it -- +alternates with Last even though that text pane was never focused and is not on the jumplist. |
