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.
Title the linked issues section Issues and shrink unlink
267feec2a6089cca6532d0a3d75eaffe2ba48594 · Keenan Nemetz · 10d ago · parent 86ddbd14
Title the linked issues section Issues and shrink unlink The section lists linked issues, so calling it Details described the shape rather than the content. Removing a link is now a small unlink icon whose accessible name still names the issue, instead of a wide Remove button beside every row.
server/web/writes.go +4−4
| @@ -473,12 +473,12 @@ func (w *Web) UpdateRequestIssues(rw http.ResponseWriter, r *http.Request) { | |||
| 473 | 473 | w.refuse(rw, r, "you do not have permission to change these links") | |
| 474 | 474 | return | |
| 475 | 475 | } | |
| 476 | // A refused link re-renders the Details section, so the reason appears beside | ||
| 476 | // A refused link re-renders the Issues section, so the reason appears beside | ||
| 477 | 477 | // the controls instead of replacing the review. | |
| 478 | 478 | details := func(msg string) (string, any) { | |
| 479 | 479 | v := w.requestSidebar(r, m, req, "", "") | |
| 480 | v.DetailsError = msg | ||
| 481 | return "request_details", v | ||
| 480 | v.IssuesError = msg | ||
| 481 | return "request_issues", v | ||
| 482 | 482 | } | |
| 483 | 483 | action := strings.TrimSpace(r.PostFormValue("action")) | |
| 484 | 484 | if action != "add" && action != "remove" { | |
| @@ -528,7 +528,7 @@ func (w *Web) UpdateRequestIssues(rw http.ResponseWriter, r *http.Request) { | |||
| 528 | 528 | if updated == nil { | |
| 529 | 529 | updated = req | |
| 530 | 530 | } | |
| 531 | w.render(rw, "request_details", w.requestSidebar(r, m, updated, "", ""), 0) | ||
| 531 | w.render(rw, "request_issues", w.requestSidebar(r, m, updated, "", ""), 0) | ||
| 532 | 532 | return | |
| 533 | 533 | } | |
| 534 | 534 | http.Redirect(rw, r, "/r/"+m.Name+"/requests/"+id, http.StatusSeeOther) | |