Commit graph

8 commits

Author SHA1 Message Date
b269fce2f6
zebra-audio: secret TTS puppet console
Triple-click the footer integrity seal to reveal a hidden console: type a
line, pick one of the cloned voices, and it is synthesized at
speech.ai.unturf.com (/v1/audio/speech, no key, CORS open) and played into the
call — swapped onto the outbound WebRTC track so the listener hears the voice,
and to local output so you do too. The speak button doubles as stop: aborts an
in-flight synthesis or halts playback, then swaps the live mic back.
2026-05-29 15:17:16 -04:00
162b4b2917
web: auto-reconnect on cross-LAN drops + live mic-input switching
- chat + zebra-audio: treat ICE 'disconnected' as recoverable (grace
  before acting), auto ICE-restart on 'failed'/timeout driven by the
  offerer to avoid glare, and auto-rejoin the signaling socket if it
  drops mid-call. Superseded-pc guard ignores late events from a
  closed connection.
- zebra-audio: input-device dropdown that hot-swaps the mic via
  replaceTrack (no renegotiation, mute preserved); refreshes on
  devicechange so a plugged-in interface appears mid-call.
2026-05-28 21:29:50 -04:00
ae3e4316fb
web: stamp each zebra-report page with build date + md5/sha256
Add an integrity footer to chat.html, zebra-audio.html, and how-it-works.html
showing the build date (2026-05-28) and the page's own MD5 + SHA-256. A file
can't hold its own hash, so web/stamp.js (make stamp) computes the hashes with
the two hash fields zeroed, then writes the real values back — self-consistent
and idempotent. To verify a served page: blank the two fields and re-hash;
confirmed it reproduces the stamped value with plain sha256sum.
2026-05-28 17:50:12 -04:00
60615a2e73
zebra-audio: music mode — disable voice isolation for playing audio
Add a "music mode" toggle that re-acquires the mic with echo cancellation,
noise suppression, and auto-gain OFF (so music/audio passes through instead of
being treated as noise and pumped), tags the track contentHint='music' so the
Opus encoder drops speech optimizations (DTX etc.), and raises the send bitrate.
Switchable mid-call via replaceTrack — hot-swaps the track with no
renegotiation, preserving mute state. Verified mid-call switch stays connected
both directions.
2026-05-28 17:38:41 -04:00
d106bd224e
zebra-audio: mic on/off icons via CSS grid; stop button reflow
Lay out the controls and level rows with CSS grid and give the mute button a
fixed width, so toggling mute/unmute no longer shifts the buttons. Replace the
text "muted" badge with a mic-icon set (green open mic / red slashed mic) shown
next to "you" and "them", so both players can see at a glance whose mic is open
or closed. Verified both directions headless.
2026-05-28 15:09:24 -04:00
da78dc8612
zebra-audio: advertise mic (mute) state to the partner
Each peer signals its mute state over the rendezvous channel (encrypted with
the room code, so the relay never learns it) on connect and on every toggle.
A "muted" badge now shows on both your own and the partner's level meter, so
both players can see who is muted. Verified both directions headless.
2026-05-28 14:58:16 -04:00
8dfdd9561c
zebra-audio: auto-reconnect on partner return + verifiable path
Reconnect: on "partner left", tear down the stale peer connection but stay in
the room, and have whichever peer is already present send the offer when the
other (re)joins — so a partner can leave and rejoin with no refresh, regardless
of who left. Every (re)negotiation runs on a fresh RTCPeerConnection.

Path indicator now reads the transport's selected candidate pair and prints the
actual local/remote IP:port + types, so DIRECT vs RELAYED is verifiable (host =
the two devices' IPs; relay = the TURN server's IP). The mic un-masks the real
host candidate, which is why a voice call reaches direct P2P on a LAN where the
no-mic chat fell back to TURN.
2026-05-28 14:13:38 -04:00
860afbd9e4
zebra-audio: real-time WebRTC voice-call SPA (cover front)
New single-page app: two rendezvoused partners type the same code and get a
live Opus voice call over WebRTC — direct P2P when possible, TURN relay
fallback otherwise, DTLS-SRTP encrypted end to end. Reuses the zebra-signal
rendezvous (code-encrypted SDP, zero-knowledge relay) and the ephemeral
/turn-cred credentials. Mic uses echo-cancellation/noise-suppression; mute,
hang up, live mic/remote level meters, and a direct-vs-relayed path indicator.
Deliberately NOT over the volume modem — ordinary low-latency voice, which
doubles as a plausible cover for the report channel.
2026-05-28 13:57:05 -04:00