add reusable TUI option selector over shared option snapshots#13716
add reusable TUI option selector over shared option snapshots#13716harryalbert wants to merge 1 commit into
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
0e8169a to
a1da335
Compare
ba49160 to
d079c43
Compare
6a11bfe to
bf39ff7
Compare
d079c43 to
891ad83
Compare
891ad83 to
8bb2a10
Compare
8bb2a10 to
046ec66
Compare
a0ee2eb to
1d2cca1
Compare
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
This PR adds a reusable headless TUI option selector and generic single-line editor, refactors shared TUI editor keybindings, adds selector/editor render and interaction tests, and documents the as-built design.
Concerns
- Custom-text editing can be left in an inconsistent state because selector list navigation still runs while the embedded custom editor is active.
- No material security issues were found in the attached diff.
spec_context.mdcontains no approved or repository spec context, so there was no implementation/spec drift to flag.
Verdict
Found: 0 critical, 1 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
1d2cca1 to
991c04e
Compare
199ce8a to
1e3458b
Compare
d072325 to
6cd77f2
Compare
a64da86 to
db3a140
Compare
6cd77f2 to
2920205
Compare
db3a140 to
9ebd6fb
Compare
57de933 to
1d83418
Compare
9ebd6fb to
159290e
Compare
b8bfd16 to
af6c184
Compare
159290e to
6d09be2
Compare
| } | ||
| } | ||
| TuiOptionSelectorAction::Dismiss => { | ||
| if !self.handle_back(ctx) { |
There was a problem hiding this comment.
when do we want to distinguish dismiss vs. escape?
| KeyCode::PageUp => Some("pageup".to_owned()), | ||
| KeyCode::PageDown => Some("pagedown".to_owned()), | ||
| KeyCode::Tab | KeyCode::BackTab => Some("\t".to_owned()), | ||
| KeyCode::Tab | KeyCode::BackTab => Some("tab".to_owned()), |
There was a problem hiding this comment.
do we need to also update named_control_key_to_c0?
| - Search and custom text use the shared `TuiEditorView`; printable characters, cursor, | ||
| selection, single-line paste, horizontal/word/line navigation, undo/redo, and | ||
| kill/yank come from the shared editor layer. Escape remains host policy with a | ||
| selector fallback: it clears a non-empty search first, cancels custom editing, or |
There was a problem hiding this comment.
i think the code does the right behavior of only clearing the non-empty search if it is focused but want to confirm that was your intended flow? if so maybe we can update this spec to be more specific that we clear a non-empty search only if it's focused
af6c184 to
36b0f8c
Compare
6d09be2 to
bc1a9f3
Compare
36b0f8c to
1660f1c
Compare
Co-Authored-By: Oz <oz-agent@warp.dev>
1660f1c to
edc2ee4
Compare
ee6779e to
1c508d1
Compare

Description
Linked Issue
ready-to-specorready-to-implement.Testing
./script/runScreenshots / Videos
Agent Mode