v5.2.14
Signup timestamps stamped from Firebase Auth creationTime in both write paths (onCreate event + user/signup fallback route). metadata.created and consent.{legal,marketing}.grantedAt/revokedAt now match Auth's canonical value instead of "now"/request-time, ending the recurring OMEGA-migration churn where every new signup got re-fixed on the next run.
Signup idempotency gate: removed the 5-minute account-age reject from user/signup. flags.signupProcessed is the sole gate, so a genuinely-unprocessed account can complete signup whenever it retries (fixes slow/missing-onCreate + retry-after-5min rejections). Consent-capture test updated accordingly.
CLI: the "Kill these processes to free the ports?" prompt auto-confirms Y after 5s of no input, so unattended test/dev loops don't hang. Manual y/n and Ctrl+C still work.
AI claude-code provider: rewritten from a local-only @anthropic-ai/claude-agent-sdk wrapper (spawned the claude binary, would not run in Cloud Functions) to a plain-HTTPS call via @anthropic-ai/sdk using the OAuth token as Authorization: Bearer + anthropic-beta: oauth-2025-04-20 — bills the Claude Pro/Max subscription and runs anywhere Node runs.