fix(app): working scrollback search + stop prompt duplication on focus

Search fixes:
- TerminalView sets allowProposedApi (the search addon's match decorations
  use registerMarker/registerDecoration); without it findNext threw before
  firing results, so the counter was stuck at 0/0.
- The search bar now renders inside the panel it targets (in the header)
  instead of a global top-right overlay, so it's obvious which panel is
  searched.
- Search is anchored to the panel it was opened on (searchSurfaceId) and no
  longer follows focus — opening it in one panel and switching away no longer
  shows it open elsewhere.

Prompt duplication:
- The focus border was 1px when unfocused, 2px when focused; with border-box
  that resized the content on every focus switch, firing ResizeObserver -> fit
  -> PTY SIGWINCH and making zsh/powerlevel10k reprint its prompt. The border
  is now a constant 2px, color-only on focus.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-14 08:34:43 +07:00
parent a30ec1cc7f
commit 04ac7cdec2
4 changed files with 43 additions and 18 deletions
+9 -7
View File
@@ -61,18 +61,20 @@ export function SearchBar({
return (
<div
style={{
// Anchored to the focused panel's card (position:relative). Sits over
// the 30px header so it's obvious which panel is being searched.
position: "absolute",
top: 8,
right: 16,
top: 3,
right: 6,
zIndex: 50,
display: "flex",
alignItems: "center",
gap: 6,
height: 32,
padding: "0 8px",
gap: 4,
height: 24,
padding: "0 6px",
background: COLORS.bgElevated,
border: `1px solid ${COLORS.borderStrong}`,
borderRadius: 8,
borderRadius: 6,
boxShadow: "0 4px 16px rgba(0,0,0,0.4)",
}}
>
@@ -100,7 +102,7 @@ export function SearchBar({
}}
placeholder="Search scrollback"
style={{
width: 200,
width: 150,
background: "transparent",
border: "none",
outline: "none",