- Shipped
- July 7, 2026 at 11:42 PM UTC
- Author
- Kamo
- Commit
- 99487b5
- CanvaApiClient: PKCE authorize, token exchange/refresh/revoke, users, designs (create/list), export jobs, byte fetch - CanvaTokenService: encrypted per-member tokens (PlatformSecretCipher), single-flight proactive refresh (Canva refresh tokens are single-use/rotating) - CanvaOAuthController (permit-all): connect intent → /start → /callback, return-nav landing - CanvaController (authed): status, connect-start, create/list designs, export (create+poll+cache), byte export-proxy, disconnect