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.
Build out the forge web UI
f09ef39efe44de693748053a7b596ef328fcf06b · Keenan Nemetz · 15d ago · parent 70b70264
Build out the forge web UI Turn the web surface into a compact, server-rendered forge with HTMX as the progressive dynamic layer. - Split templates and assets into embedded files; add a tokenised dark theme, Lucide icons, and vendored HTMX. - Add the repository Overview page and a separate chronological Activity feed with type filters and HTMX fragment updates. - Finish the issue and change workflows: create pages, comments, close/reopen, labels and assignees, approval, discussion, line-anchored review comments, and HTMX list filters. - Add syntax-highlighted blobs, contributor/statistics derivation, branch-aware code browsing, and a repository Runs list. - Add a loopback-only development login for local write testing, with explicit configuration and listener checks. - Extend tests for the new pages, fragments, labels, assignees, anchors, and development login.
docs/configuration.md +20
| @@ -44,6 +44,7 @@ vole admin user list | |||
| 44 | 44 | | `http_addr` | `"127.0.0.1:8080"` | Address for the web interface and anonymous Git clone | | |
| 45 | 45 | | `ssh_addr` | `"127.0.0.1:2222"` | Address for SSH, the authenticated Git transport | | |
| 46 | 46 | | `public_url` | empty | Canonical browser address; must be HTTPS to enable passkey login | | |
| 47 | | `dev_login` | empty | Development only: sign loopback browser requests in as this account | | ||
| 47 | 48 | | `open_registration` | `false` | Let anyone create an account by registering a passkey; requires `public_url` to be HTTPS | | |
| 48 | 49 | | `max_blob_bytes` | `104857600` (100 MiB) | Largest single file accepted in a push | | |
| 49 | 50 | | `receive_max_bytes` | `1073741824` (1 GiB) | Largest whole push Vole will accept | | |
| @@ -97,6 +98,25 @@ A registered account can add its own SSH key from **Account**, so it can push to | |||
| 97 | 98 | the contributor namespace without an administrator. There is no email | |
| 98 | 99 | verification; registration is a deliberate policy choice, not a safe default. | |
| 99 | 100 | ||
| 101 | ## Development login | ||
| 102 | |||
| 103 | Browsers require HTTPS for passkeys, which makes a local `http://127.0.0.1:8080` | ||
| 104 | preview awkward to use for write testing. `dev_login` is an explicit escape hatch: | ||
| 105 | |||
| 106 | ```toml | ||
| 107 | http_addr = "127.0.0.1:8080" | ||
| 108 | dev_login = "you" | ||
| 109 | ``` | ||
| 110 | |||
| 111 | When set, a request from loopback is signed in as that account using a normal | ||
| 112 | server-side session. Vole refuses to start if `http_addr` is not a loopback | ||
| 113 | address, and logs a warning when the setting is active. The session cookie is | ||
| 114 | deliberately not named `__Host-` so a browser will store it over plain HTTP. | ||
| 115 | Never enable this on an instance other people can reach. | ||
| 116 | |||
| 117 | Logging out opts the browser out of automatic dev login; visit `/dev/login` to | ||
| 118 | sign back in. Remove `dev_login` and restart to turn it off entirely. | ||
| 119 | |||
| 100 | 120 | ## Running behind a proxy | |
| 101 | 121 | ||
| 102 | 122 | Vole serves plain HTTP. If the instance is public, terminate TLS in a proxy in | |