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.
Add browser auth, contributor access, and gated CI
6c84d387e5f608360e30484a1a5b1cff41076850 · Keenan Nemetz · 16d ago · parent c36d5073
Add browser auth, contributor access, and gated CI Browser sign-in now uses passkeys. Enrollment links are one-time, sessions are hashed in users.db, and issue/comment/approval writes use the session account. HTTPS public_url is required for WebAuthn. Add the contributor role between read and maintain. Contributors can discuss and open change requests, and may push only refs/heads/contrib/<account-id>/. Contributor CI is held per commit until a maintainer allows the exact tip from the repository page. Rename the write role to maintain. write remains accepted as the historical spelling, and access.Write remains as a Go alias so existing callers and ACL rows keep working. Update the web, CLI, queue schema, and guides for the new flows, and cover the role, namespace, auth, and CI-gating paths in tests.
server/web/releases.go +2−2
| @@ -49,7 +49,7 @@ func (w *Web) Releases(rw http.ResponseWriter, r *http.Request) { | |||
| 49 | 49 | Name string | |
| 50 | 50 | Tags []git.Tag | |
| 51 | 51 | Lightweight int | |
| 52 | }{w.base(m.Name + " · releases"), m.Name, tags, light}, 0) | ||
| 52 | }{w.page(r, m.Name+" · releases"), m.Name, tags, light}, 0) | ||
| 53 | 53 | } | |
| 54 | 54 | ||
| 55 | 55 | func (w *Web) ReleaseView(rw http.ResponseWriter, r *http.Request) { | |
| @@ -112,7 +112,7 @@ func (w *Web) ReleaseView(rw http.ResponseWriter, r *http.Request) { | |||
| 112 | 112 | Artifacts []metadata.Artifact | |
| 113 | 113 | ArtifactBytes int64 | |
| 114 | 114 | }{ | |
| 115 | Page: w.base(m.Name + " · " + t.Name), | ||
| 115 | Page: w.page(r, m.Name+" · "+t.Name), | ||
| 116 | 116 | Name: m.Name, | |
| 117 | 117 | Tag: t, | |
| 118 | 118 | Notes: notes, | |