fix(accessibility): reconcile robust focus appearance after #270 - #334
fix(accessibility): reconcile robust focus appearance after #270#334seonghobae wants to merge 6 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughViewer의 Changes포커스 대비 표시
Estimated code review effort: 4 (Complex) | ~45 minutes Mergeability Score: ⚪ Minimal · up to The PR makes a localized focus-appearance and deterministic verification change, with no actionable merge-blocking risk remaining after normal checks and review. Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@opencode-agent @cwl-noema-review Please independently review exact current head |
|
@opencode-agent review Review exact head Review read-only; preserve independent reviewer identity. Do not mutate the branch, synthesize author approval, weaken protection, or merge. |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
base='eb0a32e87e7470469c8fa0f8c67d9583654bef57'
head='858e22f31ae87ae1b2335884f98c4ff69ab2c793'
git cat-file -e "${base}^{commit}"
git cat-file -e "${head}^{commit}"
git merge-base --is-ancestor "$base" "$head"
printf '\n== Exact commits ==\n'
git show -s --format='%H%n%P%n%s' "$base" "$head"
printf '\n== Changed paths: base...head ==\n'
git diff --name-status "$base" "$head"
printf '\n== Exact diff ==\n'
git diff --no-ext-diff --unified=80 "$base" "$head" -- \
scripts/test_viewer_focus_appearance.py \
src/main/resources/static/assets/viewer/viewer.css
printf '\n== CSS structure ==\n'
ast-grep outline src/main/resources/static/assets/viewer/viewer.css --items all || true
printf '\n== Test structure ==\n'
ast-grep outline scripts/test_viewer_focus_appearance.py --items all || true
printf '\n== Focus-visible rules in exact head ==\n'
git show "${head}:src/main/resources/static/assets/viewer/viewer.css" |
rg -n -A18 -B8 ':focus-visible|outline|box-shadow' || true
printf '\n== Excluded-area path check ==\n'
git diff --name-only "$base" "$head" |
rg -n -i 'viewer.?gen|generation|demo|session|async|asynchronous|controller|pom\.xml|build\.gradle|settings\.gradle|README|docs' || trueLength of output: 15104
No findings. The diff changes only:
The
The contract test requires at least 2px at 3:1 on both reference surfaces. It calculates WCAG contrast from relative luminance. It limits the counted shadow width to The exact diff is path-disjoint from viewer-generation, demo/session, and nested asynchronous-control work. This was an advisory, read-only review. It did not approve, merge, mutate the branch, or change repository gates.
|
Objective
Reconstruct the bounded WCAG focus-appearance fix directly on the protected-main baseline after #270 integrated, so base-sensitive verification runs without predecessor ancestry.
Exact current state — 2026-08-17
858e22f31ae87ae1b2335884f98c4ff69ab2c793;main:eb0a32e87e7470469c8fa0f8c67d9583654bef57;Preserved accessibility contract
The shipped
:focus-visiblerule uses:The deterministic contract computes WCAG relative luminance and contrast, requiring at least 2 CSS px at >=3:1 against both white and black reference surfaces. It also prevents overlapping outline/shadow pixels from being double-counted by limiting the exposed shadow band to the outline offset.
Exact source identity
Changed blobs remain limited to:
scripts/test_viewer_focus_appearance.py;src/main/resources/static/assets/viewer/viewer.css.The protected-main CSS before reconstruction was byte-identical to the former #325 base, proving #270 did not modify this path. #325 remains predecessor evidence only and is superseded by this current-base branch.
Scope / non-completion boundary
This two-file slice does not modify viewer generation ownership (#322/#323), demo/session authority (#317), nested asynchronous controls (#264), Java controllers, build metadata, or canonical cross-cutting documentation. Issue #324 remains the product and standards authority.
Live merge gate
Keep this exact head unchanged. The active organization ruleset requires the configured central workflows, one qualifying approving review, stale-review dismissal on push, approval after the latest push, and review-thread resolution. No bypass actor is configured and the current user cannot bypass. Merge only after those live rules remain satisfied on this unchanged head; automated checks, comments, statuses, or model output do not substitute for the independent approval.
Summary by CodeRabbit
개선 사항
테스트