fix: TTS sentence cutoff + simplified retro challenge prompt

TTS fixes:
- Remove 60-char truncation in FightViewer — let speakAnswer handle limits
- Smart truncation at sentence boundaries (period, comma, etc.) up to 200 chars
- Chrome keepalive: periodic pause/resume prevents silent 15s cutoff bug
- Deduplicated cleanup logic in speakAsync/speakAsyncWithRate

Retro mode:
- Simplified challenge prompt from verbose wall of text to clean 3-line format

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-08 15:32:29 +00:00
co-authored by Claude Opus 4.6
parent 896e81960f
commit 9287fd1783
3 changed files with 62 additions and 19 deletions
+2 -2
View File
@@ -322,7 +322,7 @@ async function _doReplay() {
scene.showSpeechBubble('a', round.botAResponse.slice(0, 60), 5)
scene.startTalking('a')
}
if (doTTS) await speakAnswer(props.fight.botA!.name, round.botAResponse.slice(0, 60))
if (doTTS) await speakAnswer(props.fight.botA!.name, round.botAResponse)
else await sleep(insanityMode.value ? 30 : 800)
scene?.stopTalking('a')
if (!insanityMode.value) await sleep(150)
@@ -337,7 +337,7 @@ async function _doReplay() {
scene.showSpeechBubble('b', round.botBResponse.slice(0, 60), 5)
scene.startTalking('b')
}
if (doTTS) await speakAnswer(props.fight.botB!.name, round.botBResponse.slice(0, 60))
if (doTTS) await speakAnswer(props.fight.botB!.name, round.botBResponse)
else await sleep(insanityMode.value ? 30 : 800)
scene?.stopTalking('b')
if (!insanityMode.value) await sleep(150)