The issue is that we're calling audioCtx.close() in the stopEverything function, but the AudioContext may already be closed (or the state check is not comprehensive). The problem is we need to check if the AudioContext state is not already "closed" before attempting to close it. Let me fix this:
Fixed! The issue was that we were attempting to close an AudioContext that was already closed. Now we check if audioCtxRef.current.state !== 'closed' before calling .close() on it. This prevents the "InvalidStateError" from being thrown when the component unmounts or when the recording finishes multiple times.
Image description: The new TALKLE logo — colorful bubbly letters (red T, yellow A, orange L, green K, purple L, teal E) with pastel speech-bubble circles behind them, and "トケル" in dark gray below.
Let me find where the logo is used in the codebase.
The old logo URL appears 3 times. I'll replace all occurrences with the new one in a single pass:
All 3 logo src attributes in WelcomeScreen.tsx have been updated to point to the new トケルロゴ.png image URL. The replacement used replace_all to catch every occurrence in a single edit.
You can send messages while the preview loads