vole
Clone
Read only, no credentials:
https://rodent.software/vole.git
Write over SSH with a registered key:
git clone ssh://git@rodent.software:2222/vole.git
A free and open-source forge that lives in your Git repo.
Make the palette the only search surface
1265ea552fb7346628c1e742a63c758c819379c5 · Keenan Nemetz · 10d ago · parent 6c03e6d3
Make the palette the only search surface The full /search page repeated the palette's query and visibility rule, so one of the two had to become the source of truth. Keep the palette: it shows the first 30 matches, says when a query found more, and is reachable from every page and with the keyboard shortcut. The top bar no longer carries a Search destination or a form fallback; its launcher is a plain button, and the palette dialog never navigates to a page behind it.
server/web/page.go +2−4
| @@ -42,8 +42,8 @@ type Page struct { | |||
| 42 | 42 | // InstanceAdmin reports whether the viewer may use the instance-wide admin | |
| 43 | 43 | // surface. The global bar uses it to show Admin. | |
| 44 | 44 | InstanceAdmin bool | |
| 45 | // Query is the repository search on the index page. The global search box | ||
| 46 | // echoes it; other pages leave it empty. | ||
| 45 | // Query is the repository search on the index page. Other pages leave it | ||
| 46 | // empty. | ||
| 47 | 47 | Query string | |
| 48 | 48 | // Section is the global destination the current page belongs to, used by the | |
| 49 | 49 | // rail to mark the current item. It is presentation only. | |
| @@ -65,8 +65,6 @@ func pageSection(path string) string { | |||
| 65 | 65 | return "repos" | |
| 66 | 66 | case strings.HasPrefix(path, "/activity"): | |
| 67 | 67 | return "activity" | |
| 68 | case path == "/search": | ||
| 69 | return "search" | ||
| 70 | 68 | case path == "/users" || strings.HasPrefix(path, "/users/"): | |
| 71 | 69 | return "users" | |
| 72 | 70 | case strings.HasPrefix(path, "/account"): | |