CRITICAL: Remove (declare (ignore w)) from textarea render (textarea.lisp:251)
w is used for horizontal truncation on the next line. Declaring it
ignored while using it is undefined behavior in CL (SBCL warns).
HIGH: hit-test recurses into children (mouse.lisp:18-34)
Was returning the root component for any click within its bounds,
ignoring nested widgets entirely. Now checks component-children
first, returning the deepest match.
MEDIUM: Select/TabBar position hardcoded to (0,0)
Both rendered at terminal origin regardless of layout position.
Now read layout-node-x/y for absolute positioning.
MEDIUM: Text-input truncation missing
Render drew full value string even when exceeding widget width.
Now truncates to (min (length display) w).
MEDIUM: X10 mouse release detection added (input.lisp:219-226)
X10 encoding uses button=3 for release. Was detecting all events
as press/drag. Now checks button=3 → :release.
MEDIUM: parse-csi-params handles private markers (input.lisp:128-131)
< = > ? characters (0x3c-0x3f) treated as parameter start markers
instead of accumulating bogus digit values. Latent trap removed.
Deferred (pre-existing design):
- Scrollbox visibility cy vs orig-y: match for column layout (common case)
- Nested scrollbox coordinates: assumes sequential layout positions
- text-input cursor drawing: feature, not bugfix
392 tests pass.