Skip to content

feat: add generic OIDC login for any spec-compliant provider - #128

Open
xoiram wants to merge 4 commits into
akifbayram:mainfrom
xoiram:feat/generic-oidc-login
Open

xoiram wants to merge 4 commits into
akifbayram:mainfrom
xoiram:feat/generic-oidc-login

Conversation

@xoiram

@xoiram xoiram commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Self-hosted admins can now point a single OIDC_ISSUER_URL/CLIENT_ID/CLIENT_SECRET slot at any spec-compliant provider (Keycloak, Authentik, Auth0, Okta, etc.) via OIDC Discovery, alongside the existing cloud-only Google/Apple login.

Discovery and endpoint URLs are pinned to https://, issuer matching is trailing-slash normalized, and email_verified defaults to Google/Apple's strict behavior (rejects false or absent) with an explicit opt-out for IdPs that omit the claim.

Self-hosted admins can now point a single OIDC_ISSUER_URL/CLIENT_ID/CLIENT_SECRET
slot at any spec-compliant provider (Keycloak, Authentik, Auth0, Okta, etc.) via
OIDC Discovery, alongside the existing cloud-only Google/Apple login. Discovery
and endpoint URLs are pinned to https://, issuer matching is trailing-slash
normalized, and email_verified defaults to Google/Apple's strict behavior
(rejects false or absent) with an explicit opt-out for IdPs that omit the claim.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@xoiram
xoiram force-pushed the feat/generic-oidc-login branch from 88a24d4 to 966ffb2 Compare August 7, 2026 16:47
xoiram and others added 3 commits August 19, 2026 17:27
…nly display

Unrelated pre-existing regression from upstream's "shorten activity user
names" change (ActivityTableView now renders firstName(display_name)).
The test's mock names used a space ("User 5"), which firstName() truncates
to "User", making rows indistinguishable and breaking two assertions.
Use a space-free mock name so each row stays unique post-truncation.
Unrelated pre-existing regression from upstream's "strip AI-echoed item
suffixes and tighten query relevance prompt" change, which intentionally
disabled the keyword pre-filter in applyContextLimits (see the
PRE-FILTER DISABLED comment there) without updating this test. The
scenario it covered — a keyword filter trimming bins into other_bins —
no longer happens; completeness now depends only on the token budget.
CI's npm audit --audit-level=critical was failing on this branch since
it predates main's audit-fix commit. npm audit fix resolved everything
within existing package.json semver ranges (lockfile-only, no
package.json changes). Left react-router-dom (client, moderate) and
esbuild/sharp (server, high/low) untouched — all need a deliberate
major-version bump and audit-level=critical doesn't gate on them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant