Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

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