Important
Review skipped
Review was skipped as selected files did not have any reviewable changes.
External image Run configuration
- Source mode: Auto
- Repository: pingdotgg/t3code
- Branch: main
- File: .coderabbit.config.ts
- Commit: 71646e0
- Layers: Repository TS config
- Review profile: CHILL
- Plan: Advanced
- Run ID:
8ab536e2-1d2c-4dc4-a282-9ecdc1e8ec39
External image Commits
Reviewing files that changed from the base of the PR and between 2af6b97889fb706946d39e5ce60def69882f970f and d2360cbe578d93ddcff83c2d42dfd53fc331378e.
You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.
Use the checkbox below for a quick retry:
- Trigger review
No actionable comments were generated in the recent review.
External image Recent review info
-
External image Run configuration
- Source mode: Auto
- Repository: pingdotgg/t3code
- Branch: main
- File: .coderabbit.config.ts
- Commit: 30654b3
- Layers: Repository TS config
- Review profile: CHILL
- Plan: Advanced
- Run ID:
5f3e522e-f6bb-473a-8c19-2482ed025dae
External image Commits
Reviewing files that changed from the base of the PR and between 44a5b303c5b8b33d4fcfab2c03612658ec1e78bc and 2af6b97889fb706946d39e5ce60def69882f970f.
External image Files selected for processing: 6
apps/web/src/components/ChatView.logic.tsapps/web/src/components/Sidebar.tsxapps/web/src/components/sidebar/SidebarDraftBlock.tsxapps/web/src/components/sidebar/SidebarListMarkers.tsxapps/web/src/components/sidebar/SidebarProjectFolderHeader.tsxapps/web/src/components/sidebar/SidebarThreadRow.tsx
External image Files with no reviewable changes: 2
- apps/web/src/components/sidebar/SidebarListMarkers.tsx
- apps/web/src/components/sidebar/SidebarProjectFolderHeader.tsx
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
Walkthrough
The sidebar replaces ARIA tree semantics and a single Tab stop with focusable rows and actions. Arrow-key navigation and focus restoration remain available through updated sidebar logic. Focus selectors, browser tests, and keyboard-focus documentation now target the button-based list.
Changes: Sidebar navigation
Layer / File(s) Summary Restore sidebar list semantics
apps/web/src/components/Sidebar.tsx,apps/web/src/components/sidebar/*,apps/web/src/components/ChatView.logic.ts,apps/web/src/lib/workspaceFocus.ts,apps/web/src/components/ChatView.logic.browser.test.tsThe sidebar list uses presentation semantics. Thread and draft rows use the button role and are in the Tab order. Focus selectors target rows marked with data-sidebar-rowor the current-page marker.Update sidebar navigation and focus restoration
apps/web/src/lib/sidebarTree.ts,apps/web/src/lib/sidebarTree.browser.test.ts,docs/user/keyboard-focus.mdThe navigation logic discovers visible rows and uses arrow keys, Home, and End to move focus without opening rows. It tracks the focused row and restores focus after relevant mutations. Tests and documentation reflect the row and action Tab order. Estimated code review effort: 3 (Moderate) | ~25 minutes
Change: Bug fix · Severity of issue fixed: Medium
Possibly related issues
- pingdotgg/t3code#13959 — The PR restores Tab access to row actions, but the nested row-button issue remains out of scope.
Suggested reviewers:
t3dotgg
Merge Risk: External image Minimal · previous review 2af6b
No current-PR merge risk remains from the reviewed concerns.
Pre-merge checks: Passed 4
Check name Status Explanation Title check Passed The title clearly and concisely describes the main change: restoring screen-reader browsing and Tab navigation through the threads sidebar without requiring focus mode. Description check Passed The description includes all required sections: Problem, Change, Scope and approval, and Verification. It explains the behavior change, affected components, scope limits, test results, NVDA validation… Linked Issues check Passed Only #26562is directly linked and active. Its coding requirements are: restore list semantics before#25877; use- ; make thread rows, drafts, section headers, project folder he…
Out of Scope Changes check Passed Every changed file maps to #26562. The source changes are Sidebar.tsx, SidebarThreadRow.tsx, SidebarDraftBlock.tsx, SidebarListMarkers.tsx, SidebarProjectFolderHeader.tsx, sidebarTree.ts, workspaceFoc…Full details: Description check
Explanation
The description includes all required sections: Problem, Change, Scope and approval, and Verification. It explains the behavior change, affected components, scope limits, test results, NVDA validation, and the untested VoiceOver case. The Scope and approval section identifies issue
#26562but does not include a direct approval comment link; the description remains mostly complete.
Full details: Linked Issues check
Explanation
Only
#26562is directly linked and active. Its coding requirements are: restore list semantics before#25877; use <ul role="presentation">; make thread rows, drafts, section headers, project folder headers, and "load older" normal buttons with tabIndex={0}; keep each row's buttons in the Tab order; keep F6, Shift+F10, F2, and the shown/hidden announcement; and replace the treeitem selectors in workspaceFocus.ts and ChatView.logic.ts. The whole-PR diff at head 2af6b97889 meets these points. Sidebar.tsx sets role="presentation" on the thread <ul> and removes SIDEBAR_TREE_PROPS. The Show more settled button drops role="treeitem" and tabIndex={-1}. The earlier summary states that rows, drafts, section headers, project folders, and load-older controls lose treeitem and tabIndex={-1}. sidebarTree.ts keeps arrow-key, Home/End, expand, Shift+F10, and focus-restore behavior, and no longer writes aria-level, aria-posinset, or aria-setsize. workspaceFocus.ts and ChatView.logic.ts select data-sidebar-row. Tests were updated for Tab order and refocus. The change since the previous review is the merge of main in 2af6b97889. The Sidebar.tsx diff for that change only removes the SIDEBAR_TREE_PROPS import and spread, and the author reports check:changed passes. Maintainer prior-approval discussion is a process matter, not a coding requirement, and was not assessed here. Not verified: the shown/hidden announcement behavior and VoiceOver, which the PR states were not tested. The sidebarTree.ts diff exceeded the inspection buffer, so the full refactor was assessed from the PR summary and the previous assessment.
Full details: Out of Scope Changes check
Explanation
Every changed file maps to
#26562. The source changes are Sidebar.tsx, SidebarThreadRow.tsx, SidebarDraftBlock.tsx, SidebarListMarkers.tsx, SidebarProjectFolderHeader.tsx, sidebarTree.ts, workspaceFocus.ts, and ChatView.logic.ts. The test changes are sidebarTree.browser.test.ts and ChatView.logic.browser.test.ts. The documentation change is docs/user/keyboard-focus.md. The merge commit 2af6b97889 changes only the import in Sidebar.tsx. The Settings nav tree role is left unchanged and is named as out of scope. No nested row-button redesign appears in the change set. The nested-button work remains out of scope under#13959. The sidebarTree.ts diff exceeded the inspection buffer, so its scope was judged from the PR summary and the previous assessment, which found no unrelated behavior.
Finishing Touches
Generate unit tests (beta)
- Create a new PR
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
CodeRabbit Verify
- Run CodeRabbit Verify to test the changes in this pull request.