No description
Find a file
Kent eb27a162d5 Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget
Sju ting fra en gjennomgang av det som ble bygd i går.

Stopp virket ikke mens lyden ble laget. Player.stop() drepte self.proc, men
under syntesen finnes ingen prosess ennå – det er de første sekundene av hver
edge-tts-melding – så knappen gjorde ingenting, og meldingen gikk ut etterpå.
Nå har køen statusen preparing, stop() setter stopped på den, og run_once()
sjekker det før den starter avspilling. UI-et viser «Lager lyd …» i stedet
for å late som det spilles i stillhet.

Planlagte sendinger løy om status. De ble markert «sendt» idet de ble lagt i
kø, og ble stående slik selv om avspillingen feilet. Player har fått en
on_finished-callback, og planen følger nå meldingen helt i mål: sent, failed
eller stopped – det som faktisk skjedde. Statusene i schedule.py er utvidet
tilsvarende (queued er «lagt i kø», sent er «spilt ferdig»).

Flask sin utviklingsserver er byttet ut med waitress. Én prosess med mange
tråder, med vilje: Player og planleggeren er singletons, så gunicorn med
flere workere ville gitt flere køer som snakker i munnen på hverandre.

HTTP-laget hadde null tester. import announcer startet tråder og dro inn
Piper, så rutene lot seg ikke prøve. Trådene startes nå i main(), og
run_once() driver køen ett steg om gangen. tests/test_routes.py dekker
rutene, valideringen, køen, Stopp i begge faser, revisjonsloggen og hele
planleggingsflyten gjennom HTTP. 30 nye tester, 110 totalt.

Kappløp i synthesize(): tmp-fila hadde fast navn, så to som forhåndslyttet
samme tekst samtidig skrev til samme fil, og den ene rename feilet. Unik
tmp-fil per kall.

verify_signature = false er fjernet. Det var en felle: én feilskrevet linje
i config, og alle tokens ble godtatt. Ingen trenger den.

docker compose up uten install.sh krasjet kryptisk ved første utrop, fordi
Docker lagde data/ som root. check_writable() sier nå klart fra ved oppstart,
med hva som må gjøres.

Verifisert live i container: Stopp under edge-tts-syntese gir stopped, ikke
done. Server-headeren er waitress sin, ikke werkzeugs.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 01:41:31 +02:00
chimes Valgbare jingler: seks innebygde + egne filer i chimes/ 2026-10-06 03:50:48 +02:00
docker Planlagte sendinger 2026-10-08 16:29:16 +02:00
docs Planlagte sendinger 2026-10-08 16:29:16 +02:00
tests Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00
.env.example Planlagte sendinger 2026-10-08 16:29:16 +02:00
.gitignore Docker er driftsformen, ikke bare en testrigg 2026-10-08 16:07:59 +02:00
.python-version SG Announcer: Piper-TTS-utroper med forhåndslytt og kø 2026-10-06 03:18:13 +02:00
AGENTS.md Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00
announcer.py Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00
auth.py Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00
compose.test.yaml Planlagte sendinger 2026-10-08 16:29:16 +02:00
compose.yaml Planlagte sendinger 2026-10-08 16:29:16 +02:00
config.example.toml Planlagte sendinger 2026-10-08 16:29:16 +02:00
config.py Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00
Dockerfile Planlagte sendinger 2026-10-08 16:29:16 +02:00
index.html Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00
install.sh Planlagte sendinger 2026-10-08 16:29:16 +02:00
pyproject.toml Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00
schedule.py Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00
uv.lock Gjennomgang: Stopp under syntese, planstatus, waitress, tester på HTTP-laget 2026-10-09 01:41:31 +02:00