-
Notifications
You must be signed in to change notification settings - Fork 0
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ° #833
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
42
commits into
develop
Choose a base branch
from
palette/accessible-chord-edit-tooltip-5190954237221160712
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 all commits
Commits
Show all changes
42 commits
Select commit
Hold shift + click to select a range
512bf42
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae c7650cb
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae f42c696
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae 478f97f
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae 17b96f1
fix: retain tooltip in read-only roadmap
seonghobae 56b4793
fix(security): require patched PDF.js
seonghobae 0163b12
fix(security): lock patched npm dependencies
seonghobae f272653
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae 53b9a14
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae 563f445
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae dbfe1a8
fix(workspace): remove unrelated dependency baseline changes
seonghobae 2b0f68c
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae b3d6869
fix(a11y): explain unavailable chord editing
seonghobae ae921ba
fix(a11y): localize readonly chord guidance
seonghobae 793a543
fix(a11y): localize readonly chord guidance
seonghobae 4e4043a
test(a11y): pin readonly chord guidance copy
seonghobae fac59c2
fix(a11y): announce readonly chord recovery
seonghobae dda631d
test(a11y): verify readonly chord announcement
seonghobae edcfa7d
docs(a11y): describe readonly chord recovery
seonghobae aa5ef65
docs(changelog): remove duplicated historical entry
seonghobae 814ded1
fix(a11y): describe readonly chord recovery semantically
seonghobae 713c8c6
test(a11y): verify readonly chord description semantics
seonghobae 02239cc
docs(a11y): record disabled-control semantics
seonghobae 8175cbc
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae 55e3753
fix(a11y): restore actionable unavailable chord description
seonghobae d8222ee
test(a11y): restore exact unavailable chord evidence
seonghobae 9b8ac60
fix(i18n): restore unavailable chord recovery copy
seonghobae a23b803
fix(i18n): restore Korean chord recovery copy
seonghobae b30097e
docs(a11y): restore disabled chord control rationale
seonghobae b9ec25d
docs(changelog): restore buyer-visible accessibility outcome
seonghobae 21cfdda
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
seonghobae dcd54ad
test(a11y): require recovery description for readonly chords
seonghobae 33a3a6e
fix(a11y): describe readonly chord recovery action
seonghobae 1cf1b1c
feat(i18n): add readonly chord recovery copy
seonghobae a809038
feat(i18n): add Korean readonly chord recovery copy
seonghobae 4800dc6
docs(changelog): describe readonly chord recovery behavior
seonghobae acf8a57
docs(a11y): record readonly chord control contract
seonghobae 73824f5
test(a11y): guard chord description id references
seonghobae 4d57af1
fix(a11y): decouple ARIA ids from analysis identifiers
seonghobae 41519ad
docs(a11y): record ARIA id reference integrity
seonghobae 7ab2dcd
docs(changelog): record accessible ID boundary
seonghobae 3206c25
π¨ Palette: μ½λ μμ λ²νΌμ μ κ·Όμ± μλ ν΄ν μ§μ μΆκ°
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| # Discoverable unavailable chord controls | ||
|
|
||
| ## Decision | ||
|
|
||
| BandScope keeps the chord-edit button focusable when editing is unavailable because the action remains useful to discover during rehearsal. The control uses `aria-disabled="true"` rather than native `disabled`, blocks activation before the edit prompt, preserves its stable localized accessible name, and associates a localized recovery instruction with `aria-describedby`. | ||
|
|
||
| The recovery copy is action-oriented: users are told to open an editable song to change the chord. The HTML `title` mirrors that recovery copy for pointer users, but BandScope does not treat `title` alone as sufficient assistive-technology evidence. The referenced description is the semantic explanation exposed for assistive technologies. | ||
|
|
||
| ## Conformance rationale | ||
|
|
||
| WAI-ARIA 1.2 defines `aria-disabled` for elements that are perceivable but not operable, while `aria-describedby` identifies content that describes an object. The W3C ARIA Authoring Practices keyboard-interface guidance notes that unavailable controls can remain in the focus order when discoverability is important, using `aria-disabled` rather than native disabling where appropriate. The APG button pattern uses `aria-disabled="true"` for unavailable buttons, and the W3C ARIA1 technique documents `aria-describedby` as a programmatic association through an ID reference list whose referenced element IDs are unique. | ||
|
|
||
| The HTML Standard additionally requires an element `id` to be unique in its tree, non-empty, and free of ASCII whitespace. BandScope therefore generates the description IDs from renderer-owned section and visible-role positions rather than from analysis-domain identifiers. This keeps the ARIA references unique and whitespace-free even when otherwise valid section or role IDs contain whitespace or punctuation, while leaving those domain identifiers unchanged for business logic. | ||
|
|
||
| BandScope therefore verifies exact rendered values rather than inferring accessibility from CSS or source intent: | ||
|
|
||
| - the unavailable chord control remains a button and remains keyboard-focusable; | ||
| - `aria-disabled` renders exactly as `true`; | ||
| - the accessible name remains the localized chord-edit action; | ||
| - `aria-describedby` resolves to the exact localized recovery instruction; | ||
| - description IDs remain unique and whitespace-free even when validated domain section or role IDs contain arbitrary string content; | ||
| - the pointer `title` exposes the same recovery instruction; | ||
| - activation does not open the edit prompt when the action is unavailable; and | ||
| - enabled chord editing retains the existing localized action label, tooltip, prompt, and update behavior. | ||
|
|
||
| ## Scope boundary | ||
|
|
||
| This change does not claim that a native `title` attribute implements the WAI-ARIA tooltip pattern. The APG tooltip pattern describes a distinct popup that appears on hover or keyboard focus and is referenced from the triggering element. If BandScope later requires a visible keyboard-focus popup, it should use the shared tooltip primitive and validate focus, dismissal, and description behavior explicitly. | ||
|
|
||
| ## References | ||
|
|
||
| World Wide Web Consortium. (2023). *Accessible Rich Internet Applications (WAI-ARIA) 1.2*. https://www.w3.org/TR/wai-aria/ | ||
|
|
||
| World Wide Web Consortium, Web Accessibility Initiative. (2026, January 12). *ARIA1: Using the aria-describedby property to provide a descriptive label for user interface controls*. https://www.w3.org/WAI/WCAG21/Techniques/aria/ARIA1 | ||
|
|
||
| World Wide Web Consortium, Web Accessibility Initiative. (n.d.). *Button pattern*. ARIA Authoring Practices Guide. Retrieved August 15, 2026, from https://www.w3.org/WAI/ARIA/apg/patterns/button/ | ||
|
|
||
| World Wide Web Consortium, Web Accessibility Initiative. (n.d.). *Developing a keyboard interface*. ARIA Authoring Practices Guide. Retrieved August 15, 2026, from https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/ | ||
|
|
||
| World Wide Web Consortium, Web Accessibility Initiative. (n.d.). *Tooltip pattern*. ARIA Authoring Practices Guide. Retrieved August 15, 2026, from https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/ | ||
|
|
||
| WHATWG. (2026). *HTML Standard: The global attributes*. Retrieved August 15, 2026, from https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute |
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.