Commit Graph

45 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
9016ce02e4 feat(auth): add optional admin PIN for all API writes
Off by default. Once a PIN is set in Settings -> System & backup, every non-GET /api/*
request (plus GET /api/ammc/config) needs a signed 30-day HttpOnly cookie, which also
closes the unauthenticated /api/update/run restart trigger. A 401 opens a PIN dialog
and the pending save is retried after login. Reads stay open because the public overlay
hydrates through GET /api/state. Optional RC_ADMIN_ALLOWED_CIDRS restricts the same
routes by client address.

The PIN hash and signing secret live in data/, outside the app_state blob, so they
never leak through GET /api/state, exports or backups.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 22:14:58 +02:00
larssand
44f9b62610 Bring the architecture doc back up to date with this session's changes
Closes both open "Documentation maintenance" roadmap items. Used a research-only
Explore pass to get a concrete diff against the actual code before editing, rather
than guessing what was stale.

Documented: src/track_layouts_logic.js (previously unmentioned anywhere),
buildEventSchedule, the Settings/Event Manager tab layouts, new state fields
(raceConfig.scheduleStartAt/scheduleGapMin, Session.trackLayoutId, top-level
trackLayouts/audioEventLog), a real SQLite table contract section, a full
field-by-field Settings shape, several previously-undocumented backend routes,
and the complete list of files tests/browser_smoke.js actually invokes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 17:40:58 +02:00
larssand
b3bec531de connecton satus mobil profile 2026-09-08 19:27:37 +02:00
larssand
a0c3d3039e Separat status och mottagningsräknare för varje kanal.
Senaste råmeddelande, fel och ignoreringsorsaker.
Pausa visning, rensa och kopiera logg.
Uppdateras utan att störa inställningsfält eller tidtagning.
2026-09-08 18:37:47 +02:00
larssand
8aedf83826 fix all overlays 2026-09-08 18:26:30 +02:00
larssand
443434d569 fix status and roadmap 2026-09-08 17:26:55 +02:00
larssand
285babcfcf add more stats to mobile and fix refresh stint 2026-09-04 16:41:51 +02:00
larssand
4068cc7c19 add more stats to mobile profile 2026-09-04 16:17:45 +02:00
larssand
142c45be04 add replay session 2026-09-04 15:58:24 +02:00
larssand
2d56b74731 Add local and public QR sharing for training profiles 2026-09-03 20:15:13 +02:00
larssand
4f847610dc Improve training statistics, achievements and stable pace audio 2026-09-03 06:36:17 +02:00
larssand
f2ba4b3c7b Enable bundled AMMC tools and document decoder simulation 2026-09-02 21:13:49 +02:00
larssand
9aeb638211 add glibc rec 2026-09-02 19:53:16 +02:00
larssand
483a9dbd5a Fix lap limits and five-minute stint statistics 2026-09-02 19:36:25 +02:00
larssand
f561dd8feb new raceday and backup 2026-09-01 07:07:23 +02:00
larssand
5366043979 fix stats sida 2026-08-30 14:31:53 +02:00
larssand
694aba5f3d Add motivational training challenges and shared club goals 2026-08-30 09:16:11 +02:00
larssand
e5e1754185 add more train stats per driver 2026-08-29 09:56:45 +02:00
larssand
375bfb2416 förbättreing tränings 2026-08-28 21:44:23 +02:00
larssand
c6262aceab fix live leaderbord details 2026-08-28 21:12:43 +02:00
larssand
3cf68cf34a branding och namechange 2026-08-28 20:56:58 +02:00
larssand
34e55ff7f6 add custome voice 2026-08-28 13:47:25 +02:00
larssand
5f79228941 Add configurable manifest-driven race audio system 2026-08-28 13:29:27 +02:00
larssand
e5af42ce2d Add CSV imports and granular competition data cleanup 2026-08-27 17:56:50 +02:00
larssand
32acc0e9c7 fix rendering och refresh så det inte uppdatera sidan vid inställningar 2026-08-27 14:47:24 +02:00
larssand
808d5b2657 Decoder-dokumentationen är nu tydligare och mer komplett 2026-08-26 08:55:19 +02:00
larssand
84302a770d Mobilprofilen visar nu per vald klassom det finns depå,mellantids
decoders
2026-08-25 20:04:14 +02:00
larssand
abf887dccd Split- och depåstatistik är implementerad 2026-08-25 20:00:55 +02:00
larssand
8ea8b3a84e Add multi-decoder split and pit timing support 2026-08-25 19:45:40 +02:00
larssand
6f02e955a5 Add class-specific driver training profiles and metadata 2026-08-24 22:05:50 +02:00
larssand
3aeb77a042 add stat 2026-08-24 21:28:38 +02:00
larssand
355a1ad3b0 Förbättrat ljudsystemet 2026-08-24 19:40:39 +02:00
larssand
2e6866a013 Add simplified Open Practice flow and reorganize 2026-08-24 19:25:21 +02:00
larssand
5a6e51c51b Add persistence and SQLite integration tests 2026-08-24 19:08:21 +02:00
larssand
0ca1679e2a Add race timing and judging regression tests 2026-08-24 18:58:40 +02:00
larssand
1365da7f3c publika träningslogik är nu utbruten och testbar 2026-08-24 18:50:02 +02:00
larssand
e22077b4d5 Ny automatisk testsvit för träningslogiken. 2026-08-24 18:35:22 +02:00
larssand
aa74da0bdf Add per-driver live stats for timed practice sessions 2026-08-24 17:36:03 +02:00
larssand
40d0c3fa90 förenklat träningsdelen 2026-08-24 17:16:07 +02:00
larssand
4a74785791 Add secure public driver training profiles 2026-08-24 16:54:35 +02:00
larssand
c2ed00861a Add persistent driver training history and progression 2026-08-24 16:06:36 +02:00
larssand
79a8cb24b8 Fix better-sqlite3 installation on Windows 2026-08-24 15:48:34 +02:00
larssand
de7b4adfe0 "Add Windows installer and driver training rewards" 2026-08-24 14:48:49 +02:00
larssand
4c0e94bc50 add arch tech doc 2026-03-30 11:52:13 +02:00