Commit Graph

21 Commits

Author SHA1 Message Date
Your Name
c25df14358 docs: add design for 15 UI enhancements
Mute toggle, fullscreen shortcut, seek feedback overlay, playlist
search, scroll-to-current, PiP, timestamp insertion, keyboard help,
speed shortcuts, reset confirmation, error state, double-click
fullscreen, playlist stats, per-item progress bars, collapsible docks.
2026-02-19 16:51:54 +02:00
Your Name
4fad7cf556 fix: reset heading margins and button chrome from semantic HTML changes
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.
2026-02-19 16:40:39 +02:00
Your Name
52934d15d6 a11y: bring UI to WCAG 2.2 AAA compliance
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.
2026-02-19 16:35:19 +02:00
Your Name
290ef82176 docs: add WCAG 2.2 AAA implementation plan 2026-02-19 16:00:19 +02:00
Your Name
5c3f5e8af1 docs: add WCAG 2.2 AAA remediation design 2026-02-19 15:54:04 +02:00
Your Name
35d08863ea Move and expand philosophy section 2026-02-19 12:58:55 +02:00
Your Name
8802fe6d23 Replace fancy dashes and quotes with plain ASCII 2026-02-19 12:56:30 +02:00
Your Name
49394f6bd7 Fancy up README header with badges 2026-02-19 12:54:43 +02:00
Your Name
1726b958b0 Add emoji to README 2026-02-19 12:53:50 +02:00
Your Name
fb676cbcb3 Add README 2026-02-19 12:52:21 +02:00
Your Name
b9815d0e45 TutorialVault: complete Tauri v2 port with runtime fixes
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.
2026-02-19 12:44:57 +02:00
Your Name
52e334ebfe feat: implement all frontend TypeScript modules
Create player.ts (video controls, seek, volume, speed, overlay),
playlist.ts (list rendering, tree SVG, drag-and-drop reorder, scrollbar),
subtitles.ts (subtitle menu, track management, sidecar/embedded),
ui.ts (zoom, splits, info panel, notes, toasts, recent menu),
tooltips.ts (zoom-aware tooltip system with delays),
store.ts (shared state and utility functions), and
main.ts (boot sequence, tick loop, keyboard shortcuts).

All modules compile with strict TypeScript. Vite build produces
34KB JS + 41KB CSS. 115 Rust tests pass.
2026-02-19 11:44:48 +02:00
Your Name
8f2437fd13 feat: implement video_protocol.rs, commands.rs, wire up main.rs, and index.html
- 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
2026-02-19 11:23:37 +02:00
Your Name
190a16223a feat: implement library.rs, types.ts, api.ts, and extract CSS
- library.rs: full video library management (1948 lines, 10 tests)
  folder scanning, progress tracking, playlists, subtitle integration,
  background duration scanning
- types.ts: all TypeScript interfaces for Tauri command responses
- api.ts: typed wrappers for all 26 Tauri invoke commands
- 6 CSS files extracted from Python HTML into src/styles/
2026-02-19 02:08:23 +02:00
Your Name
331020d936 feat: implement ffmpeg.rs, subtitles.rs, and fonts.rs
- ffmpeg.rs: discovery, duration extraction, metadata probing, download
- subtitles.rs: SRT-to-VTT conversion, sidecar discovery, storage, extraction
- fonts.rs: Google Fonts and Font Awesome local caching
2026-02-19 01:59:21 +02:00
Your Name
768ff1621f feat: implement recents.rs — recent folders management 2026-02-19 01:50:28 +02:00
Your Name
335e782013 feat: implement prefs.rs — preferences with save/load/update 2026-02-19 01:50:20 +02:00
Your Name
6ecbeb9a9b feat: implement utils.rs and state.rs
utils.rs: natural sort, file fingerprinting, library ID computation,
pretty title formatting, path helpers, clamp, truthy (38 tests)

state.rs: atomic JSON persistence with backup rotation and
fallback loading (8 tests)
2026-02-19 01:47:37 +02:00
Your Name
40d7ce4291 fix: remove protocol-asset feature, add app icons for build 2026-02-19 01:29:50 +02:00
Your Name
24746bb33d feat: scaffold Tauri v2 + Vite + TypeScript project 2026-02-19 01:23:27 +02:00
Your Name
47d4409bcc initial: existing TutorialDock Python app + conversion design and plan 2026-02-19 01:16:17 +02:00