Skip to content

feat: keyboard-accessible sidebar resize handles#469

Merged
tomasz-tomczyk merged 3 commits intomainfrom
fix/164-esc-confirm-and-resizable-sidebars
May 5, 2026
Merged

feat: keyboard-accessible sidebar resize handles#469
tomasz-tomczyk merged 3 commits intomainfrom
fix/164-esc-confirm-and-resizable-sidebars

Conversation

@tomasz-tomczyk
Copy link
Copy Markdown
Owner

Summary

Sidebar resize handles gain keyboard support and a focus indicator.

  • Handles previously used aria-hidden="true" and were unreachable by keyboard. Now use role="separator", tabindex="0", aria-orientation="vertical", with ArrowLeft/ArrowRight nudging width by 16px (clamped to min, persists via existing settings cookie).
  • Adds :focus-visible brand-color style so keyboard users can see the focused handle.

Companion to tomasz-tomczyk/crit-web#177, which ports the resizable-sidebars feature itself plus this same a11y polish to the hosted review surface.

Review

  • Code review: passed
  • Parity audit: in sync with crit-web

Test plan

  • go build clean
  • gofmt + golangci-lint + go test (race, count=1) all pass via pre-commit hook

🤖 Generated with Claude Code

tomasz-tomczyk and others added 2 commits May 5, 2026 21:38
Add role="separator" tabindex="0" aria-orientation="vertical" to the
file-tree and comments-panel resize handles, plus ArrowLeft/ArrowRight
keydown that nudges width by 16px (clamped to per-handle minimum).
Replaces the previous aria-hidden="true" that hid the handles from
assistive tech entirely.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Keyboard users tabbing to the sidebar resize handles got no focus
indicator. Match crit-web's :focus-visible style — the brand-color
strip already used for hover/dragging, with outline:none so the
default browser ring doesn't double up.
@codecov
Copy link
Copy Markdown

codecov Bot commented May 5, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.18%. Comparing base (d7a9e4b) to head (42277fc).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #469      +/-   ##
==========================================
+ Coverage   69.15%   69.18%   +0.02%     
==========================================
  Files          36       36              
  Lines       10749    10736      -13     
==========================================
- Hits         7434     7428       -6     
+ Misses       2749     2744       -5     
+ Partials      566      564       -2     
Flag Coverage Δ
e2e 32.42% <ø> (+0.03%) ⬆️
unit 66.71% <ø> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Per ARIA spec, role="separator" with tabindex="0" requires aria-valuenow
(plus min/max). Static 50/0/100 satisfies the contract; the handle's
operational behavior (arrow keys, drag) doesn't depend on these values.
Fixes axe-core aria-required-attr violation in the e2e suite.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tomasz-tomczyk tomasz-tomczyk merged commit d06a296 into main May 5, 2026
6 checks passed
@tomasz-tomczyk tomasz-tomczyk deleted the fix/164-esc-confirm-and-resizable-sidebars branch May 5, 2026 21:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant