summaryrefslogtreecommitdiff
path: root/features.txt
diff options
context:
space:
mode:
Diffstat (limited to 'features.txt')
-rw-r--r--features.txt30
1 files changed, 30 insertions, 0 deletions
diff --git a/features.txt b/features.txt
index eeadba39..d035648a 100644
--- a/features.txt
+++ b/features.txt
@@ -167,3 +167,33 @@ Found by adversarial review and NOT fixed, because they are upstream or macOS-on
frontend. Fixing it means a new header variant, i.e. a protocol change.
- A shell that outlives its editor keeps PARDES_PID; if that pid is reused, `pardes <file>` now exits 1 instead of falling back to starting an editor. Exiting 1
only when the socket itself refused would keep the old behaviour.
+
+Notices are tagline bands at the TOP of the body now, not a row of body text at the bottom. Each message or leader prefix is emitted through the same
+renderHeaderLayer the pane and column tags use, as a TagLayer of the new `.notice` kind, so it gets the tagline's height, its small-font metrics, its band
+offset and its border for free -- none of which a body-grid row can have just by wearing a tagline font. The text is right aligned. The prompt stays on the
+canonical grid because it owns a cursor, which has to sit on a real cell.
+
+The body starts BELOW the bands rather than under them: Pane.body_offset is the number of rows they take, and every painter and hit test derives the body's
+first row from Pardes.bodyTop(pane, rect). That replaced fifteen copies of `if (tag_bottom) r.y else r.y + BOX_H` scattered across the paint and pointer paths,
+which is what let the bands and the text they sit over come adrift in the first place. renderBodyLayer zeroes the offset around its own render, because it
+paints into a surface of its own that carries no bands.
+
+Every notice is ALSO painted on the canonical grid, because the grid is what a terminal client draws and a band it cannot see is a message it never gets. The
+GUI skips grid cells a tag layer covers, so nothing is drawn twice there.
+
+Snapshot suite: 97/98. The goldens were several commits stale (Delcol on the column tagline, the closing word moved last in every
+tagline, the bare-tty boot's empty pane, stacked Locations rows, the notice bands) and 17 scripts had stopped running at all. Fixed
+by making the scripts say what they mean rather than by loosening them: `config <line>` is a new snapshot-script command that appends
+to the per-script startup config, so a script that clicks body coordinates can pin `Verbose off` instead of counting the rows an
+announcement band moves; `@word` column specs replace counted columns where a tagline word has moved; and two grids grew because a
+pane tag is wider now than its `Del` could fit in.
+
+Found by that pass and fixed: a watched file reloading under the editor changed the core WITHOUT going through `update`, so
+`needs_frame` was never set and the reload was never drawn. `Pardes.invalidate()` is the name for "something changed me from
+outside the event loop"; `reloadWatchedFile` and the theme reload call it.
+
+Also from it: a toggle setting now SETS when given `on` or `off` and only flips when it is bare, so `writeReport`'s `Verbose on`
+means what it says when fed back as configuration -- the symmetry the report was asked for, on the input side too.
+
+Left failing, deliberately: `nested-optout`. See docs/divergences.md -- two levels of nesting prepend U+E016 (vaxis's F3) to typed
+lines, which is a real bug in the key-forwarding path and not a stale expectation.