config/shale.json | 1 + dashboard/Cargo.lock | 365 +++++++++++++++++++++++++++++- dashboard/Cargo.toml | 2 + dashboard/src/auth.rs | 5 + dashboard/src/bot.svg | 1 + dashboard/src/claude.svg | 1 + dashboard/src/host-protocol.json | 1 + dashboard/src/host.rs | 8 +- dashboard/src/identity.rs | 133 +++++++++++ dashboard/src/main.rs | 10 +- dashboard/src/openai.svg | 1 + dashboard/src/shale.rs | 317 ++++++++++---------------- dashboard/src/shale_page.rs | 381 ++++++++++++++++++++++++++++++-- dashboard/src/users.rs | 74 ++++++- dashboard/web/api.contract.ts | 25 ++- dashboard/web/pages/Account.css | 12 + dashboard/web/pages/Account.tsx | 85 ++++++- dashboard/web/pages/Users.tsx | 9 + dashboard/web/types/users.ts | 5 + nixos/configuration.nix | 8 +- service/shale/service.pkl | 4 +- tools/dashboard-auth-test.py | 37 +++- tools/dashboard-host-test.py | 38 ++++ tools/dashboard-host.py | 24 +- tools/dashboard-shale-attribution-test.py | 224 +++++++++++++++++++ tools/dashboard-shale-link-test.py | 63 +++--- tools/dashboard-shale-page-test.py | 3 +- tools/shale-labels-test.py | 189 ++++++++++++++++ tools/shale-labels.py | 238 ++++++++++++++++++++ 29 files changed, 1996 insertions(+), 268 deletions(-)