Twitch-VOD-Manager/src
xRangerDE 35769959f4 a11y: remove-X spans become keyboard-accessible with aria-label
The two `<span class="remove">x</span>` glyphs (one per queue
item, one per streamer-list item) had no semantic role, no
aria-label, no tabindex — entirely mouse-only and screen-readers
just announced them as the bare "x" character.

Made both fully keyboard-accessible:
- role="button" + tabindex="0" so they enter the tab order and
  read as buttons to AT
- aria-label="Remove" / "Entfernen" via new
  streamers.removeAria locale key (DE + EN)
- Keydown handler on Enter + Space synthesizes the same removal
  callback (mirroring native button behaviour for synthetic
  buttons — Enter on real buttons fires click, Space does too)
- Focus-visible state: 2px red glow ring + force opacity:1 on
  the streamer-list .remove (which is normally opacity:0 until
  the streamer-item is hovered) so keyboard navigators can see
  the focused X

Both call sites preserved e.stopPropagation in the keydown handler
so Enter on a focused X doesn't bubble up to the row's click
handler (which would trigger streamer-select).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 03:18:18 +02:00
..
index.html cleanup: update-banner progress bar — extract inline styles 2026-05-11 03:07:59 +02:00
main.ts perf: trim live-status batch IPC payload + skip empty broadcasts 2026-05-11 02:33:09 +02:00
preload.ts perf: trim live-status batch IPC payload + skip empty broadcasts 2026-05-11 02:33:09 +02:00
renderer-archive.ts feat: local archive search — new Archiv tab 2026-05-11 00:26:42 +02:00
renderer-globals.d.ts perf: trim live-status batch IPC payload + skip empty broadcasts 2026-05-11 02:33:09 +02:00
renderer-locale-de.ts a11y: remove-X spans become keyboard-accessible with aria-label 2026-05-11 03:18:18 +02:00
renderer-locale-en.ts a11y: remove-X spans become keyboard-accessible with aria-label 2026-05-11 03:18:18 +02:00
renderer-profile.ts fix: sticky header opaque + banner visible + missing button styles 2026-05-11 01:04:22 +02:00
renderer-queue.ts a11y: remove-X spans become keyboard-accessible with aria-label 2026-05-11 03:18:18 +02:00
renderer-settings.ts cleanup: unify template-lint visual + drop 3 hardcoded color literals 2026-05-11 03:04:30 +02:00
renderer-shared.ts fix: persist expanded details across re-renders, guard drag-drop init against duplicates 2026-03-21 15:03:20 +01:00
renderer-stats.ts cleanup: extract events/chat viewer inline styles + drop dead var 2026-05-11 02:05:37 +02:00
renderer-streamers.ts a11y: remove-X spans become keyboard-accessible with aria-label 2026-05-11 03:18:18 +02:00
renderer-texts.ts i18n: localize 3 empty-state strings (VOD grid + Merge tab) 2026-05-11 02:20:29 +02:00
renderer-updates.ts feat: skip-version + addStreamer validation + smart-scheduler tooltip 2026-05-10 12:14:13 +02:00
renderer-vod-hover.ts feat: banner background + live preview card + VOD hover storyboard + sticky header 2026-05-11 00:55:17 +02:00
renderer.ts cleanup: unify template-lint visual + drop 3 hardcoded color literals 2026-05-11 03:04:30 +02:00
styles.css a11y: remove-X spans become keyboard-accessible with aria-label 2026-05-11 03:18:18 +02:00
tools.ts refactor: extract tool discovery functions to src/tools.ts 2026-03-20 10:00:51 +01:00
types.ts feat: live recording health indicator (green/amber dot per item) 2026-05-10 22:04:53 +02:00
update-version-utils.ts chore: migrate repository to Codeberg, bump version to 4.2.0, update update logic 2026-03-01 20:23:21 +01:00