vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Add one Admin page with status, accounts, and the audit log
43e681d8a5d94567aa9530d32b2c89223c1a17f9 · Keenan Nemetz · 4d ago · parent af018ce8
Add one Admin page with status, accounts, and the audit log Instance administration was split between the Status and Accounts pages, and the audit log had no browser view at all. The new /admin page gathers the status tabs, the account roster, and a read-only audit viewer into one place with a tab for each, and /status, /runners, and /users redirect to the tab they named so old links keep working. The audit reader walks the file backwards a chunk at a time, returns the newest records first, and shows one extra record to know whether an older page exists. It skips a line it cannot parse rather than failing the page and refuses a symlink or a non-regular file, as startup already does. Refs #198 (01M6MK0NNZ2XR1D5TQKNWYT4HN).
docs/accounts-and-access.md +10−7
| @@ -246,12 +246,14 @@ change settings, and manage access without a repository-specific entry. SSH Git | |||
| 246 | 246 | and SSH LFS use the key's account for this check; anonymous HTTP clone has no | |
| 247 | 247 | identity, so a private repository still answers `404` there. | |
| 248 | 248 | ||
| 249 | Instance admins also get an **Accounts** page in the top navigation. It covers | ||
| 250 | accounts: create an account from an enrollment link, set its instance-wide role | ||
| 251 | (including `admin`), retire an account, start a fresh enrollment link, and | ||
| 252 | inspect or revoke SSH keys and browser sessions. Repository creation is a **New repository** action | ||
| 253 | on the home page, and per-repository access rules live on that repository's | ||
| 254 | **Settings** tab, visible there to instance admins. | ||
| 249 | Instance admins also get an **Admin** page in the top navigation. Its tabs cover | ||
| 250 | the instance's overview, storage, runners, and effective configuration; the | ||
| 251 | accounts roster, where an admin creates an account from an enrollment link, sets | ||
| 252 | its instance-wide role (including `admin`), retires an account, starts a fresh | ||
| 253 | enrollment link, and inspects or revokes SSH keys and browser sessions; and the | ||
| 254 | audit log. Repository creation is a **New repository** action on the home page, | ||
| 255 | and per-repository access rules live on that repository's **Settings** tab, | ||
| 256 | visible there to instance admins. | ||
| 255 | 257 | ||
| 256 | 258 | The first instance admin must be granted on the host. Instance admin is the | |
| 257 | 259 | instance-wide `admin` role, so `vole admin account role alice admin` and | |
| @@ -429,7 +431,8 @@ capability and use the same metadata writers and validation as the CLI. | |||
| 429 | 431 | That includes protected branches, approvals, required checks, file size limits, | |
| 430 | 432 | locks, issue formatting, and the CI runner allowlist. Privileged actions — such as | |
| 431 | 433 | an admin force-push, a lock override, an account change, or a merge through review — | |
| 432 | are written to `data/audit.log`. | ||
| 434 | are written to `data/audit.log` and can be read by an instance admin at | ||
| 435 | **Admin → Audit log**. | ||
| 433 | 436 | ||
| 434 | 437 | For the reasoning behind this design, see | |
| 435 | 438 | [Architecture](architecture.md#trust-a-credential-resolves-to-an-account). For file locks, see | |