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.

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)