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}}) | |