Ten to sixty seconds. One take. Public by default. Tap to start,
tap to stop. Preview before submit. Phase 3 wires the R2 upload;
right now Submit is a stub and nothing leaves your browser.
READY · TAP RECORD00 : 00
10s min · 60s max · auto-stops
Add details
What's live in Phase 2
Mic permission flow via navigator.mediaDevices.getUserMedia
MediaRecorder capture with opus/webm (Firefox, Chrome, Edge) or AAC/mp4 (Safari)
10-60 second enforcement — auto-stops at 60, Submit disabled below 10
Live timer + progress bar with 10s minimum marker
Preview playback via <audio> + blob URL
Details form — channel chip, title, dek, location
`POST /api/talk` stub — accepts multipart, returns mock block ID
What Phase 3 adds
Cloudflare R2 bucket (`pointcast-audio`) for real audio storage
Server-side duration validation after upload
Rate limit: 3 dispatches per IP per hour (PC_RATELIMIT_KV)
TALK block persistence via GitHub API commit or KV-backed draft