config/OpenID.pkl | 2 + dashboard/src/auth.rs | 37 +- dashboard/src/guest.rs | 692 ++++++++++++++++++++++++++++++++ dashboard/src/main.rs | 29 ++ dashboard/src/mcp.rs | 1 + dashboard/src/oidc.rs | 103 ++++- dashboard/src/users.rs | 9 + dashboard/tests/guest-jwt.json | 26 ++ dashboard/web/components/Explorer.tsx | 27 +- dashboard/web/pages/SignIn.css | 5 +- dashboard/web/pages/SignIn.tsx | 17 +- dashboard/web/pages/Users.tsx | 11 +- dashboard/web/sso/css/styles.css | 345 ++++++++++++++++ dashboard/web/sso/img/license.txt | 2 + dashboard/web/sso/img/miku-dark.png | Bin 0 -> 2771673 bytes dashboard/web/sso/img/miku-light.png | Bin 0 -> 2051540 bytes dashboard/web/types/users.ts | 2 + nixos/dashboard.nix | 2 - tools/dashboard-oidc-test.py | 53 ++- tools/guest-provider.py | 38 ++ tools/shale-migration.md | 2 + tools/studio.py | 3 + 22 files changed, 1373 insertions(+), 33 deletions(-)