diff --git a/src/features/play-agent-audio/ui/agent-audio-player.tsx b/src/features/play-agent-audio/ui/agent-audio-player.tsx
index d422655..4bf43c1 100644
--- a/src/features/play-agent-audio/ui/agent-audio-player.tsx
+++ b/src/features/play-agent-audio/ui/agent-audio-player.tsx
@@ -1,5 +1,4 @@
import type { Room } from "livekit-client";
-import { Button } from "@/shared/ui";
import { usePlayAgentAudio } from "../model/use-play-agent-audio";
export function AgentAudioPlayer({ room }: { room: Room | null }) {
@@ -9,9 +8,19 @@ export function AgentAudioPlayer({ room }: { room: Room | null }) {
{/* biome-ignore lint/a11y/useMediaCaption: synthesized speech has no source track to caption */}
{needsPlayTap && (
-
+ // Browsers (iOS Safari in particular) block audio.play() unless it's called
+ // directly from a user gesture, so the initial autoplay attempt in
+ // use-play-agent-audio.ts fails silently -- without a hard-to-miss prompt, the
+ // call just looks completely silent with no indication why. Full-width and
+ // high-contrast on purpose: this is the only control on the HEARING screen, and
+ // missing it means the whole call is silent for that person.
+
)}
>
);
diff --git a/src/features/sign-capture/model/use-sign-capture.ts b/src/features/sign-capture/model/use-sign-capture.ts
index fdf3fde..d57df82 100644
--- a/src/features/sign-capture/model/use-sign-capture.ts
+++ b/src/features/sign-capture/model/use-sign-capture.ts
@@ -478,7 +478,12 @@ export function useSignCapture(
}
onSentence?.(sentence);
})
- .catch(() => {
+ .catch((error) => {
+ // Falling back to the raw joined words is intentional (never drop the signer's
+ // message), but doing it silently makes a failed compose call indistinguishable
+ // from the LLM genuinely returning the words unchanged -- log it so a network/API
+ // failure is diagnosable instead of just looking like "GPT isn't running".
+ console.error("[sign-capture] compose failed, sending raw words instead:", error);
const fallback = words.join(" ");
setComposedSentences((prev) => [...prev, fallback].slice(-MAX_DISPLAYED_SENTENCES));
const turn: ConversationTurn = { speaker: "DEAF", text: fallback };