Fix L8/SR9/M20: list keys, jargon hints, ProgressBar a11y

L8: TerminalView lines now carry a stable auto-increment id (keyed by that
    instead of array index) so front-trimming at MAX_LOG_LINES doesn't cause
    React to reuse wrong DOM nodes. SettingsView error list keyed by id alone
    (not id+occurredAt, which was redundant since IDs are already unique).

SR9: DownloadOptionsForm -- rewrote 'Container for merged video' to a plain
     description; rewrote format-sorting hint to remove raw '-S string' /
     'yt-dlp syntax' jargon.

M20: All ProgressBars now carry aria-label -- QueueItem (downloading +
     paused rows, keyed on title/URL), DownloadsView overall summary bar,
     SettingsView app-update download bar.

typecheck + 242 tests + eslint green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-30 14:09:36 -04:00
parent 4e3b141d6d
commit 67c0cd8bf4
6 changed files with 43 additions and 35 deletions
+3 -3
View File
@@ -279,7 +279,7 @@ token system + shared primitives (UI/SIMP — high value, larger effort) · i18n
label contradicts the actual output format; `--audio-quality` is also meaningless for lossless.
- [x] **M19 — Sidebar-collapsed pref uses `localStorage`** while every other preference uses
electron-store — won't back up/restore and is lost in the portable build across machines.
- [ ] **M20 — ProgressBar / native `<select>` accessibility.** QueueItem/DownloadsView
- [x] **M20 — ProgressBar / native `<select>` accessibility.** QueueItem/DownloadsView
`ProgressBar`s have no accessible name; several `Select`s carry both a `<Field label>` and an
`aria-label` (double announcement).
- [x] **M21 — `--audio-quality` always emitted.** `buildArgs` passes `--audio-quality` even for
@@ -390,7 +390,7 @@ token system + shared primitives (UI/SIMP — high value, larger effort) · i18n
(~40px) Input/Buttons in DownloadBar.
- [x] **L7 — `canceled` and `paused` share the 'warning' badge color** (QueueItem) — visually
ambiguous.
- [ ] **L8 — Index/compound list keys.** TerminalView keys log lines by array index; Settings
- [x] **L8 — Index/compound list keys.** TerminalView keys log lines by array index; Settings
Diagnostics keys by `id + occurredAt` while every other list keys by `id` alone.
- [ ] **L9 — Thumbnail box sizes not shared.** Four hand-tuned 16:9 boxes (120×68, 108×64, 72×44,
60×34) with no shared aspect/size constant.
@@ -1393,7 +1393,7 @@ the end so the picture is complete. **Verified-clean first:** card/label/button
### Wording / jargon polish
- [ ] **SR9 — Dev jargon in user-facing option hints** (extends M37): "mux them into the video," "Tiebreaker,
- [x] **SR9 — Dev jargon in user-facing option hints** (extends M37): "mux them into the video," "Tiebreaker,
not a hard filter," "Endcards / credits" ("End cards"), "Proof-of-Origin token," "`--extractor-args`."
Reads like engineer notes. **Fix:** plain-language hints.
- [ ] **SR10 — Inconsistent product self-description / casing** surfaced to users: "yt-dlp frontend" caption