Phase 57
jw-meeting-media (clean-room)
Live-meeting layer with a WOL HTML parser designed from DevTools
New subpackage that delivers the missing 'live-meeting' layer: automatic weekly mwb/w program discovery + media downloads + Tauri presenter. Strict clean-room implementation: zero AGPL-3.0 M³ .ts/.vue files opened. HTML parser designed by inspecting real WOL DOM.
What shipped
- MeetingProgramClient + BeautifulSoup parser over semantic WOL HTML.
- MediaResolver wraps PubMediaClient for video/audio refs.
- Idempotent Downloader by sha256 with <root>/<lang>/<year>/<week>/ cache.
- MeetingStorage sqlite + Thumbnailer (Pillow + ffmpeg).
- PresenterManager FSM with multi-session in-memory.
- CLI: jw meeting {discover, download, list}.
- REST: /presenter/sessions/{sid}/{state, play, pause, next, prev, stop}.
- Tauri 2.x window 'presenter' vanilla JS with keyboard shortcuts.
- 4 MCP tools meeting_*.