Cross-handler prefix overlaps don't cause chord dormancy because each
Closure KeyboardShortcutHandler instance has its own independent key
tree and state machine. Only same-handler prefix conflicts (where
Closure's tree can't have a node be both leaf and branch) cause
actual chord dormancy.
- Change binding-match? to use same-handler? instead of handler-match?
for prefix overlaps (exact matches still use handler-match?)
- Update test to verify cross-handler prefixes are NOT detected
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show the amber "Deactivates" banner only after the user confirms
Reassign, not alongside the red "Used by" prompt. Reduces visual
noise during the decision step and shows consequences after the action.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show chord keycaps alongside action names in the amber "Deactivates"
banner so users can see both the chord pattern and what it does.
- n=1: inline keycap + quoted name
- n=2-3: vertical list with keycap + name per row
- n≥4: count-only fallback
- Proportional auto-fade: 6s/8s/10s based on item count
- Chord strokes visually grouped with 6px gap between strokes
- Compact keycaps tinted amber-12 inside warning banners
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prefix conflicts (chord shortcuts that go dormant when a simple key
shadows their leading stroke) are now shown as amber warnings instead
of red blocking errors. Exact-match conflicts remain red with
Reassign.
Key changes:
- Extend binding-match? from same-handler? to handler-match? so
cross-handler prefix overlaps between co-active handlers are detected
- Add partition-conflicts-by-type and conflict-has-exact? helpers in
data_helper to split conflicts into exact vs prefix sub-maps
- Three-way debounce in shortcut dialog: exact → red blocking,
prefix-only → amber auto-save with undo, mixed → stacked banners
- Widen Closure error catch to handle both chord-prefix conflict
directions ("shortcut: null" and "shortcut: <id>")
- Add CSS color override for undo link inside amber warning banner
- Add i18n keys: deactivates-chord, deactivates-chords
- Add tests for partition-conflicts-by-type and cross-handler detection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cover the three regression cases from review.
- block same-handler leader/chord prefix collisions in keymap conflict detection so bindings like mod+c cannot silently leave mod+c mod+s or mod+c mod+c dormant at runtime
- collapse canonical-equivalent bindings back to default when saving so recorded meta/cmd variants do not linger as redundant custom overrides
- allow disabled shortcut rows to reopen the customize dialog and normalize false defaults into editable empty bindings
- add focused regression tests for conflict detection and shortcut persistence/editability