fix(a11y): define preset aria-pressed semantics for typed values - #528
fix(a11y): define preset aria-pressed semantics for typed values#528seonghobae wants to merge 12 commits into
Conversation
사용자가 입력 필드에 직접 값을 입력할 때도 프리셋 버튼의 aria-pressed 속성이 제대로 동기화되도록 이벤트 신뢰성 체크(!e.isTrusted)를 제거했습니다.
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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 |
Current exact boundary
main@47c6fd27de13b0da37a7db64697b86994190935167f7386bd3f10206a7265d3390ae0451d3cf3d86mainCHANGELOG.md,saas_web.py,tests/test_preset_accessibility_contract.py,tests/test_saas_web.py.RED → source GREEN
The prior handler used
parseInt(this.value, 10). A value such as26214400.9was therefore truncated to26214400, so the 25 MiB preset could exposearia-pressed="true"even though the numeric control did not exactly equal that preset and native step validity was false.A focused regression was committed first (
45f3ed006b1cc9637d8a729a0ed15e2e5802af41). Production repair then landed as normal descendant7c3dc5536c723179f2add38bca69418c8ae757fd:step="1";Number(this.value)instead of lossy integer parsing;aria-invalidwith an explicit whole-byte message;CHANGELOG.mdremains code-current for the buyer-visible repair.Single-writer / doctrine repair
Fresh effective-range inspection found that the branch still carried a
.jules/palette.mdentry turning this locale.isTrusted/preset implementation decision into repository-wide doctrine, while the PR body claimed no such generated doctrine remained. That is a scope/ownership repair finding, not product semantics.The current branch was re-read immediately before mutation. Normal child
67f7386bd3f10206a7265d3390ae0451d3cf3d86restores.jules/palette.mdbyte-for-byte to protectedmainusing the protected blob and advances the branch withforce=false. No product/test delta was removed. Fresh three-dot compare confirms.jules/palette.mdis no longer in the effective PR range.Remaining acceptance
The rendered-HTML regression pins the causal contract, but it is not a substitute for real browser/a11y execution. Before Ready:
aria-pressed/aria-invalidevidence must agree;Fresh workflows on
67f7386bd3f10206a7265d3390ae0451d3cf3d86are all non-terminal: CodeQL PR33956920552, SAST Semgrep33956920566, Security Scan33956920649, CI33956920627, fuzz33956920557are queued. Current inline review-thread inventory is empty. No predecessor GREEN transfers.Delivery Gate
Keep Draft until one unchanged exact head satisfies browser/a11y and live hosted/review gates. No self-approval, bypass, gate weakening, source-neutral retrigger, force-push, or destructive rebase.