diff --git a/docs/web-ui/dashboard.md b/docs/web-ui/dashboard.md index 5ca57d9a..3f218335 100644 --- a/docs/web-ui/dashboard.md +++ b/docs/web-ui/dashboard.md @@ -283,7 +283,7 @@ on the H0M3 hub, same minimal chrome as `/logs.html` (a `← home` back-link than `/core.html`'s plain title. Its own esbuild bundle (`credentials.js`); no SSE — it reads `/api/state` once for the (shared) agent picker and otherwise works off purpose-built endpoints per tab. -Two sub-tabs: +Three sub-tabs: ### MATRIX tab @@ -354,6 +354,32 @@ regardless of outcome. The account list reflects what is *provisioned* (an account with a stored token), so a config-declared-but-unprovisioned account appears only once it has been provisioned through the form. +### FORGES tab + +Store a **label + base URL + access token** for an external Forgejo/Gitea/ +Codeberg-compatible forge, per agent. Entirely dashboard-provisioned — +there is no host-side nix config for this (no `services.hyperhive. +extraForges` option). The operator creates the token on the external forge +themselves (however that forge lets them — PAT UI, a teammate with admin, +whatever) and pastes label/URL/token into the form; hive-c0re never talks +to the external forge's API and never creates an account there. + +The selected agent's stored forges come from `GET /api/extra-forges? +agent=` → `{ forges: [{ label, base_url }] }`, derived by scanning +the agent's state dir for `forge-