Add persistent caller voices, Discord, REC/on-air linking, SEO fixes, ep9
- Returning callers now keep their voice across sessions (stored in regulars.json) - Backfilled voice assignments for all 11 existing regulars - Discord button on homepage + link in all page footers - REC and On-Air buttons now toggle together (both directions) - Fixed host mic double-stream bug (stem_mic vs host_stream conflict) - SEO: JSON-LD structured data on episode + how-it-works pages - SEO: noscript fallbacks, RSS links, twitter meta tags - Episode 9 transcript and sitemap update Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -522,6 +522,13 @@ class AudioService:
|
||||
print("[Audio] No input device configured for host streaming")
|
||||
return
|
||||
|
||||
# Close stem_mic if active — this stream's callback handles stem recording too
|
||||
if self._stem_mic_stream is not None:
|
||||
self._stem_mic_stream.stop()
|
||||
self._stem_mic_stream.close()
|
||||
self._stem_mic_stream = None
|
||||
print("[Audio] Closed stem_mic (host stream takes over)")
|
||||
|
||||
self._host_send_callback = send_callback
|
||||
|
||||
def _start():
|
||||
@@ -960,9 +967,12 @@ class AudioService:
|
||||
|
||||
def start_stem_mic(self):
|
||||
"""Start a persistent mic capture stream for stem recording.
|
||||
Runs independently of push-to-talk and host streaming."""
|
||||
Skips if _host_stream is already active (it writes to the host stem too)."""
|
||||
if self._stem_mic_stream is not None:
|
||||
return
|
||||
if self._host_stream is not None:
|
||||
print("[StemRecorder] Host stream already capturing mic, skipping stem_mic")
|
||||
return
|
||||
if self.input_device is None:
|
||||
print("[StemRecorder] No input device configured, skipping host mic capture")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user