Skip to content

Deck: echo what voice awareness hears into the feed - #22

Merged
MyNamesEMurray merged 3 commits into
mainfrom
claude/heard-in-feed
Jul 18, 2026
Merged

Deck: echo what voice awareness hears into the feed#22
MyNamesEMurray merged 3 commits into
mainfrom
claude/heard-in-feed

Conversation

@MyNamesEMurray

Copy link
Copy Markdown
Owner

Summary

Every line voice awareness transcribes — your mic, and the party channel if enabled — now appears in the deck feed as a faint 🎙 row, so when a ghost reacts oddly you can see exactly what the transcription thought you said (mishears included).

Changes

  • Server: each transcript line broadcasts a new ephemeral heard WS event (channel: mic|party, party carries its configured label). Gated by transcript.showInFeed (default on), read live and registered as a hot path — toggling it in Settings applies without a relaunch.
  • Deck: heard rows render faint + italic, deliberately styled as sensor readout rather than chat — mic lines right-aligned like your typed messages, party lines left-aligned with the label ("Discord · 'nice shot dude'"). Tooltip explains what they are (EN + ES). DOM capped at 30 heard rows so hours of talking can't grow the feed unbounded.
  • Isolation guarantees (the important design decisions):
    • never enters history — the brain already receives the transcript window separately, so no double-feeding or prompt pollution;
    • never persisted, never in the recap export;
    • never on the on-stream overlay (its client ignores the event type) — mishears stay private to you.
  • Settings → Voice checkbox, config.example.json default, README config row + voice-awareness bullet.

No Release-Bump trailer → rides as a patch. Shout if you'd rather this one counted as a minor.

Verification

  • E2E on a live server with two real tailed transcript files: mic line arrives as heard{channel:mic}, party line as heard{channel:party, label:"Discord"}; toggling transcript.showInFeed off saves with applied: true (hot, no restart) and suppresses subsequent events while state.lastHeard keeps updating; chat history stays empty throughout.
  • Full CI reproduction: syntax (incl. inline HTML scripts), config validation, 45-test suite, smoke — green.

Risk & rollout

  • Default-on changes what voice-awareness users see in the deck (that's the point); one checkbox turns it off, live.
  • Overlay and prompts provably untouched — no cost impact, no ethics surface.

Checklist

  • npm run smoke passes locally (or CI is green)
  • Follows the design language in DESIGN.md (if UI changed)
  • AI-labeling / "simulated viewers" guarantees intact (if bot output or overlay changed)
  • Docs updated (README / config reference) if behavior or config changed
  • Targets main

🤖 Generated with Claude Code

https://claude.ai/code/session_01FNRQP2h3GUQVThuE2KVBEu


Generated by Claude Code

Every transcribed line (streamer mic, and the party channel when
enabled) now shows in the deck feed as a faint italic row - mic lines
right-aligned like your typed messages, party lines left with their
channel label. When a ghost reacts strangely you can see exactly what
the transcription thought you said.

Deliberately sensor-readout, not chat: heard lines never enter the
history the brain sees (it already gets the transcript window), never
persist, never reach the recap or the on-stream overlay, and the deck
caps them at 30 rows. transcript.showInFeed (default on, Settings ->
Voice) hot-applies without a restart.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FNRQP2h3GUQVThuE2KVBEu
@MyNamesEMurray MyNamesEMurray added the enhancement New feature or request label Jul 18, 2026 — with Claude
The heard-in-feed echo (and voice replies) hang off TranscriptFeed's
onSpeech callback, which both modes share - lock that in with a
textSource-mode test covering priming, unchanged-caption dedupe, OBS
unreachable, and SRT-metadata filtering.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FNRQP2h3GUQVThuE2KVBEu
@MyNamesEMurray
MyNamesEMurray enabled auto-merge July 18, 2026 00:28
@MyNamesEMurray
MyNamesEMurray merged commit f985908 into main Jul 18, 2026
2 checks passed
@MyNamesEMurray
MyNamesEMurray deleted the claude/heard-in-feed branch July 18, 2026 00:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants