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.
Update the change page as live regions, not one sidebar swap
707dfd10f309461a77a4a8f73dcce74b07c91fd6 · Keenan Nemetz · 10d ago · parent 9f5efa3c
Update the change page as live regions, not one sidebar swap The 20-second poll replaced the entire sidebar, so every new widget needed its own reason to opt out and live updates stopped while it was in use. The sidebar is now a set of regions: review status, changes, approvals, checks, and the combined result are data-only live regions returned with hx-swap-oob; the target picker, issue search, and composers are outside every polled swap. Approval and the other multi-region writes use the same out-of-band group, and the page action group refreshes from the write without replacing unrelated state.
server/routes.go +1−1
| @@ -149,7 +149,7 @@ func (s *Server) repoRoutes(mux *http.ServeMux) { | |||
| 149 | 149 | mux.HandleFunc("GET /r/{name}/requests/{id}/files", w.RequestFiles) | |
| 150 | 150 | mux.HandleFunc("GET /r/{name}/requests/{id}/files/{path...}", w.RequestFiles) | |
| 151 | 151 | mux.HandleFunc("GET /r/{name}/requests/{id}/runs", w.RequestRuns) | |
| 152 | mux.HandleFunc("GET /r/{name}/requests/{id}/aside", w.RequestAside) | ||
| 152 | mux.HandleFunc("GET /r/{name}/requests/{id}/live", w.RequestLive) | ||
| 153 | 153 | mux.HandleFunc("GET /r/{name}/requests/{id}/issues/search", w.SearchRequestIssues) | |
| 154 | 154 | mux.HandleFunc("GET /r/{name}/requests/{id}/comment-form", w.RequestCommentForm) | |
| 155 | 155 | mux.HandleFunc("POST /r/{name}/requests/{id}/approve", w.ApproveRequest) | |