v0.7.0 — the disabled control kept the focus it was taking away
Two corrections to 0.6.x, both found by reviewing the branch as one change rather than task by task.
A disabled button dropped the keyboard user's focus
render() set the disabled property on prev, first and next at the ends of the deck. Correct
about intent, wrong about mechanism: the control becomes disabled as a result of the user's own
activation, while it holds focus.
Measured in Chromium — focus a deck's Previous button and press Enter until slide zero:
| focus | |
|---|---|
| before | tPrev |
| after reaching slide 0 | BODY |
The control deactivates under the finger and the user loses their place. It now sets
aria-disabled and guards each handler: the button stays where the user put it, stays announced,
and does nothing. Re-measured, focus stays on tPrev, and pressing it again is a no-op.
.lcd:has(.n.msg) shipped with a justification that is false on every deck
0.6.0's comment claimed the rule fixed a gap where companygraph's and guestgraph's decks "could
never show a message at that width at all". No deck can, at any width.
lcdMessage()has exactly one call site, gated onif (!pickVoice() && !hasClips())hasClips()returnsclipsSeenclipsSeenisvar clipsSeen = true, never reassigned, on all four decks
So .msg is never added and the rule never matches. lcdMessage, msgTimer and both novoice
strings are dead today.
The rule stays. It is correct and costs nothing, and it becomes live the moment anything
actually probes for clips. What changed is the comment: it now says the path is unreachable and
why, rather than claiming a fix nobody can observe. Whether the deck should probe is a design
question, deliberately not decided here.
Also corrected
- A seam comment that quoted the value substituted into it, so each deck shipped a sentence
contradicting itself — "its ownLANG_KEYline readsrb-lang, a template, not a value". - A claim that a missing
TALKleaves "every check green". It does not: that is a load-time
ReferenceError, andopensFromFilefails on it. The identical sentence inherited from
blocks/lang.jsis accurate there, so only the new one changed. - Three documents describing a fence set two releases out of date — "Six blocks"/"Five blocks"
where there are ten, andfooterVersionstill documented as the deck footer's assertion in all
three sites' conventions files, though that check was retired a plan ago.
deck runtime and deck transport both to v3. 120 tests.