v1.4.0
OIDC actually works now
Full OAuth 2.0 Authorization Code flow with PKCE — tested end-to-end, consent screen to dashboard. The whole thing.
Fixed
- OIDC
invalid_clientresolved (#11) — The Client Secret is NOT the bot token. BotFather provides a separate secret via Bot Settings > Web Login. Removed non-standardoriginandbot_idparams from the auth URL. Clean standard OIDC now. - OIDC cross-domain redirect (#12) —
originwas derived from the backendredirectURI, breaking setups where frontend and backend live on different domains. Telegram redirected toapi.example.com/#tgAuthResult=...instead ofredirect_uri?code=.... Removedoriginentirely — Telegram uses the standardredirect_urinow. - Login Widget / Mini App P2002 crash (#13) —
/telegram/signinand/telegram/miniapp/signincrashed withUnique constraint failed on emailwhen the user already existed via OIDC. Now checks for existing users bytelegramIdbefore attempting creation. Links the account instead of creating a duplicate.
Added
oidc.clientSecretoption — Pass the Client Secret from BotFather's Web Login settings. Falls back to bot token with a warning if omitted, but OIDC won't work without the proper secret.- Step-by-step OIDC setup docs — Including the undocumented BotFather "remove URL, reopen, switch to OpenID Connect Login" ritual.
Changed
- Test count: 225 → 235. Nine new tests for cross-provider account linking and auth URL regression guards. All verified as failing against v1.3.x.
Migration from v1.3.x
- OIDC users: Add
oidc.clientSecretfrom BotFather's Web Login settings (Bot Settings > Web Login). Register your Allowed URLs and Redirect URL there. See OIDC Prerequisites. - Login Widget and Mini App flows are unaffected.
Full changelog: CHANGELOG.md
Full Changelog: v1.3.3...v1.4.0