feat(calls): Phase 1a — TURN ice-servers endpoint + coturn ops + DM call-button header
Backend:
- GET /api/calls/ice-servers: ephemeral HMAC TURN credentials (10-min TTL),
iceTransportPolicy:"relay" (no IP leak), 503 until coturn configured
- nitro runtimeConfig: turnHost/turnSecret/turnRealm (Infisical staging set)
Ops:
- ops/calls/ runbook + turnserver.conf (self-hosted coturn, force-relay,
use-auth-secret, hardening). coturn provisioned + verified on rebreak-server.
Frontend (DM header redesign):
- removed standalone "i" button; header center (avatar+name+chevron) opens info sheet
- call icon top-right, only when canCall (mutual-follow + callsEnabled);
shows "coming soon" until the WebRTC client lands
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>