Commit graph

7 commits

Author SHA1 Message Date
marwin
05216a8613 Vorlesen-Funktion im Reader: Piper/Thorsten-TTS (SW v42)
All checks were successful
Build and push Docker image / build (push) Successful in 1m3s
Test / test (push) Successful in 1m32s
Serverseitige Sprachsynthese (deutsche Thorsten-Stimme, Piper) für den
EPUB-Reader: /tts/synthesize/ nimmt einen Satz (max. 500 Zeichen) entgegen,
synthetisiert und streamt WAV zurück, ohne zu persistieren, zu loggen oder zu
cachen — eine bewusste, eng begrenzte Ausnahme vom "Server sieht nie
Klartext"-Prinzip (siehe CLAUDE.md). Der neue ▶-Button im Reader-Header liest
ab der aktuellen Position satzweise vor, hebt den gerade gesprochenen Satz
hervor und scrollt mit; eine kleine Leiste bietet Pause/Stop.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xb6yX2S9aTGepYA9JFba9x
2026-08-31 22:29:13 +02:00
marwin
0b62fbc0de Hotfix: gunicorn/packaging pinnen — gevent-Worker startete nicht mehr
All checks were successful
Build and push Docker image / build (push) Successful in 12s
Test / test (push) Successful in 53s
Der erste Rebuild seit dem 17.08. zog gunicorn 26.2.0, dessen ggevent.py
packaging.version importiert, während das Paket selbst überhaupt keine
Dependencies deklariert ("Requires:" ist leer). Damit fehlte packaging im
Image und gunicorn brach beim Start ab:

    Error: class uri 'gevent' invalid or not found
    ModuleNotFoundError: No module named 'packaging'

Beides wandert nach requirements.txt, und das Dockerfile installiert
gunicorn nicht mehr ungepinnt nebenher — sonst kann der nächste Rebuild den
Worker wieder unter uns austauschen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-28 08:34:27 +00:00
marwin
e1b18f392e Show build time in bottom-right corner
All checks were successful
Build and push Docker image / build (push) Successful in 12s
Test / test (push) Successful in 16s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 21:35:41 +01:00
marwin
391d733c1b Use gevent workers in gunicorn to fix SSE blocking
All checks were successful
Build and push Docker image / build (push) Successful in 31s
Test / test (push) Successful in 15s
SSE connections for radio streams were blocking sync gunicorn workers,
leaving the app unresponsive. Switching to gevent with 4 workers and
a higher timeout fixes concurrent SSE + normal request handling.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 19:15:01 +01:00
marwin
978b6fa24b Store background images in DB, persist SQLite via volume
All checks were successful
Build and push Docker image / build (push) Successful in 12s
Test / test (push) Successful in 14s
2026-03-16 20:24:20 +01:00
marwin
df601714ec Run migrate automatically on container start
All checks were successful
Build and push Docker image / build (push) Successful in 12s
Test / test (push) Successful in 13s
2026-03-16 20:06:44 +01:00
marwin
e55dba66e4 Add Dockerfile and Forgejo Actions workflow for Docker builds
Some checks failed
Build and push Docker image / build (push) Failing after 11s
2026-03-16 19:24:06 +01:00