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/issues.go +6−3

@@ -162,7 +162,10 @@ type issuePageView struct {
162 162 Backlinks []git.Commit
163 163 }
164 164
165 func (w *Web) issueSidebar(r *http.Request, m *repo.Meta, iss *metadata.Issue, title, errMsg string) issueSidebarView {
165 // issueSidebar is the data the issue page and its HTMX fragments share. The
166 // document title is built here because the number it leads with is read from the
167 // index beside the labels; a fragment that replaces one section keeps it.
168 func (w *Web) issueSidebar(r *http.Request, m *repo.Meta, iss *metadata.Issue, errMsg string) issueSidebarView {
166 169 acl, _ := m.ACL()
167 170 canManage := canTriage(acl, w.accountName(r), iss.Author)
168 171 _ = w.ensureIndex(memoOf(r), m)
@@ -170,7 +173,7 @@ func (w *Web) issueSidebar(r *http.Request, m *repo.Meta, iss *metadata.Issue, t
170 173 assignable := mergeNames(w.assignableAccounts(m), iss.Assignees)
171 174 number, _, _ := w.Index.Number(m.ID, iss.ID)
172 175 return issueSidebarView{
173 Page: w.page(r, title),
176 Page: w.page(r, numberedTitle(number, iss.Title, "", m.Name)),
174 177 Name: m.Name,
175 178 Issue: iss,
176 179 Number: number,
@@ -218,7 +221,7 @@ func (w *Web) IssueView(rw http.ResponseWriter, r *http.Request) {
218 221 w.notFound(rw, r)
219 222 return
220 223 }
221 sidebar := w.issueSidebar(r, m, iss, m.Name+" · "+iss.Title, "")
224 sidebar := w.issueSidebar(r, m, iss, "")
222 225 w.render(rw, "issue", issuePageView{
223 226 issueSidebarView: sidebar,
224 227 Description: w.renderMarkdown(m.Name, iss.Description),