From 0e888d62af1434fef231e11a5c307a5b48a8deb1 Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Sat, 07 Mar 2026 10:49:07 +0100
Subject: [PATCH] feat: singleton audio, transcript reflection, voice persistence
---
app/chat.tsx | 10 ++++------
1 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/app/chat.tsx b/app/chat.tsx
index 49f93bc..8d4e95e 100644
--- a/app/chat.tsx
+++ b/app/chat.tsx
@@ -11,7 +11,7 @@
import { ImageCaptionModal } from "../components/chat/ImageCaptionModal";
import { StatusDot } from "../components/ui/StatusDot";
import { SessionDrawer } from "../components/SessionDrawer";
-import { playAudio, stopPlayback, isPlaying, onPlayingChange } from "../services/audio";
+import { playSingle, stopPlayback, isPlaying, onPlayingChange } from "../services/audio";
interface StagedImage {
base64: string;
@@ -32,7 +32,7 @@
const [stagedImage, setStagedImage] = useState<StagedImage | null>(null);
useEffect(() => {
- return onPlayingChange(setAudioPlaying);
+ return onPlayingChange((uri) => setAudioPlaying(uri !== null));
}, []);
const handleScreenshot = useCallback(() => {
@@ -137,10 +137,8 @@
}
for (let i = messages.length - 1; i >= 0; i--) {
const msg = messages[i];
- if (msg.role === "assistant") {
- if (msg.audioUri) {
- playAudio(msg.audioUri).catch(() => {});
- }
+ if (msg.role === "assistant" && msg.audioUri) {
+ playSingle(msg.audioUri).catch(() => {});
return;
}
}
--
Gitblit v1.3.1