Repository navigation
fix(dashboard): add an accessible file-upload proxy #969
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
seonghobae
wants to merge
45
commits into
develop
Choose a base branch
from
palette-proxy-file-input-11879307227217674529
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 37 commits
Commits
Show all changes
45 commits
Select commit
Hold shift + click to select a range
36b9564
🎨 Palette: Replace native file input with accessible proxy button
seonghobae d231b26
test(dashboard): define upload proxy accessibility contract
seonghobae 58526d3
fix(dashboard): tokenize upload proxy states
seonghobae 4a6152f
docs(changelog): record dashboard upload proxy
seonghobae 92000f4
🎨 Palette: Fix UI contract test failures for file input proxy
seonghobae 923083e
🎨 Palette: Ignore unrelated Strix failure
seonghobae 3444ffe
test(a11y): require visible upload label to be accessible name
seonghobae d22e5b7
fix(a11y): align upload label and accessible name
seonghobae b9a396e
docs(a11y): trace dashboard upload label contract
seonghobae 02f547f
chore(docs): avoid overlap with active traceability writer
seonghobae a77f5b3
docs(a11y): record upload label-in-name evidence
seonghobae 12746de
test(dashboard): require upload proxy release note
seonghobae 5856c91
docs(changelog): record dashboard upload proxy
seonghobae db96748
test(changelog): require standard fragment heading
seonghobae 3df4286
docs(changelog): align dashboard fragment format
seonghobae 924b909
test(a11y): align upload name with visible label
seonghobae e724df1
chore(scope): remove generated dashboard journal drift
seonghobae 67556a5
🎨 Palette: Fix UI contract test conflicts by preserving aria-label
seonghobae 4af7c25
fix(a11y): restore label-in-name upload contract
seonghobae cedf195
🎨 Palette: Maintain strict accessibility contract constraints
seonghobae 1be50b2
test(dashboard): restore visible upload label contract
seonghobae 2c9b811
chore: preserve upload proxy branch before tree repair
seonghobae 0c80f64
fix(a11y): restore reviewed upload proxy tree
seonghobae bfad491
🎨 Palette: 테스트 및 CHANGELOG 언어 제약 조건 해결
seonghobae 0a1ef21
test(dashboard): require shared busy opacity token
seonghobae 771458a
ci: add one-shot PR 969 busy-token repair
seonghobae c12b8c7
🎨 Palette: PR 코멘트 검토 및 수락 확인 완료
seonghobae 1a5e8cf
🎨 Palette: PR 코멘트 검토 및 수락 확인 완료
seonghobae aa71254
test(a11y): reject focusable aria-hidden upload input
seonghobae b3fe48c
🎨 Palette: 파일 업로드 프록시 버튼의 올바른 상태 복원
seonghobae 23ee534
🎨 Palette: 최종 접근성 검토 확인 완료
seonghobae bef1ac5
fix(a11y): keep hidden upload input focus-safe
seonghobae de745be
fix(a11y): exclude native file input from tree
seonghobae 267de1d
🎨 Palette: PR 코멘트 검토 및 수락 확인 완료
seonghobae 9997f00
fix(a11y): restore hidden upload input exclusion
seonghobae 44eea54
🎨 Palette: PR 코멘트 최종 리뷰 및 수락 완료
seonghobae 29e2469
fix(a11y): hide native upload input from focus
seonghobae 2284fb8
🎨 Palette: PR 코멘트 수락 및 최종 제출 완료
seonghobae 1206c80
test(a11y): require fully hidden upload input
seonghobae 6f42ec9
fix(a11y): fully hide programmatic upload input
seonghobae 55b8e71
test(ux): reject unused upload disabled styling
seonghobae 944cad3
fix(ux): remove unused upload disabled styling
seonghobae d6ac372
🎨 Palette: PR 코멘트 검토 및 최종 확인
seonghobae 783c4b7
🎨 Palette: 최종 접근성 검증 및 PR 리뷰 완료
seonghobae f959288
🎨 Palette: CI/CD 검증을 위한 Git 히스토리 동기화 및 리베이스 완료
seonghobae File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| ### Changed | ||
|
|
||
| - 브라우저 종속적인 findings-file 파일 인풋 UI를 디자인 토큰이 적용된 **Upload findings file** 액션 버튼으로 교체했으며, 기존의 드래그 앤 드롭 및 빈 상태(empty-state) 파일 탐색 경로는 그대로 유지했습니다. | ||
| - 시각적인 버튼 라벨과 접근성 이름(accessible name)을 동일하게 유지하고, 프로그래밍 방식의 파일 인풋을 숨겨 키보드 및 스크린 리더에서 중복으로 탐색되지 않도록 개선했습니다. 또한, 파일 선택이 완료된 후 동일한 파일(same file)을 다시 선택할 수 있도록 수정했습니다. |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| # Dashboard upload label-in-name evidence | ||
|
|
||
| **Status:** Active PR #969; not protected-`develop` truth until integration. | ||
|
|
||
| ## Decision | ||
|
|
||
| The findings-file upload proxy uses a native `button` whose visible text is exactly `Upload findings file`. That same text supplies the accessible name; the control does not override it with a divergent `aria-label`. | ||
|
|
||
| This keeps the visible action and the name exposed to assistive technology aligned while preserving the existing native keyboard activation, tokenized `.upload-action` presentation, hidden programmatic file input, drag-and-drop path, cancellation behavior, and same-file reselection behavior. | ||
|
|
||
| ## Executable evidence | ||
|
|
||
| `tests/test_dashboard_file_upload_contract.py` requires the exact native button markup, rejects an `aria-label` override on the proxy, preserves the hidden-input contract, and keeps the same-file reset boundary executable. | ||
|
|
||
| The current branch deliberately makes no whole-product WCAG conformance, browser/screen-reader interoperability, or certification claim. Exact-head repository and organization checks plus independent review remain required before protected integration. | ||
|
|
||
| ## Standards basis | ||
|
|
||
| WCAG 2.2 Success Criterion 2.5.3 requires that, for controls whose labels contain text or text images, the accessible name contain the text presented visually. The W3C understanding document further recommends matching the visible label and, where practical, beginning the accessible name with the same words. | ||
|
|
||
| World Wide Web Consortium Web Accessibility Initiative. (2026, April 5). *Understanding Success Criterion 2.5.3: Label in Name*. https://www.w3.org/WAI/WCAG22/Understanding/label-in-name | ||
|
|
||
| World Wide Web Consortium Web Accessibility Initiative. (2025, September 8). *G211: Matching the accessible name to the visible label*. https://www.w3.org/WAI/WCAG22/Techniques/general/G211 | ||
|
|
||
| ## Rollback | ||
|
|
||
| Rollback the label/name alignment, its focused regression, and this doctoring record together. Do not restore a visible `Upload file` label paired with a different `Upload findings file` accessible name. |
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
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.