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.
Expand the admin status page into an operational dashboard
4506a4d3d279556435fdd414265e7499c3dada16 · Keenan Nemetz · 14d ago · parent 2e024cc9
docs/ui-plan.md +14−12
| @@ -20,17 +20,16 @@ deliberately rather than by drift. | |||
| 20 | 20 | Handlers answer a fragment when `HX-Request: true` and a redirect otherwise. | |
| 21 | 21 | - **Identity later.** Keep the `vole` wordmark as a placeholder and keep colour, | |
| 22 | 22 | type, radius, and spacing in tokens so a real identity is a token swap. | |
| 23 | - **Single tenant.** No organisation/workspace switcher. The global bar has two | ||
| 24 | destinations, plus the account menu; the repository owns its own horizontal | ||
| 25 | tabs. | ||
| 23 | - **Single tenant.** No organisation/workspace switcher. The global bar has one | ||
| 24 | public destination, plus the account menu; the repository owns its own | ||
| 25 | horizontal tabs. | ||
| 26 | 26 | ||
| 27 | 27 | ## Navigation model | |
| 28 | 28 | ||
| 29 | Global bar (slim): `vole` · `Runners` · `Activity` · search · account menu. The | ||
| 30 | wordmark is home, so there is no separate Repositories link. The account menu | ||
| 31 | carries Account, Admin for instance admins, Status, and Sign out; the current | ||
| 32 | destination is marked. Search is a field on wide screens and takes its own row | ||
| 33 | on narrow ones. | ||
| 29 | Global bar (slim): `vole` · `Activity` · search · account menu. The wordmark is | ||
| 30 | home, so there is no separate Repositories link. The account menu carries | ||
| 31 | Account, Status for instance admins, and Sign out; the current destination is | ||
| 32 | marked. Search is a field on wide screens and takes its own row on narrow ones. | ||
| 34 | 33 | ||
| 35 | 34 | Repository header: the repository name and its short description sit above the | |
| 36 | 35 | tabs at the home-page header scale, with a lock for a private repository or a | |
| @@ -40,8 +39,8 @@ the tabs, not the page, are the navigation. The tabs are: | |||
| 40 | 39 | `Overview` · `Activity` · `Code` · `Issues` · `Change requests` · `Releases` · `Runs` · `Locks` · `Settings` | |
| 41 | 40 | ||
| 42 | 41 | No sidebar. A sidebar only pays for its width when there are many persistent | |
| 43 | destinations; here the repository has seven and the global bar has two, and they | ||
| 44 | fit on one row at desktop widths. On narrow screens the tab row scrolls | ||
| 42 | destinations; here the repository has several and the global bar has one, and | ||
| 43 | they fit on one row at desktop widths. On narrow screens the tab row scrolls | ||
| 45 | 44 | horizontally rather than collapsing into a menu. | |
| 46 | 45 | ||
| 47 | 46 | Every tab opens with the same page header: a title and one-line summary on the | |
| @@ -67,7 +66,6 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 67 | 66 | - done — repository list (`/`) | |
| 68 | 67 | - done — sign-in, registration, enrollment link | |
| 69 | 68 | - done — account (name, keys, passkeys, sessions) | |
| 70 | - done — runners and queue | ||
| 71 | 69 | - done — styled 404 page everywhere, including missing detail resources and | |
| 72 | 70 | download paths | |
| 73 | 71 | - done — styled 500 page everywhere; a handler panic before the first byte is | |
| @@ -82,7 +80,11 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 82 | 80 | type filter, and 50-event pages | |
| 83 | 81 | - done — instance admin: repository creation and access rules, accounts, | |
| 84 | 82 | enrollment links, admin grants, keys, and sessions | |
| 85 | - done — health/status page at `/status`; `/healthz` stays the plain-text probe | ||
| 83 | - done — instance-admin status page at `/status` with storage and filesystem | ||
| 84 | usage, LFS/log/artifact breakdowns, page-view and unique-user counts, runner | ||
| 85 | presence and queue depth, and an effective configuration summary. The page is | ||
| 86 | split into Overview, Storage, Runners, and Configuration tabs; `/healthz` stays | ||
| 87 | the plain-text probe and old `/runners` links redirect to the Runners tab. | ||
| 86 | 88 | ||
| 87 | 89 | ### Repository | |
| 88 | 90 | ||