Skip to content

feat(video-call): P2P video call with screen share + chat - #70

Merged
slaveofcode merged 2 commits into
developfrom
feat/video-call
Aug 1, 2026
Merged

feat(video-call): P2P video call with screen share + chat#70
slaveofcode merged 2 commits into
developfrom
feat/video-call

Conversation

@slaveofcode

Copy link
Copy Markdown
Owner

New Video Call tool (/tools/video-call, Network) — 1:1 peer-to-peer video call. Item #5 of the batch.

Reuses the entire file-transfer P2P stack (SignalRoom DO, signal.lib/signal-client, custom ICE, manual serverless mode, ack gate, reconnect + retry cap). Video, audio, and chat travel peer-to-peer; only the ~2KB handshake touches the signaling server.

  • Controls: mute mic, camera on/off, switch front/rear camera, screen share (getDisplayMedia + replaceTrack), hang up.
  • In-call text chat over a data channel.
  • Both peers send + receive (symmetric); either can share their screen.
  • Generalized createPeer/createManualConnection with optional localStream+onTrack (media) + a makingOffer guard; file-transfer's data-channel path is unchanged.
  • Same reconnect resilience + manual (serverless) copy-paste mode + custom STUN/TURN.

Spec: docs/superpowers/specs/2026-08-01-video-call-design.md.

545 tests · lint clean · build green (/tools/video-call built).

⚠️ Media paths (camera/mic, screen share, track negotiation) are verified by build + manual smoke, not headless CI — needs a two-device smoke test.

🤖 Generated with Claude Code

Kresna and others added 2 commits August 1, 2026 12:39
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New Network tool (/tools/video-call): 1:1 peer-to-peer video call. Reuses the
file-transfer signaling stack (SignalRoom DO, signal.lib/signal-client, custom
ICE, manual serverless mode, ack gate, reconnect + retry cap). Media, audio and
chat travel peer-to-peer; only the ~2KB handshake touches the signaling server.

- Generalized createPeer / createManualConnection with optional localStream +
  onTrack (media), plus a makingOffer guard so adding tracks AND the data channel
  produce a single offer. File-transfer's data-channel path is unchanged.
- useVideoCall: getUserMedia, symmetric media peer, chat over a data channel,
  and controls — mute mic, camera on/off, switch front/rear camera, screen share
  (getDisplayMedia + replaceTrack, restores camera on stop), hang up (sends 'bye').
- Reconnect resilience carried over (disconnected grace -> re-establish; retry
  cap -> 'add a TURN server' hint). Manual mode: copy-paste invite/answer codes.
- chat.lib (encode/decode, tested). roomLink now takes a route (default unchanged).
- VideoCall island: ack gate + Advanced settings, remote+local video, control bar,
  chat panel, shareable link / manual code exchange.

545 tests · lint clean · build green (/tools/video-call built). Media paths are
build + manual smoke (not headless-verifiable), like the camera/OCR tools.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@slaveofcode
slaveofcode merged commit 5ad7970 into develop Aug 1, 2026
1 of 2 checks passed
@slaveofcode
slaveofcode deleted the feat/video-call branch August 1, 2026 05:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant