Commit 5906dbc
authored
Release v4.0.0-rc1 (#27)
* Add OIDC social login and two-factor authentication (v4.0.0)
Backend:
- OIDC provider support (Google, Apple, Microsoft, generic OIDC)
- Email OTP and passkey (WebAuthn) two-factor authentication
- Recovery codes for 2FA backup access
- OAuth account linking/unlinking with safety checks
- ID token signature verification via JWKS
- Cryptographically secure OTP generation
- OAuth state nonce replay protection
- Database migrations for oauth_accounts, twofa_config,
twofa_challenges, and webauthn_credentials tables
Frontend:
- Social login buttons on login page (config-driven)
- OAuth callback handler and auth flow integration
- Security Settings page with 2FA management
- TwoFactorSettings component (enable/disable, recovery codes)
- LinkedAccounts component (connect/disconnect providers)
- TwoFactorVerify page (email OTP, passkey, recovery code)
- Admin panel security tab for feature flag visibility
Testing:
- 93 backend pytest tests (config, migrations, OAuth, 2FA)
- 3 new Playwright spec files (oauth-ui, security-settings, two-factor)
- Updated test-e2e.sh with Phase 6 (OIDC/2FA backend tests)
- Added port collision prevention and lock file to test runner
* Add comprehensive store submission guide
* Add STORE-SUBMISSION.md to .gitignore (internal docs)
* chore: prep v4.0.0 release
Tighten token handling and telemetry ingestion, and add mobile Vitest coverage. Ignore local agent/tool state files from the repo.
* fix: enforce 2FA on login flows
Require a 2FA challenge whenever a user has 2FA enabled, including OAuth callback logins. Ignore coverage artifacts and align auth test password to current validation rules.
* chore: bump Flask and clean bandit
Update Flask to 3.1.3 to address a pip-audit finding, and add targeted nosec annotations for Bandit false positives.
* fix: stabilize auth refresh and audit indexes
* fix: address CodeQL oauth and logging findings
* fix: remove provider detail from oauth warning log
* fix: use query response mode for Apple OAuth callback
* Revert "fix: use query response mode for Apple OAuth callback"
This reverts commit dfcbd5f.
* fix: use query response mode for Apple OAuth callback
* fix: preserve account context when linking oauth providers
* fix: add passkey registration action in security settings
* fix: support Apple form_post OAuth callback bridge
* Revert "fix: support Apple form_post OAuth callback bridge"
This reverts commit 1dddfcf.
* fix: bridge Apple form_post callback to SPA route
* fix: keep oauth linking in-session and add account deletion
* feat: expose security settings from admin panel
* refactor: keep security actions in admin flow
* fix: surface passkey registration conflicts clearly
* Revert "fix: surface passkey registration conflicts clearly"
This reverts commit 54fff17.
* fix: show oauth callback failure instead of spinner
* fix: surface oauth callback errors to users
* style: increase spacing in admin security sections
* fix: improve passkey registration error handling
* fix: support Apple token exchange and passkey parsing
* fix: normalize Apple private key env formatting
* fix: support legacy webauthn registration credential fields
* fix: decode base64url fields for legacy passkey parsing
* fix: construct attestation response for legacy webauthn
* fix: use theme-aware background for passkey device rows
* fix: send WebAuthn assertion for passkey 2FA login
* fix: normalize passkey transports for auth options
* fix: support legacy passkey authentication credential parsing
* fix: resolve CI security findings for release branch1 parent daa054e commit 5906dbc
44 files changed
Lines changed: 10708 additions & 2686 deletions
File tree
- apps
- mobile
- src/api
- test
- server
- services
- tests
- web
- src
- api
- components
- AdminPanel
- config
- context
- pages
- utils
- tests/e2e
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
41 | 45 | | |
42 | 46 | | |
43 | 47 | | |
| |||
57 | 61 | | |
58 | 62 | | |
59 | 63 | | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
60 | 71 | | |
61 | | - | |
| 72 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
28 | 20 | | |
29 | 21 | | |
30 | 22 | | |
| |||
0 commit comments