feat: mount gakudan_liveboard dashboard behind OIDC auth - #11
Merged
Conversation
🔴 Code Coverage — 23%59 of 257 lines covered. ✅ ELP LintNo diagnostics. |
Embed the gakudan_liveboard live console in triagebot, gated by Google OIDC login plus an email-domain allowlist so the dashboard is not public. - bump gakudan v0.1.3 -> v0.1.30; add gakudan_liveboard, datastar, telemetry and nova_auth_oidc deps and app entries - triagebot_oidc_config: nova_auth_oidc provider config from env - triagebot_dashboard_auth: session + domain-allowlist route security (no session -> 302 login, disallowed domain -> 403) - triagebot_auth_controller: adapt binary-keyed bindings to the atom provider key nova_auth_oidc_controller expects - router: public /auth login/callback + self-hosted assets, protected dashboard route group - pin nova_auth to a fork that drops the nova_auth_oidc/_jwt modules it still ships post-extraction (they collide with the dedicated app and break relx + dialyzer) - tests for the auth decision, binding adapter and OIDC config
Taure
force-pushed
the
feat/liveboard-dashboard
branch
from
May 27, 2026 08:07
e15d0b5 to
963124b
Compare
Replace every moving branch pin with a tag or commit SHA so the release is reproducible and no dependency can shift under us: - gakudan_liveboard -> tag v0.1.0 (just released) - nova_auth_oidc -> tag v0.1.0 - nova -> SHA (Nova is pre-release; jsonlogger fork) - datastar -> SHA (pre-release) - nova_auth -> fork SHA (drops the extracted OIDC modules; upstream fix tracked in novaframework/nova_auth#11)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Embeds the gakudan_liveboard live console in triagebot, gated by Google OIDC login + an email-domain allowlist so the dashboard is not public ("not everyone can log in").
What's in it
gakudan_liveboard,datastar,telemetry,nova_auth_oidcdeps + app entriestriagebot_oidc_config—nova_auth_oidcprovider config from env (TRIAGEBOT_OIDC_CLIENT_ID/SECRET,TRIAGEBOT_OIDC_ISSUER,TRIAGEBOT_BASE_URL)triagebot_dashboard_auth— route security: no session → 302 login, email domain not inTRIAGEBOT_DASHBOARD_ALLOWED_DOMAINS→ 403, else allow (empty allowlist = any authenticated user)triagebot_auth_controller— adapts binary-keyed route bindings to the atomproviderkeynova_auth_oidc_controllerexpectstriagebot_router— public/auth/:provider/{login,callback}+ self-hosted/assets(served from gakudan_liveboard's priv), protected dashboard route grouptriagebot_app:start—ensure_providersonly when OIDC creds are set, else logs that login is inertexclude_modulesto resolve thenova_auth/nova_auth_oidcduplicate-module collisionVerified end-to-end (running release)
unauth
/→ 302/auth/google/login·/auth/google/login→ 302 to accounts.google.com with PKCE · authed run index 200, run detail 200, live SSE transcript streaming · self-hosted assets 200 (GDPR).Tests
triagebot_dashboard_auth_SUITE(10 cases: auth decision, allowlist, binding adapter, OIDC config). Full suite: 30 passing.fmt/xrefclean.Run it
Set OIDC env (
TRIAGEBOT_OIDC_CLIENT_ID/SECRET,TRIAGEBOT_BASE_URL) +TRIAGEBOT_DASHBOARD_ALLOWED_DOMAINS; Google redirect URI =<base>/auth/google/callback. Without OIDC creds the board still mounts but login is inert.Two upstream issues worked around (flagged for novaframework/*)
nova_authstill ships the pre-extractionnova_auth_oidc/_jwtstub modules → collide with the dedicatednova_auth_oidcapp (worked around via relxexclude_modules).nova_auth_oidc_controllermatches an atomproviderbinding, but Nova keys bindings as binaries → 500 (worked around viatriagebot_auth_controller).Follow-ups
design/conductor-console→ main + tag, then pin a tag here instead of the branch