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/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