Repository navigation
fix(keyboard): repair main's tests and the Claude-review findings on the keyboard-first pass - #1323
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… their current names These tests landed on main alongside #1221 and still queried the accessible names #1221 renamed ("Add", "Press keys… (Esc)", "everywhere"), so 9 tests failed on main. The code is correct and only the queries were stale. The absence checks go through one helper, so they cannot drift to a missing name and pass vacuously. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…send in every pane The Enter router treated any role=listbox in the document as an open popup. Since #1221 the inline condition option list is a listbox, and it lives in long-lived approval and resume strips. So one agent waiting on an approval disabled Enter-to-send and Submit Active Composer app-wide. A listbox now owns Enter only while the user is in it (focus inside, or the focused combobox controls it). The router also leaves Enter aimed inside a pane prompt to that prompt. Before, Enter there submitted another pane's hovered draft. Claude review of #1221, reviewer A, F1 and F3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… deadlock or leak Each pane dialog marked the pane's children inert once on mount, skipping only its own nodes. That broke three ways: - two prompts mounting in one commit (any TileLeaf remount) inerted each other, so neither could be answered; - pane controls mounted after the prompt opened stayed live under the scrim; - the pane toast was inerted, which silenced its live region. One controller per pane now recomputes from DOM order on every registration and every child-list change. Only the newest dialog, its scrim and the feedback layer stay live, and the controller removes only the inert it set. Claude review of #1221: reviewer B F1/F2, reviewer A F2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…latched overlay Raise Cap at the ceiling hides its own button without changing the phase, so focus fell to <body>. The latched gate then swallowed Tab, Enter and Space, and only Escape or the chord got out. From <body>, Tab now focuses the active pane's overlay. A Tab from the dimmed composer is still swallowed. Claude review of #1221, reviewer A F4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every built-in theme's focus ring is the accent, so a flush accent ring on an accent fill showed nothing. #1221 puts focus on exactly these controls: filled confirm buttons, the checked choice card, the selected segment, the toast and the settings-bar toggles. Filled controls now offset the ring from the fill, as Switch already did. The clipped segmented control draws an inset ring in the fill's own foreground. Claude review of #1221, reviewer C F1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…asing ruling
Title casing:
- Question titles go back to sentence case, as the ruling says ("Trust this
folder?", "Delete from disk?").
- Noun-phrase titles become Title Case ("Unsaved Changes", "File Deleted on
Disk", "New Custom Skill").
- Full-sentence titles stay sentence case ("Grok is asking").
Labels and messages:
- "Check Updates".
- The Conversations filter chips show provider names at the segmented
control's size.
- "Couldn't …" becomes "Could not …", and the last UI "directory" becomes
"folder".
The #1221 owner checklist is corrected where it contradicted the code:
- Spotlight and choice arrows now select as they move (k9).
- Condition prompt labels.
- The Working Folder header.
- Text fields show the ring on any focus.
- The chart-tick exception.
Claude review of #1221, reviewer C F2 and F4.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eleven boxes still mixed raw alpha (bg-danger/10, border-danger/40, and the warning equivalents). A Custom Appearance theme that sets danger-soft or warning-soft therefore restyled the Alert boxes and left these on the old tint, so the same error looked different in two places. Each box keeps its layout and only moves to the -soft and -border tokens. Claude review of #1221, reviewer C F3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The AI Workspace active file uses the one selected-row look, the same as the Explorer. - The Conventions and Custom Skill editors use the lg width preset. - The Usage chip reads "Usage N/A". - The DialogActions, dialog-size and condition-refusal WHY comments now say what the code does. The Usage chip's font-normal stays, because its own WHY explains the mixed weights. Claude review of #1221, reviewer C F5/F6/F7/F8 and reviewer B F4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A pane prompt that resolves while the user works in another pane leaves their focus alone. - Enter and Space from the dimmed composer do not pass the latched goal-loop gate. Both mutations survived the suite before these tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…llowups # Conflicts: # src/renderer/src/features/conversations/ui/ConversationsPicker.renderer.test.tsx # src/renderer/src/features/settings/ui/CommandKeybindingsRow.capture.renderer.test.tsx
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Juliusolsson05
marked this pull request as ready for review
September 25, 2026 18:10
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.
Problem
#1221 (keyboard-first UI) merged with two open problems:
temp/review3-1221-*) found regressions and gaps in the merged code. The worst one: a pending approval in one pane disables Enter-to-send and Submit Active Composer in every pane.This PR
Plan:
docs/plans/2026-09-25-keyboard-first-followups.md.Dispositions (Claude review round on #1221)
e092232c; main fixed the same queries in parallel, and the merge takes main's version4915e8694915e86973b7fae2(one controller per pane)73b7fae2(MutationObserver)73b7fae2(feedback layer exempt)efdceaf1b9cb9f5d90898a6c(code or checklist, whichever was wrong)90898a6c. Ruling: full-sentence titles (questions, "Grok is asking") are sentence case, and noun-phrase titles are Title Case. "Can't resume …" stays, because it is a refusal, not a failuree1333b81c2c9e97a14af9673Verification
Focused suites pass, and each new behaviour test fails on main (checked by swapping the files back) with its guard mutation caught. The full renderer run is below.
Refs #1221, Refs #713
🤖 Generated with Claude Code