vole
Clone
Read only, no credentials:
https://rodent.software/vole.git
Write over SSH with a registered key:
git clone ssh://git@rodent.software:2222/vole.git
A free and open-source forge that lives in your Git repo.
Add the instance access editor and repository danger zone
2973f7274b3c569de6018239ac8c90df98c38a1b · Keenan Nemetz · 15d ago · parent 1948358f
Add the instance access editor and repository danger zone Instance admins get /admin: a repository list and a per-repository ACL editor for default role, per-account roles, protected branches, approvals, checks, and runners. The editor reads repositories directly instead of through the read rule, because an instance admin may not have a role in the repository they are administering. Everything else still hides behind a 404. Repository admins get rename and delete on the settings page behind typed confirmation. Both go through the instance operations that also move the index, queue, LFS namespace, and locks, carry CSRF, and are audited.
docs/ui-plan.md +16−7
| @@ -20,7 +20,8 @@ deliberately rather than by drift. | |||
| 20 | 20 | - **Identity later.** Keep the `vole` wordmark as a placeholder and keep colour, | |
| 21 | 21 | type, radius, and spacing in tokens so a real identity is a token swap. | |
| 22 | 22 | - **Single tenant.** No organisation/workspace switcher. The global bar has | |
| 23 | three destinations; the repository owns its own horizontal tabs. | ||
| 23 | three destinations, plus Admin for instance admins; the repository owns its | ||
| 24 | own horizontal tabs. | ||
| 24 | 25 | ||
| 25 | 26 | ## Navigation model | |
| 26 | 27 | ||
| @@ -67,7 +68,8 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 67 | 68 | recovered into it, and the detail is logged rather than rendered | |
| 68 | 69 | - todo — search across visible repositories | |
| 69 | 70 | - todo — instance-wide activity feed on the home page (after the repo feed) | |
| 70 | - todo — instance admin: users, invites, keys, repos, permissions | ||
| 71 | - wip — instance admin: repository ACL editor is done; users, invites, keys, | ||
| 72 | and repository create are still todo | ||
| 71 | 73 | - todo — health/status page (currently JSON at `/healthz`) | |
| 72 | 74 | ||
| 73 | 75 | ### Repository | |
| @@ -86,7 +88,7 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 86 | 88 | - todo — activity events from metadata-log state changes (closed/reopened), | |
| 87 | 89 | actor filter, and assignee filter | |
| 88 | 90 | - done — repository settings: description, default branch, visibility | |
| 89 | - todo — danger zone (rename/delete); ACL editing stays instance admin | ||
| 91 | - done — danger zone: rename and delete with typed confirmation | ||
| 90 | 92 | - todo — compare view (`/r/{name}/compare/{base}...{head}`) | |
| 91 | 93 | - todo — file history and blame | |
| 92 | 94 | - todo — language-aware file icons | |
| @@ -113,10 +115,13 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 113 | 115 | 3. **Issues and changes** — done: list/detail layout, composer, filters, | |
| 114 | 116 | close/reopen, discussion, label/assignee triage, writing inline review | |
| 115 | 117 | comments. | |
| 116 | 4. **Activity and settings** — repository activity feed and repository settings | ||
| 117 | (description, default branch, visibility) are done. Remaining: ACL editor, | ||
| 118 | danger zone, and metadata-backed close/reopen events. | ||
| 119 | 5. **Instance admin** — users, invitations, keys, repositories, permissions. | ||
| 118 | 4. **Activity and settings** — repository activity feed, repository settings | ||
| 119 | (description, default branch, visibility, danger zone), and the | ||
| 120 | instance-admin ACL editor are done. Remaining: metadata-backed close/reopen | ||
| 121 | events. | ||
| 122 | 5. **Instance admin** — access rules are done at | ||
| 123 | `/admin/repos/{name}/access`, and rename/delete live in repository settings. | ||
| 124 | Remaining: users, invitations, keys, and repository create. | ||
| 120 | 125 | 6. **CI** — workflow/job list, rerun/cancel. | |
| 121 | 126 | 7. **Polish** — search, responsive pass, accessibility pass, light theme, | |
| 122 | 127 | empty states, pagination. | |
| @@ -176,6 +181,10 @@ visibility, danger zone). Every admin write uses the existing stores, CSRF, and | |||
| 176 | 181 | the audit log; the web is a second surface over the same operations, not a | |
| 177 | 182 | second implementation. | |
| 178 | 183 | ||
| 184 | The first instance-admin surface is the per-repository ACL editor at | ||
| 185 | `/admin/repos/{name}/access`; the rest of the operations above are still CLI | ||
| 186 | only. | ||
| 187 | |||
| 179 | 188 | ## Icons | |
| 180 | 189 | ||
| 181 | 190 | Icons are Lucide 0.468.0 SVGs (ISC, license at `server/web/static/lucide.LICENSE`), | |