- pony.alw.dk now serves all spoken lines from a pre-rendered MP3 cache
(the approved da-DK Christel voice, same as the well-received intro), so
nothing is synthesized on the fly at play time and no line falls back to a
robotic browser voice when a long scene narration exceeds the live TTS deadline.
- pregenerate_tts.py renders the full deterministic narration corpus (UI,
theme intros, every scene, both result phrases) into the live cache.
- dice._result_text() and wrong-choice feedback are fixed, not random, keeping
the spoken corpus finite and fully pre-cacheable.
- launch_pregenerate.sh runs the batch detached so it survives the ssh session.
- All 81 backend tests pass; a pre-cached line serves in ~5ms.