* uuid, classes, properties, extends and description fields not visible
for human output even though data is available and users are asking
to display it with --with-* or --fields
* Also fix recent regression for property types no longer displaying by
default
* Also fix --with-extends, --with-properties and --with-classes
depending on undocumented --extra option. Options should be declarative and
not have hidden dependencies
Remove outdated name field which had no effect. Also remove duplication
of these values in option declaration, completion declaration and
completion tests
- 4 visible fields couldn't be used with --fields
- Only print selected fields/columns. Previous behavior didn't make
sense as unspecified fields were still listed and took up horizontal space
- Allow --fields to work when --expand isn't used. Previous behavior
wasn't explained to user and needlessly limiting
Make `show` treat id-only pull results as non-existent entities so deleted ids no longer render as empty blocks, and add regressions for deleted block/page lookups.
🤖 Generated with [eca](https://eca.dev)
Co-Authored-By: eca <noreply@eca.dev>
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
block-editing-only was missing from the global-handlers set in
get-conflicts-by-keys, so conflicts between block-editing-only and
editor-global shortcuts (e.g. assigning ⌘X to Create new block vs Cut)
showed as amber warnings instead of red blocking conflicts. Also remove
dead chord-prefix code from same-leading-key? and add a comment about
the brittle Closure error string match for chord-prefix detection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Make the shortcut list a single tab stop (<ul> tabindex=0) with arrow
key navigation between rows (tabindex=-1). This eliminates ~583 tab
stops while preserving full keyboard access. Also fix focus restoration
after closing the recording popup by disabling the popup infrastructure's
competing focus logic (focus-trigger? false, onCloseAutoFocus preventDefault)
and using focusVisible:true for visible focus rings on programmatic focus.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uses :has(.th) to detect when category section headers are in the DOM.
When searching/filtering removes them, the header's bottom padding fades
to transparent so list items scroll away smoothly instead of a hard cutoff.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
On macOS, Option+key combos in the shortcut recording dialog were
silently dropped because Google Closure's KeyHandler corrupts the
keyCode (merging keydown/keypress produces Unicode charCodes like ç
instead of the base key). Fall back to the native KeyboardEvent.code
property when the primary key-names lookup fails and a modifier is
held — works cross-platform (also helps AltGr on Windows).
Also replace "Opt" text with the standard ⌥ symbol in shortcut badges,
matching ⌘ and ⇧, and update all round-trip paths (decorate, undecorate,
canonicalize, normalize) to handle the new symbol.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Chord-prefix overlaps (e.g., CMD+C vs CMD+C CMD+C) are no longer
treated as blocking conflicts in the keymap UI. Previously, assigning
CMD+C to an action would flag chord shortcuts like "Clear Sidebar"
(CMD+C CMD+C) as equal conflicts and strip them on Reassign — with no
way to restore them since the recording UI can't record chords.
Now only exact key matches are blocking. Chord shortcuts stay in config
and become dormant if they share a handler with a conflicting simple
key; they auto-restore when the conflict is removed. Registration
errors for expected chord-prefix tree clashes are downgraded from
console.group+error to log/debug.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace hardcoded rgba shadow colors with --kbd-glow-top/--kbd-glow-bottom
CSS variables, tuned per theme (light: stronger top highlight, dark: deeper
bottom shadow)
- Use filter: brightness(0.92) for pressed state instead of manipulating
box-shadow layers with outer drop shadows — theme-agnostic and physically
correct (depressed key = in shadow = darker)
- Keep top inset highlight shift (1px → 2px) and bottom inset compression
(1px → 0.5px) for realistic keycap depression alongside brightness
- Fix bottom clipping on press: change .action-wrap overflow from hidden
to visible so translateY(1px) doesn't get chopped
- Remove non-glow pressed shadow rules (brightness handles all cases)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Row highlight on shortcut trigger now uses a horizontal gradient sweep
(background-position animation) instead of a static background flash,
providing a distinct visual language from the focus ring
- Shimmer uses theme-aware accent color via color-mix on keymap page,
with a neutral fallback in shui.css base styles
- Guard against animation spam: clearTimeout+reset pattern prevents
stale timeout accumulation during rapid key repeat; reflow only
forced on first trigger, class stays applied until last trigger ends
- Fix combo key press animation: animate the container (the keycap)
instead of individual kbd elements, so translateY and box-shadow
follow the container's border-radius correctly
- Scope row shimmer to .shui-shortcut-row/.shortcut-row elements
to prevent accidental shimmer on standalone badge containers
- Respect prefers-reduced-motion for all new animations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enable ArrowUp/Down/Home/End keyboard navigation through shortcut rows
and category headers. Add focus-visible ring styling, exclude focused
rows from hover dimming, fix popover close focus restoration to target
the <li> element, and rescue focus to the category header when folding
removes the focused row from DOM.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When undoing a Reassign, execute-undo! now checks if the restored
binding matches the default via matches-default-binding? and persists
nil instead of the raw vector, clearing the user override.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>