@@ -157,11 +152,6 @@ export function SectionRoadmap({ song, activeRole, onSongUpdate }: SectionRoadma
- {!onSongUpdate && (
-
- {t("chordEditUnavailableTitle")}
-
- )}
{role.harmony.source === "user" && (
{t("harmonySourceUserBadge")}
@@ -240,4 +222,4 @@ export function SectionRoadmap({ song, activeRole, onSongUpdate }: SectionRoadma
);
-}
\ No newline at end of file
+}
diff --git a/apps/desktop/src/locales/en/common.json b/apps/desktop/src/locales/en/common.json
index 3d92e5324..39f716d50 100644
--- a/apps/desktop/src/locales/en/common.json
+++ b/apps/desktop/src/locales/en/common.json
@@ -59,7 +59,6 @@
"chordEditAriaLabel": "Edit chord for {roleName} in {sectionLabel}, current {chord}",
"chordEditPrompt": "Enter new chord:",
"chordEditTitle": "Click to edit chord",
- "chordEditUnavailableTitle": "Open an editable song to change this chord",
"harmonySourceUserBadge": "User",
"roleSwitcherTitle": "Role-specific View",
"allRoles": "All Roles",
@@ -150,4 +149,4 @@
"practiceProgressLabel": "Practice Progress",
"decreasePracticeProgressLabel": "Decrease progress",
"increasePracticeProgressLabel": "Increase progress"
-}
\ No newline at end of file
+}
diff --git a/apps/desktop/src/locales/ko/common.json b/apps/desktop/src/locales/ko/common.json
index 07cacaed7..371884abb 100644
--- a/apps/desktop/src/locales/ko/common.json
+++ b/apps/desktop/src/locales/ko/common.json
@@ -59,7 +59,6 @@
"chordEditAriaLabel": "{roleName}의 {sectionLabel} 코드 수정, 현재 {chord}",
"chordEditPrompt": "새 코드 입력:",
"chordEditTitle": "코드 수정",
- "chordEditUnavailableTitle": "코드를 바꾸려면 편집 가능한 곡을 여세요",
"harmonySourceUserBadge": "사용자",
"roleSwitcherTitle": "악기/보컬 역할",
"allRoles": "전체 보기",
@@ -150,4 +149,4 @@
"practiceProgressLabel": "연습 진척도",
"decreasePracticeProgressLabel": "진척도 감소",
"increasePracticeProgressLabel": "진척도 증가"
-}
\ No newline at end of file
+}
diff --git a/docs/doctoring/accessible-disabled-chord-controls.md b/docs/doctoring/accessible-disabled-chord-controls.md
deleted file mode 100644
index 91362987d..000000000
--- a/docs/doctoring/accessible-disabled-chord-controls.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# 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 in the event handler, preserves its stable localized accessible name, and attaches a localized recovery description 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 for assistive technologies.
-
-## Conformance rationale
-
-WAI-ARIA defines `aria-disabled` as the state for a perceivable but unavailable control. The W3C ARIA Authoring Practices Guide further distinguishes native disabled controls, which browsers remove from the tab sequence, from cases where an unavailable control should remain discoverable and focusable. The APG button pattern requires an unavailable button to expose `aria-disabled="true"` and recommends `aria-describedby` when a description of the button's function is present.
-
-BandScope therefore verifies exact rendered values rather than inferring accessibility from CSS or source intent:
-
-- the unavailable button remains a button in the accessibility tree and keyboard focus order;
-- `aria-disabled` renders exactly as `true`;
-- the accessible name remains the localized chord-edit action;
-- `aria-describedby` resolves to the exact localized recovery instruction;
-- 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 with `aria-describedby`; that pattern remains separate from this bounded disabled-control slice. If BandScope later requires a visible keyboard-focus popup, it should use the existing 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. (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/
\ No newline at end of file
From 55e37539c86c6cc5d62b2b5767ac11b197fb53bf Mon Sep 17 00:00:00 2001
From: Seongho Bae