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.

Lead an issue or change page with its number

de84c32b49652afb50e5b71d8bf842a4871ec7ec · Keenan Nemetz · 5d ago · parent eec0e603

Lead an issue or change page with its number

The number alias sat in the subtitle while the heading showed the title alone, and the document title led with the repository, so a browser tab or a bookmark hid which item it was. Put the number before the title on both pages, and name the document from the item outwards: number and title, then the tab, then the repository.

server/web/writes.go +4−4

@@ -85,7 +85,7 @@ func (w *Web) SetIssueLabels(rw http.ResponseWriter, r *http.Request) {
85 85 // A rejected write re-renders the sidebar section the control belongs to, so
86 86 // the reason appears beside it instead of replacing the page with text.
87 87 labelsView := func(msg string) (string, any) {
88 return "issue_labels", w.issueSidebar(r, m, iss, "", msg)
88 return "issue_labels", w.issueSidebar(r, m, iss, msg)
89 89 }
90 90 labels := normalizeLabelSet(r.PostForm["label"])
91 91 updated, err := metadata.UpdateIssue(m.Git(), id, func(iss *metadata.Issue) error {
@@ -104,7 +104,7 @@ func (w *Web) SetIssueLabels(rw http.ResponseWriter, r *http.Request) {
104 104 if updated == nil {
105 105 updated = iss
106 106 }
107 w.render(rw, "issue_labels", w.issueSidebar(r, m, updated, "", ""), 0)
107 w.render(rw, "issue_labels", w.issueSidebar(r, m, updated, ""), 0)
108 108 return
109 109 }
110 110 http.Redirect(rw, r, "/r/"+m.Name+"/issues/"+id, http.StatusSeeOther)
@@ -129,7 +129,7 @@ func (w *Web) SetIssueAssignees(rw http.ResponseWriter, r *http.Request) {
129 129 return
130 130 }
131 131 assigneesView := func(msg string) (string, any) {
132 return "issue_assignees", w.issueSidebar(r, m, iss, "", msg)
132 return "issue_assignees", w.issueSidebar(r, m, iss, msg)
133 133 }
134 134 assignees := metadata.NormalizeAssignees(r.PostForm["assignee"])
135 135 // A current assignee may have lost access since being assigned. Keep them in
@@ -156,7 +156,7 @@ func (w *Web) SetIssueAssignees(rw http.ResponseWriter, r *http.Request) {
156 156 if updated == nil {
157 157 updated = iss
158 158 }
159 w.render(rw, "issue_assignees", w.issueSidebar(r, m, updated, "", ""), 0)
159 w.render(rw, "issue_assignees", w.issueSidebar(r, m, updated, ""), 0)
160 160 return
161 161 }
162 162 http.Redirect(rw, r, "/r/"+m.Name+"/issues/"+id, http.StatusSeeOther)