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.
Merge the landing facts into the Review section
ad4d93489a023ec688702a889c53adf4c990dcfa · Keenan Nemetz · 11d ago · parent 59c0625b
Merge the landing facts into the Review section The merge check and closes links describe the same base/head target the Review controls do, so they now live under Review instead of a separate What would land heading. Changes moves between Review and Approvals, and HTMX write fragments compute the landing facts so they render the complete sidebar.
server/web/writes.go +4−4
| @@ -193,7 +193,7 @@ func (w *Web) ApproveRequest(rw http.ResponseWriter, r *http.Request) { | |||
| 193 | 193 | return | |
| 194 | 194 | } | |
| 195 | 195 | sidebar := func(msg string) (string, any) { | |
| 196 | return "request_sidebar", w.requestSidebar(r, m, req, "", msg) | ||
| 196 | return "request_sidebar", w.requestSidebarWithLanding(r, m, req, "", msg) | ||
| 197 | 197 | } | |
| 198 | 198 | // The form carries the base and head the page displayed. If a push moved the | |
| 199 | 199 | // followed branch, or the request was retargeted, the writer refuses rather than | |
| @@ -216,10 +216,10 @@ func (w *Web) ApproveRequest(rw http.ResponseWriter, r *http.Request) { | |||
| 216 | 216 | if htmxRequest(r) { | |
| 217 | 217 | updated, err := metadata.GetRequest(m.Git(), id) | |
| 218 | 218 | if err != nil { | |
| 219 | w.render(rw, "request_sidebar", w.requestSidebar(r, m, req, "", err.Error()), 0) | ||
| 219 | w.render(rw, "request_sidebar", w.requestSidebarWithLanding(r, m, req, "", err.Error()), 0) | ||
| 220 | 220 | return | |
| 221 | 221 | } | |
| 222 | w.render(rw, "request_sidebar", w.requestSidebar(r, m, updated, "", ""), 0) | ||
| 222 | w.render(rw, "request_sidebar", w.requestSidebarWithLanding(r, m, updated, "", ""), 0) | ||
| 223 | 223 | return | |
| 224 | 224 | } | |
| 225 | 225 | http.Redirect(rw, r, "/r/"+m.Name+"/requests/"+id, http.StatusSeeOther) | |
| @@ -503,7 +503,7 @@ func (w *Web) MergeRequest(rw http.ResponseWriter, r *http.Request) { | |||
| 503 | 503 | // page* rather than as bare text, so the reader keeps the conflict block and | |
| 504 | 504 | // the diff that explain it. | |
| 505 | 505 | if htmxRequest(r) { | |
| 506 | w.render(rw, "request_sidebar", w.requestSidebar(r, m, req, "", err.Error()), 0) | ||
| 506 | w.render(rw, "request_sidebar", w.requestSidebarWithLanding(r, m, req, "", err.Error()), 0) | ||
| 507 | 507 | return | |
| 508 | 508 | } | |
| 509 | 509 | w.renderRequestPage(rw, r, err.Error(), http.StatusConflict) | |