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/web/templates/layout.html +6−2
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | <meta charset="utf-8"> | |
| 5 | 5 | <meta name="viewport" content="width=device-width,initial-scale=1"> | |
| 6 | 6 | <meta name="csrf" content="{{.CSRF}}"> | |
| 7 | <meta name="color-scheme" content="dark"> | ||
| 7 | <meta name="color-scheme" content="dark light"> | ||
| 8 | 8 | <title>{{.Title}} · Vole</title> | |
| 9 | 9 | <link rel="icon" href="/static/favicon.svg" type="image/svg+xml"> | |
| 10 | 10 | <link rel="stylesheet" href="/static/vole.css"> | |
| @@ -20,6 +20,9 @@ | |||
| 20 | 20 | <a href="/runners">{{icon "server"}}Runners</a> | |
| 21 | 21 | {{if .InstanceAdmin}}<a href="/admin">{{icon "sliders-horizontal"}}Admin</a>{{end}} | |
| 22 | 22 | </nav> | |
| 23 | <form class="topsearch" method="get" action="/" role="search"> | ||
| 24 | <input type="search" name="q" value="{{.Query}}" placeholder="Search repositories" aria-label="Search repositories"> | ||
| 25 | </form> | ||
| 23 | 26 | <div class="topright"> | |
| 24 | 27 | {{if .LoggedIn}} | |
| 25 | 28 | <a class="account" href="/account">{{icon "user"}}{{.User}}</a> | |
| @@ -28,7 +31,8 @@ | |||
| 28 | 31 | {{else}}{{if .DevLogin}}<a href="/dev/login">Dev login</a> · {{end}}<a href="/login">Log in</a>{{end}} | |
| 29 | 32 | </div> | |
| 30 | 33 | </header> | |
| 31 | <main class="page"> | ||
| 34 | <a class="skip-link" href="#main">Skip to content</a> | ||
| 35 | <main class="page" id="main"> | ||
| 32 | 36 | {{if .Error}}<div class="flash bad">{{.Error}}</div>{{end}} | |
| 33 | 37 | {{end}} | |
| 34 | 38 | ||