Twitch-VOD-Manager/src
xRangerDE 5d5e58ae09 a11y: app toast notifications become a live region for screen readers
showAppToast spawns / reuses a single floating toast at the bottom-
right of the window for transient status (e.g. "1 new VOD auto-queued",
"Cannot start recording", etc). The toast had no a11y semantics —
screen readers never announced it, so the entire transient-feedback
channel was silent for AT users.

Promoted the toast container to a live region:
- role="status" for info toasts + aria-live="polite" so the reader
  waits for a natural break in current speech before announcing
- role="alert" for warn toasts + aria-live="assertive" so the reader
  interrupts whatever it was saying (matches the visual amber-left-
  border meaning — warn IS urgent)
- aria-atomic="true" so the reader announces the whole message at
  once instead of attempting to diff against the previous toast

Critical detail: aria-live attributes have to be in place BEFORE the
text changes for AT to register the change as a live-region update.
The current implementation now sets role / aria-live first and only
then writes the new textContent.

WCAG 4.1.3 — Status Messages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 04:40:32 +02:00
..
index.html a11y: update-banner progress bar role=progressbar + aria-valuenow 2026-05-11 04:36:42 +02:00
main.ts security: open-file IPC blocks executable extensions 2026-05-11 04:16:46 +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: update-banner progress bar role=progressbar + aria-valuenow 2026-05-11 04:36:42 +02:00
renderer-locale-en.ts a11y: update-banner progress bar role=progressbar + aria-valuenow 2026-05-11 04:36:42 +02:00
renderer-profile.ts a11y: streamer-profile header — avatar wrap + live card keyboard-activatable 2026-05-11 03:41:21 +02:00
renderer-queue.ts a11y: queue progress bar — role=progressbar + aria-valuenow 2026-05-11 04:27:13 +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: VOD cards keyboard-activatable — opens VOD on Twitch via Enter/Space 2026-05-11 03:37:14 +02:00
renderer-texts.ts a11y: update-banner progress bar role=progressbar + aria-valuenow 2026-05-11 04:36:42 +02:00
renderer-updates.ts a11y: update-banner progress bar role=progressbar + aria-valuenow 2026-05-11 04:36:42 +02:00
renderer-vod-hover.ts perf: bound the renderer-side VOD storyboard cache (FIFO 100) 2026-05-11 04:08:42 +02:00
renderer.ts a11y: app toast notifications become a live region for screen readers 2026-05-11 04:40:32 +02:00
styles.css cleanup: extract .select-compact class — 4 selects outside .form-group 2026-05-11 04:22:16 +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