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 repository search, list pagination, and theme/a11y polish
5cab7b18548e5263c01549cb61415fd7777d1758 · Keenan Nemetz · 15d ago · parent 0b26547e
Add repository search, list pagination, and theme/a11y polish The chrome and the index page search repository names and descriptions after the same read filter, so a private repository cannot appear. Issues and changes paginate at 25 rows with filters and HTMX navigation preserved. Polish from the UI plan: a light token block follows prefers-color-scheme, a skip link and focus-visible outlines help keyboard users, panels scroll horizontally on narrow screens, and the empty index/search states explain what is visible. Also fixes a flaky key assertion in the admin users test.
docs/ui-plan.md +9−5
| @@ -9,8 +9,9 @@ deliberately rather than by drift. | |||
| 9 | 9 | Avoid GitHub's whitespace-heavy chrome; avoid Sourcehut's bareness. A row of | |
| 10 | 10 | data should be readable at a glance, and a page should fit on one screen when | |
| 11 | 11 | it can. | |
| 12 | - **Dark only for now.** Every colour comes from a custom property on `:root`. | ||
| 13 | A light theme is a second block of variables, not a rewrite. | ||
| 12 | - **Dark by default.** Every colour comes from a custom property on `:root`. | ||
| 13 | A light theme is a second block of variables, not a rewrite; it currently | ||
| 14 | follows the operating system's `prefers-color-scheme`. | ||
| 14 | 15 | - **Server rendered.** Go `html/template` produces the page. HTMX is the default | |
| 15 | 16 | dynamic layer, vendored into the binary; JavaScript remains for passkeys, | |
| 16 | 17 | clipboard copy, and rich widgets such as the label/assignee token input. | |
| @@ -66,7 +67,8 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 66 | 67 | download paths | |
| 67 | 68 | - done — styled 500 page everywhere; a handler panic before the first byte is | |
| 68 | 69 | recovered into it, and the detail is logged rather than rendered | |
| 69 | - todo — search across visible repositories | ||
| 70 | - done — search across visible repositories, by name and description, in the | ||
| 71 | chrome and on the index page | ||
| 70 | 72 | - todo — instance-wide activity feed on the home page (after the repo feed) | |
| 71 | 73 | - done — instance admin: repository creation and access rules, users, | |
| 72 | 74 | invitations, admin grants, keys, and sessions | |
| @@ -125,8 +127,10 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 125 | 127 | `/admin/users` for invitations, admin grants, retirement, keys, and sessions. | |
| 126 | 128 | 6. **CI** — done: workflow/job list, cancel a queued run, rerun a finished | |
| 127 | 129 | one as another attempt. | |
| 128 | 7. **Polish** — search, responsive pass, accessibility pass, light theme, | ||
| 129 | empty states, pagination. | ||
| 130 | 7. **Polish** — done: repository search, issue/change pagination, empty states, | ||
| 131 | a light token block, skip link, and focus-visible outlines. Remaining: a | ||
| 132 | deliberate responsive and accessibility audit across 1440/1024/390 px, and | ||
| 133 | code search within a repository. | ||
| 130 | 134 | ||
| 131 | 135 | ## Dynamic layer | |
| 132 | 136 | ||