Fix command palette over focused scratchpad
The stdin loop's scratchpad-input branch ran before the palette branch and silently dropped every byte except a handful of app-level chords, so palette typing and Esc never reached the palette while a pad was focused. Skip the pad-input branch whenever st.palette != nil. closePalette also called repaintFocused() on cancel / no-op action paths, which paints the empty focused-child slot (focusedID == "" while a pad is focused) and leaves the palette's top border drawn over the pad. Route those branches through a restoreView helper that picks repaintFocusedPad when a pad is focused. Switching from a pad to a child via the palette now clears the pad focus and wipes the viewport, matching focusProcess's pad-exit path. Adds a harness scenario (palette_over_scratchpad) that opens a pad, opens the palette, types a query, and verifies that Esc leaves the pad correctly repainted with no palette chrome lingering.
This commit is contained in:
11
CHANGELOG.md
11
CHANGELOG.md
@@ -63,6 +63,17 @@ loosely follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
renders the canonical `--flag` form.
|
||||
|
||||
### Fixed
|
||||
- Opening the command palette while a scratchpad was focused left the
|
||||
palette wedged — typing did nothing and Esc left the palette's top
|
||||
border drawn over the pad until you closed the pad with Ctrl-W and
|
||||
re-opened the palette. The stdin loop's scratchpad-input branch ran
|
||||
before the palette branch and silently dropped every byte except a
|
||||
handful of app-level chords, so palette filter input and Esc never
|
||||
reached `palette.handleInput`. The palette branch now takes
|
||||
precedence whenever the palette is open, and `closePalette` repaints
|
||||
the pad (instead of the empty focused-child slot) on cancel / no-op
|
||||
action. Switching from a pad to a child via the palette now clears
|
||||
the pad focus and wipes the viewport, matching `focusProcess`.
|
||||
- Tab bar and bottom status row no longer get overwritten by long
|
||||
claude / codex sessions. Three holes were letting child output land
|
||||
on the chrome: (1) absolute cursor moves — CUP / HVP / VPA — added
|
||||
|
||||
Reference in New Issue
Block a user