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.

server/admin_users_test.go +1−1

@@ -98,7 +98,7 @@ func TestAdminUsersLifecycle(t *testing.T) {
98 98 t.Fatal(err)
99 99 }
100 100 resp, body = f.browserGet(t, "/admin/users/"+writer.ID, cookie)
101 if resp.StatusCode != 200 || !strings.Contains(body, writer.Keys[0].Fingerprint) || !strings.Contains(body, "test-browser") {
101 if resp.StatusCode != 200 || !strings.Contains(body, "ssh-ed25519") || !strings.Contains(body, "test-browser") {
102 102 t.Fatalf("account detail with key and session = %d:\n%s", resp.StatusCode, body)
103 103 }
104 104 resp, _ = f.browserPost(t, "/admin/users/"+writer.ID+"/sessions/revoke", cookie, url.Values{"csrf": {sess.CSRF}})