Skip to content

Promote to production: P2P File Transfer + Network category + connection options - #65

Merged
slaveofcode merged 5 commits into
mainfrom
develop
Aug 1, 2026
Merged

Promote to production: P2P File Transfer + Network category + connection options#65
slaveofcode merged 5 commits into
mainfrom
develop

Conversation

@slaveofcode

Copy link
Copy Markdown
Owner

Syncs main with what is already live on production (develop deploys to goodwebtools.com).

Includes:

The production edge Durable Object signaling was verified end-to-end (two-client relay, roles, peer-joined, offer/answer, room capacity) against wss://goodwebtools.com/api/signal.

🤖 Generated with Claude Code

Kresna and others added 5 commits August 1, 2026 09:13
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New Files tool (/tools/file-transfer): send a file directly to another
device, peer-to-peer. File bytes travel over a WebRTC data channel and never
touch our server; a tiny Durable Object (SignalRoom, free SQLite tier) on the
existing Worker relays only the ~2KB SDP/ICE handshake at /api/signal/<room>.

- Mandatory ack-before-connect gate.
- STUN-only (public STUN); clear failure message on restrictive networks.
- Shareable room link; sender picks a file, receiver downloads. Backpressure
  via bufferedAmountLowThreshold. Robust to either peer connecting first
  (WebRTC initiator decoupled from app send/receive role).

Pure tested logic: signal.lib (room ids, link, message parsing), file-transfer
.lib (chunking, meta, progress). Browser transport (signal-client, peer),
useFileTransfer hook, thin island. Worker+DO bundle validated via wrangler
dry-run. Spec+plan under docs/superpowers/. Shared infra reused by the
upcoming video call (item 5).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(file-transfer): P2P file transfer via WebRTC + Durable Object signaling
… manual mode

Make the server fully optional and user-chosen for the P2P tools:

- New 'Network' category (cyan) with a note explaining the limited/optional
  server involvement; move P2P File Transfer into it. (Re-applies the category
  change whose earlier push didn't land before the #63 merge.)
- Custom STUN/TURN: users can enter their own ICE servers (ice.lib parseIceConfig
  / effectiveIceServers, tested); defaults to public STUN. A user TURN server
  fixes strict-NAT connections.
- Manual (serverless) signaling: copy-paste offer/answer codes (manual-sdp.lib
  base64 encode/decode, tested; manual.ts non-trickle connection) — NO signaling
  server used at all. Automatic link mode remains the default.
- Settings persisted to localStorage; Advanced panel in the tool. peer.ts now
  accepts custom iceServers. useFileTransfer supports both signaling modes.

Durable Object relay verified end-to-end via local wrangler dev (roles,
peer-joined, offer/answer relay, room-capacity). 539 tests, lint clean, build green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(webrtc): Network category + user-chosen ICE servers & serverless manual mode
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
goodwebtools ac00a91 Aug 01 2026, 02:50 AM

@slaveofcode
slaveofcode merged commit 13e3058 into main Aug 1, 2026
3 checks passed
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