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.
Search issues, changes and comments from one page
72f222921280b3c6c920ee81f6595b52563bb648 · Keenan Nemetz · 10d ago · parent 6762a520
Search issues, changes and comments from one page /search asks one question across the whole instance. The results are the rows from the search table, shown with the kind, the repository, the `#42` number when there is one, the author, and the matched sentence with the match marked. Two rules make the page honest: - Visibility is the page rule, not a second one. The handler asks the index for the repositories the request may read and passes only those ids to the query, so a private repository's titles cannot appear. - Freshness does not depend on a page having been visited. A search refreshes the repositories it is allowed to see before querying, so an issue pushed a minute ago is found even if nobody opened its repository since. An exact `#42` or id prefix is answered before the text search, so the entity someone named is the first row. The snippet is escaped before its match markers become tags. The header gains a Search item next to Activity; the repository search box on the home page is unchanged.
server/web/templates/chrome.html +1
| @@ -29,6 +29,7 @@ | |||
| 29 | 29 | <nav class="topnav" aria-label="Global"> | |
| 30 | 30 | <a class="{{if eq .Section "repos"}}active{{end}}" href="/"{{if eq .Section "repos"}} aria-current="page"{{end}}>{{icon "house"}}Home</a> | |
| 31 | 31 | <a class="{{if eq .Section "activity"}}active{{end}}" href="/activity"{{if eq .Section "activity"}} aria-current="page"{{end}}>{{icon "activity"}}Activity</a> | |
| 32 | <a class="{{if eq .Section "search"}}active{{end}}" href="/search"{{if eq .Section "search"}} aria-current="page"{{end}}>{{icon "search"}}Search</a> | ||
| 32 | 33 | {{if .InstanceAdmin}}<a class="{{if eq .Section "users"}}active{{end}}" href="/users"{{if eq .Section "users"}} aria-current="page"{{end}}>{{icon "users"}}Accounts</a>{{end}} | |
| 33 | 34 | </nav> | |
| 34 | 35 | <form class="topsearch" method="get" action="/" role="search"> | |