feat(tui-go): transparent modal backdrops
Modals now composite over a dimmed copy of the screen behind them instead of an opaque scrim, so the transcript stays faintly visible around a modal (opencode-style). center() stashes the frame's base (View sets m.lastBase), strips+dims it to a faint scrim, and splices the modal box over it (ANSI-aware via ansi.Truncate/TruncateLeft so the side margins keep the dimmed content). An idempotence guard passes an already-full-screen modal through unchanged, so the existing double-center builders don't get re-dimmed. Geometry tests assert the composite still fills the screen exactly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -311,6 +311,11 @@ type Model struct {
|
||||
snapshotPhase bool
|
||||
pendingEvents []protocol.ServerMessage
|
||||
|
||||
// lastBase is the full-screen render behind the active modal, stashed by View each
|
||||
// frame so center() can composite a modal over a dimmed copy of it (transparent
|
||||
// backdrop) instead of an opaque scrim. Transient render scratch — not real state.
|
||||
lastBase string
|
||||
|
||||
// approval steering input buffer
|
||||
steerBuffer string
|
||||
steering bool
|
||||
|
||||
Reference in New Issue
Block a user