* feat(waitlist): capture OpenCode Connect signups via beta-signup API (closes #87) The 'OpenCode Connect — Coming Soon' card only opened a raw mailto: link, so waitlist signups existed solely as loose emails in the support inbox with no backend capture. - POST the signup to https://opencode.agentlabs.cc/api/beta-signup (OpenCodeMobileSite route -> Brevo list) tagged with source: "opencode-connect-waitlist". The route ignores unknown fields today, so the tag is forward-compatible. - Pure payload/validation/fallback logic lives in src/lib/waitlist.ts (no react-native imports, dependency-injected fetch, AbortController timeout like diagnostics.ts) with node --test coverage. - Graceful degradation: transport failures and 5xx fall back to the old mailto: path so the signup still reaches the inbox; 4xx asks the user to fix their email. Success shows an inline confirmation state. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(waitlist): handle mailto fallback failure, name 502 in fallback test Review findings: Linking.openURL was fire-and-forget, so a device with no mail app failed the recovery path silently — await it and alert with a manual instruction instead. Test title now names 502 (Brevo failure) as an explicit fallback case. Refs #87 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
23 KiB
23 KiB