5 Commits

Author SHA1 Message Date
larssand
e8a2799a92 feat(audio): add offline local neural voice via Piper (sv + en)
Announcements can use Piper, a free local neural TTS, instead of the browser's system
voice. No account, no paid service, and it keeps working with no internet at the track.

- npm run tts:install (or Settings -> Audio -> Install) downloads the standalone Piper
  release for Linux/Windows/macOS plus Swedish and English voices into piper/ once
- server/tts.js generates each line once, one at a time, and caches it as WAV under
  data/tts/; a new line takes ~0.3 s with the standalone build
- src/piper_speech.js plays it and falls back to the browser voice if Piper is missing,
  errors, or takes over 2.5 s, so no announcement is lost and timing is never held up
- "Pre-generate phrases and driver names" renders every fixed phrase and name in both
  languages before race day

Browser voice stays the default. Generation routes fall under the admin PIN.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 19:28:15 +02:00
larssand
3e02ba9aad Link the video guides from README, README.sv, and the in-app Guide page
Commit all 7 recorded clips to docs/videos/ (alongside the existing docs/screenshots/)
instead of leaving them in the gitignored video-guides/ folder from the earlier
feasibility spike - they're meant to be shipped, discoverable assets now, not scratch
output. scripts/record-video-guides.mjs writes there by default going forward.

Added a "Video Guides" section to README.md/README.sv.md (Getting started + Interface
tour groups) and a matching in-app "Video guides" panel on the Guide page, right after
the overview cards - the most discoverable spot for a brand-new user. Links point at
/docs/videos/<name>.mkv, served by the server's existing /docs static route.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 18:29:32 +02:00
larssand
4967299b04 Add a video-guide recorder for the UI (Settings tabs, Event Manager tabs, Schedule panel)
CDP screencast -> ffmpeg -> MKV, driven against the same isolated server/browser pattern
the test suite already uses. Recorded three short clips demonstrating this session's tab
and schedule features; output goes to the gitignored video-guides/ folder rather than the
repo since these are sizeable binaries.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 16:56:00 +02:00
larssand
86fef324d1 fix practice 2026-03-14 12:17:35 +01:00
larssand
3b0af41466 full sync 2026-03-14 09:51:35 +01:00