- Fix all text colors to meet WCAG 2.2 AAA 7:1 contrast ratios against
dark backgrounds (--textMuted, --textDim, hover states across playlist,
player, panels, tooltips)
- Fix speed menu rendering behind seek bar by correcting z-index stacking
context (.controls z-index:10, .miniCtl z-index:3, .seek z-index:2)
- Replace default Tauri icons with custom TutorialVault icon across all
required sizes (32-512px PNGs, ICO, ICNS, Windows Square logos)
- Update README: Fraunces → Bricolage Grotesque font reference
- Add collapsible dock pane persistence and keyboard-adjustable dividers
- Switch font deps from Sora/Manrope/IBM Plex Mono to Fraunces/Inter/Space Mono (Cold Open theme)
- Add Tauri window permissions for custom titlebar controls
- Disable native decorations and drag-drop in Tauri config
- Add prefers-reduced-motion media query for WCAG compliance
Strip background/border-radius from .controlsStrip so playback
controls float freely. Roughly double all --surface opacity values
for better element visibility against the dark slate background.
The WCAG pass changed <div> to <h3> for dock headers and <span> to
<button> for the zoom reset label. Browser defaults for those elements
(heading margins, button border/background) were never overridden,
causing bloated headers and a Windows-XP-style zoom button.
Semantic HTML: lang attr, landmarks (header/main/region/complementary),
heading hierarchy (h1-h3), dl/dt/dd for info panel.
ARIA: labels on all icon buttons, aria-hidden on decorative icons,
progressbar role with dynamic aria-valuenow, aria-haspopup/expanded
on all menu triggers, role=listbox/option on playlist, aria-selected,
computed aria-labels on playlist rows.
Contrast: raised --textMuted/--textDim/--icon to AAA 7:1 ratios.
Focus: global :focus-visible outline, slider thumb glow, menu item
highlight, switch focus-within, row focus styles.
Target sizes: 44x44 hit areas on zoom/window/remove buttons via
::before pseudo-elements.
Keyboard: playlist arrow nav + Enter/Space activate + Alt+Arrow
reorder with live region announcements + move buttons. Speed menu,
subtitles menu, and recent menu all keyboard-navigable with
Arrow/Enter/Space/Escape. Dividers resizable via Arrow keys.
Dynamic document.title updates on video/folder load.
Rename from TutorialDock to TutorialVault. Remove legacy Python app
and scripts. Fix video playback, subtitles, metadata display, window
state persistence, and auto-download of ffmpeg/ffprobe on first run.
Bundle fonts via npm instead of runtime download.
- video_protocol.rs: tutdock:// custom protocol with HTTP Range support
for video streaming, subtitle/font serving with path traversal protection
- commands.rs: all 26 Tauri command handlers as thin wrappers
- main.rs: full Tauri bootstrap with state management, window restore,
async font caching, and ffmpeg discovery
- index.html: complete HTML markup extracted from Python app
- lib.rs: updated with all module declarations and AppPaths struct