Skip to content

Put the panel for a sound out of reach when there is no sound - #52

Merged
ibrahimweng merged 1 commit into
mainfrom
claude/nothing-selected-is-not-reachable
Aug 31, 2026
Merged

Put the panel for a sound out of reach when there is no sound#52
ibrahimweng merged 1 commit into
mainfrom
claude/nothing-selected-is-not-reachable

Conversation

@ibrahimweng

Copy link
Copy Markdown
Owner

Found by looking at the app rather than at the code, during a full audit.

The panel for the selected sound says "Nothing selected" and shows its controls dimmed. That's the right thing to show — they're what you reach for the moment you pick something, and hiding them would make the panel jump.

But dimmed was only half of out-of-reach. Pointer events were turned off, and that part works — measured, a click doesn't land and nothing is destroyed. What it does nothing about is the keyboard:

nothing selected:  18 controls, 16 take focus

Sixteen stops that look available, read as available to anything speaking the page aloud, and do nothing.

inert says all of it at once: no pointer, no focus, hidden from assistive technology — which is what "nothing is selected" already means on screen.

after:  nothing selected -> 1 takes focus   (the help button, outside the panel)
        one selected     -> 16 take focus, and Delete removes the sound

A correction

I called this a functional fault before I had measured it, and it isn't. Nothing was broken and no work could be lost — the click really was blocked. What was wrong is narrower than I first put it: a tab-order and assistive-technology problem, not a broken control.

Checking

Two browser tests, verified by putting pointer-events back — the first then fails with 18 controls reachable.

The pattern isn't anywhere else. The only other dimming in the UI is a LUFS readout, which is a div with no controls in it, and every pointer-events: none in the stylesheets is on something decorative — a tick, a band, the playhead, a hint — or on a transient drag state.

359 unit tests, 90 browser tests (was 88), build clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Ux1kydvUkLRoMbHp82ofDi


Generated by Claude Code

Found by looking at the app rather than at the code. The panel for the
selected sound says "Nothing selected" and shows its controls dimmed, which
is right: they are what you reach for the moment you pick something, and
hiding them would make the panel jump.

Dimmed was only half of out of reach. Pointer events were turned off, and
that part works -- measured, a click does not land and nothing is destroyed.
What it does nothing about is the keyboard. Sixteen of the seventeen
controls stayed in the tab order, so tabbing across the panel with nothing
selected goes through sixteen stops that look available, read as available
to anything speaking the page aloud, and do nothing.

`inert` says all of it at once: no pointer, no focus, and hidden from
assistive technology, which is what "nothing is selected" already means on
screen. Measured either side of it: one control takes focus with nothing
selected, sixteen once something is, and Delete removes the sound it is
pointed at.

I said this was a functional fault before I had measured it, and it is not:
nothing was broken and no work could be lost. The click really was blocked.
What was wrong is narrower than I first put it.

Two browser tests, checked by putting pointer events back, which fails the
first with eighteen controls reachable.

The same pattern is not anywhere else. The only other dimming in the UI is
a LUFS readout, which is a div with no controls in it, and every
`pointer-events: none` in the stylesheets is on something decorative -- a
tick, a band, the playhead, a hint -- or on a transient drag state.

359 unit tests, 90 browser tests, build clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ux1kydvUkLRoMbHp82ofDi
@vercel

vercel Bot commented Aug 31, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
beat-studio Ready Ready Preview Aug 31, 2026 3:01pm

@ibrahimweng
ibrahimweng merged commit 4847966 into main Aug 31, 2026
5 checks passed
@ibrahimweng
ibrahimweng deleted the claude/nothing-selected-is-not-reachable branch August 31, 2026 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant