
Omar SobhandClaude Opus 4.8
8ae1d8f263
Phase 2 backend: Google Wallet pass + profile contact form
- cardclaws-wallet::google — inline GenericObject + RS256 `savetowallet` JWT
(Rs256Signer via jsonwebtoken; FakeGoogleSigner test double)
- POST /v1/cards/{id}/wallet/google → { saveUrl }
- POST /v1/profile/{handle}/contact — validate, rate-limit, record
contact_form_submission, email the owner (HTML-escaped, Resend)
- WalletConfig gains google issuer id + service account email
84 backend tests; fmt + clippy clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-04 12:32:21 -05:00
..
2026-06-04 12:32:21 -05:00
2026-06-04 11:34:52 -05:00
2026-06-04 10:17:26 -05:00
2026-06-04 10:17:26 -05:00
2026-06-04 10:17:26 -05:00
2026-06-04 12:32:21 -05:00
2026-06-04 11:19:08 -05:00
2026-06-04 12:32:21 -05:00