fix(tui): restore ask focus after settings#3204
Open
roboomp wants to merge 2 commits into
Open
Conversation
Restored the editor-surface focus target after closing the fullscreen settings overlay so pending ask selectors keep keyboard input instead of returning to the main prompt editor. Added a regression test for the overlay close sequence. Fixes #3203
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Repro
Opening
/settingswhile a model turn is still running can leave anaskselector pending underneath the fullscreen settings overlay. The minimal focus repro is: focus the prompt editor, open a fullscreen settings overlay, attempt to focus a pending ask selector while the overlay is visible, close the overlay, and assert the ask selector has focus; before the fix it printsduringOverlay=settingsandafterClose=editorand exits 1.Cause
SelectorController.showSettingsSelectorinpackages/coding-agent/src/modes/controllers/selector-controller.tsalways calledui.setFocus(this.ctx.editor)when the settings overlay closed. IfExtensionUiController.showHookSelectorhad already mounted anaskselector ineditorContainer, the fullscreen overlay prevented that selector from taking focus until close, and the settings close handler then forced focus back to the main prompt editor.Fix
getEditorSurfaceFocusTargetto choose the active hook selector/input/editor before falling back to the main prompt editor./settingsclose path to restore focus to that active editor-surface component after hiding the overlay.asktool after exiting/settings#3203.Verification
Ran
bun test test/settings-focus.test.tsandbun run check:typesinpackages/coding-agent; both passed.gh_push_branchcompleted the pre-publish gate and pushed the branch. Fixes #3203