fix(ui): give four app-panel form controls a programmatic accessible name#7594
Conversation
…name Four controls across the owner/playground/maintainer-settings/digest panels had no programmatic label — a sibling (non-associated) <label> or none at all — so a screen reader got no accessible name (WCAG 3.3.2/4.1.2). Fixed with association attributes only, zero visual diff (no layout/style/text/nesting change), so this stays in the no-visual-change lane (JSONbored#7532): - owner-panel.tsx: `htmlFor="owner-repo"` on the Repository label + matching `id` on the Input. - playground-panel.tsx: `htmlFor`/`id` pairs for the Tool select, Repo input, and Branch input. - maintainer-settings.tsx (FocusManifestEditor): `aria-label="Focus manifest editor"` on the JSON textarea. - digest-panel.tsx (SubscribeForm): `aria-label="Digest notification email"` on the email input. Adds a regression test per file (none existed) asserting each fixed control is reachable by its accessible name via Testing Library's getByLabelText / getByRole({ name }). Closes JSONbored#7532
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Tip ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-21 00:32:38 UTC
Review summary Nits — 4 non-blocking
Decision drivers
Context & advisory signals — never blocks the verdict
Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. Scroll preview
A short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|

Summary
Four form controls across the owner / playground / maintainer-settings / digest app panels had no programmatic accessible name — a sibling (non-associated)
<label>or none at all — so a screen reader announced them with no name (WCAG 3.3.2 / 4.1.2). Fixed with association attributes only:htmlFor="owner-repo"on the Repository label + matchingidon the Input.htmlFor/idpairs for the Tool select, Repo input, and Branch input.aria-label="Focus manifest editor"on the JSON textarea.aria-label="Digest notification email"on the email input.Zero visual diff: these are association-attribute-only changes — no layout, style, text, or DOM-nesting change — so nothing rendered changes; the controls only gain a programmatic name.
Tests
Adds one regression test per file (none existed), each asserting the fixed control is reachable by its accessible name via Testing Library
getByLabelText/getByRole({ name })— a real guard against the name regressing.UI Evidence
Playground panel (
/app/playground), dark theme (loopover-ui is a dark-mode-only build — no light theme to capture). The affected Tool / Repo / Branch controls are the labeled fields in the left column. Because the change is attribute-only, before and after are pixel-identical by design — that is the point of the fix: it adds a programmatic accessible name with no visual change.Validation
@loopover/uitypecheck, lint (0 errors), test (163 panel tests pass incl. the 4 new a11y suites), build, and version-audit all green; rebased onto latestmainCloses #7532