Some checks failed
Release / Test backend (push) Successful in 41s
Release / Check ui (push) Successful in 1m5s
Release / Docker / caddy (push) Successful in 37s
Release / Docker / backend (push) Has been cancelled
Release / Docker / runner (push) Has been cancelled
Release / Docker / ui (push) Has been cancelled
Release / Gitea Release (push) Has been cancelled
The aura-2-en model enforces a hard 2 000-character limit per request. Chapters routinely exceed this, producing 413 errors. GenerateAudio now splits the stripped text into ≤1 800-char chunks at paragraph → sentence → space → hard-cut boundaries, calls the API once per chunk, and concatenates the MP3 frames. Callers (runner, streaming handler) are unchanged. StreamAudioMP3/WAV inherit the fix automatically since they delegate to GenerateAudio.