93e0407eacfrontend: add per-line play/pause/stop controls\n\n- Toggle play/pause on same button, add stop button\n- Maintain shared audio state to prevent overlap and update button states accordinglySteve White2025-08-13 00:28:30 -0500
c9593fe6ccfrontend: prevent overlapping per-line playback; backend: print idle eviction settings on startup\n\n- app.js: add shared Audio state, disable play button while playing, stop previous line when new one plays\n- start_server.py: print eviction enabled/timeout/check interval\n- app/main.py: log eviction settings during FastAPI startupSteve White2025-08-12 17:37:32 -0500
cbc164c7a3backend: implement idle TTS model eviction\n\n- Add MODEL_EVICTION_ENABLED, MODEL_IDLE_TIMEOUT_SECONDS, MODEL_IDLE_CHECK_INTERVAL_SECONDS in app/config.py\n- Add ModelManager service to manage TTSService load/unload with usage tracking\n- Add background idle reaper in app/main.py (startup/shutdown hooks)\n- Refactor dialog router to use ModelManager dependency instead of per-request load/unloadSteve White2025-08-12 16:33:54 -0500
41f95cdee3feat(frontend): inline notifications and loading statesSteve White2025-08-12 15:46:23 -0500
b62eb0211ffeat(frontend): Phase 1 – normalize speakers endpoints, fix API docs and JSON parsing, consolidate state in app.js, tweak CSS border color, align jest/babel-jest + add jest.config.cjs, add dev scripts, sanitize repo URLSteve White2025-08-12 12:16:23 -0500
948712bb3fcurrent workign version using chatterbox.Steve White2025-08-12 11:31:00 -0500