Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

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.

docs/change-requests.md +13

@@ -14,6 +14,15 @@ requests/<ulid>/approvals/<account-id>.md # one approval per account
14 14
15 15 ## Opening and landing a request
16 16
17 A contributor opens a request from the web after pushing a branch under
18 `refs/heads/contrib/<account-id>/`. The **Open change request** form on the
19 repository's change-request page lists their namespaced branches; the browser
20 builds the request from the branch's current commit. A contributor cannot name an
21 arbitrary commit or another account's branch. CI for that commit is held until a
22 maintainer allows the exact tip from the repository page.
23
24 Maintainers can still use the CLI:
25
17 26 ```sh
18 27 # The author pushes a branch and opens a request.
19 28 git push origin feature:refs/heads/feature
@@ -46,6 +55,10 @@ A protected branch only accepts an update if the new tip is the approved commit,
46 55 or a merge of that commit with the current branch. That is why "merge, then push"
47 56 works, but adding an extra commit after approval does not.
48 57
58 An approval can also be recorded from the request page in the browser when the
59 signed-in account has maintain access. The approver is the session's account id, not
60 a name from the page.
61
49 62 An approval is stored at `approvals/<account-id>.md`. Only the account named in
50 63 that path can create, change, or remove it. The `author` field on a request is for
51 64 display and carries no authority. An admin can repair an approval, and the