Added
- Skip-to-content link, so keyboard users can jump past the nav on every
page. --c-blue,--c-purple, and--c-tealdesign tokens for the accent
hues the design guide defines, plus--highlightfor search matches.
Stage, scope, and category badges now follow the theme instead of
carrying fixed Tailwind hues.frontend/src/components/fieldStyles.ts: shared focus-ring, text-input,
and select recipes, the counterpart to the existingbuttonStyles.ts.DraftNumberInput: the numeric field for settings where a blank value
means "inherit the default", promoted out ofStageTunablesSectionso
every such field shares one implementation.docs/workflows.md: a visual map of episode processing. Eight generated
SVG diagrams (light and dark) covering how work reaches the queue, the
eleven pipeline stages, the five evidence sources and five marker
outcomes, the five per-feed processing modes, the four re-run modes, the
pattern learning loop, and what happens when a stage fails. Linked from
the project README and the docs index.scripts/generate_workflow_diagrams.py: builds those diagrams from the
frontend/src/index.cssdesign tokens, so they follow the app's own
light and dark palettes.- Mobile card layout for the episode processing-runs table, which
previously only rendered as a horizontally scrolled 11-column table.
Changed
- Dialogs are now reachable by keyboard:
Modalsetsrole="dialog"and
aria-modal, traps Tab inside the panel, restores focus to whatever
opened it, and closes on Escape by default. - Dropdown menus support Arrow, Home, and End navigation, expose menu
roles andaria-expanded, and return focus to their trigger on close. - Every button, link, select, and textarea shows a visible focus ring.
Coverage went from 69 of roughly 430 controls to all of them. - The five
window.confirmprompts became in-app confirmation dialogs, so
destructive actions are styled, themed, and screen-reader reachable. - Checkboxes and numeric inputs across the app render through the shared
Checkbox,NumberInput, andDraftNumberInputcomponents rather than
hand-rolled markup.Checkboxgainedlabelandidprops to support
both plain rows and rows whose whole body is the click target. - Selects collapsed from 20 hand-written class recipes onto one.
- Badges use the design guide's single shape; the pill-shaped variants and
the shadow on the login card are gone.
Fixed
- Chunk extraction no longer times out on long chunks and then blames the
source file for it (#644). The ffmpeg budget scales with chunk length the
way every other ffmpeg call site already did, a timeout reports itself as
a timeout with the budget and chunk length instead of asserting a decode
failure, and the first timeout halves the chunk and retries once rather
than repeating the same doomed call through the whole retry ladder. - Status and stage colors now respond to all 20 themes. 341 hardcoded
Tailwind color classes across roughly 40 files moved onto design tokens,
along with the remaining hardcoded hex values in the charts, the
waveform fallback, and the search highlight.
Dependencies
- vite 8.1.5 to 8.2.1, @vitejs/plugin-react 6.0.3 to 6.0.5,
typescript-eslint and @typescript-eslint/eslint-plugin to 8.67.0,
happy-dom to 20.11.2, openai 2.51.0 to 2.53.0, huggingface-hub 1.26.0
to 1.26.1.