fix(vscode): expose prompt suggestions to screen readers#10689
fix(vscode): expose prompt suggestions to screen readers#10689marius-kilocode wants to merge 6 commits into
Conversation
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Full review completed against HEAD
All source changes are clean. The existing general comment on the PR covers the only design-level consideration (stale broader-query responses surfacing when Files Reviewed (13 source files + 19 i18n files)
Reviewed by claude-sonnet-4.6 · 1,359,783 tokens Review guidance: REVIEW.md from base branch |
There was a problem hiding this comment.
Regression-focused subagent review: no merge-blocking accessibility regression identified, but there is a latency/interaction risk worth covering before relying on the new announcement behavior.
In packages/kilo-vscode/webview-ui/src/hooks/useFileMention.ts, incrementing fileSearchCounter before the debounce fires immediately discards an in-flight broader-query response. If that response already contains results matching the newly typed narrower query, users now see an empty/loading suggestion menu until the next debounced request returns, whereas the prior handler could filter and present those valid results. This affects keyboard and mouse suggestion selection under latency. Consider retaining matching provisional results while pending() stays true, and add a test for an in-flight broader response that contains a valid narrower-query match.
740e709 to
6c785e3
Compare
58c829e to
4d02387
Compare
The primary chat prompt and its suggestion popups are not reliably operable with a screen reader: the editor loses a meaningful accessible name once text is entered, and
@file mentions and/commands provide no programmatic popup, active-option, selection, or empty-result feedback.This change gives the prompt a stable combobox contract and exposes both suggestion flows as linked listboxes with announced traversal, loading, empty, and selection states. It preserves existing insertion and action behavior while ensuring unresolved command loading does not leave assistive feedback stuck indefinitely. Focused interaction coverage protects the repaired workflows and their async edge cases.
Related to #10654 and #10673.