Commit 72920bdf05

72920bdf0504bcee3d15305abc0724ae216d088c

parent: c086411ce4

Verified · cmc ci/build: success ci/test: success ci/vuln: success

cmc <hello@cleberg.net> · 2026-09-18 02:33 UTC

web: repodesc empty band, sign-in copy, primary Comment, MR source path

layout.html's repodesc paragraph now renders only when a repository has
a description or topics, so one with neither gets no empty band. login
says "Sign in to continue to" instead of "Log in". The Comment button on
issue.html and mr.html is the page's one primary action, no longer
class="btn". register.html's wiki link is absolute
(https://gitbay.org/krz/gitbay/wiki/SSH-keys). settings.html's archive
row button is danger only while not yet archived, and the #deps anchor
in nav.sections is unconditional since the section always renders.
mr.html's title line names the source repository for a fork's request,
as the aside already does. CHANGELOG's v1.23.0 entry gets the landing
picture bullet and drops the wiki-link org syntax for plain text. The
stale "pinned repos and review queue live on the dashboard" comment in
style.css's phone media query is reworded to name where each is now
reachable.

Ref #218
CHANGELOG.org +4 −1
@@ -26,7 +26,10 @@ title= to =gitbay= in lower case; the templates already are.
2626- Repository settings are bounded rows with a consequence beside each
2727 control, a saved flash, a rejected value kept, and topics as one field.
2828- Landing copy says what the product is and where to go; the register
29 form says to paste the contents of the key file and links [[SSH-keys]].
29 form says to paste the contents of the key file and links the SSH keys
30 wiki page.
31- The landing page shows the merge request page, light and dark,
32 captured from gitbay.org (two embedded PNGs under =/static/img/=).
3033
3134* v1.22.1 — 2026-09-13
3235
internal/web/static/style.css +3 −2
@@ -1465,8 +1465,9 @@ svg.icon { vertical-align: -0.125em; }
14651465 .railbody { flex: 1; overflow: visible; padding: 0; display: flex; align-items: center; }
14661466 form.railsearch { margin: 0 var(--sp-2); }
14671467 form.railsearch input[type="search"] { min-width: 8rem; }
1468 /* pinned repos and the review queue both live on the dashboard, so the
1469 strip keeps only what has nowhere else to go */
1468 /* the strip hides the pinned group and the review queue: pinned repos
1469 are reachable from the repository pages and the review queue from
1470 the dashboard's review section, per the spec */
14701471 .railgroup { display: none; }
14711472 ul.raillist { display: flex; margin: 0; }
14721473 ul.raillist a { border-radius: 0; border-bottom: 2px solid transparent; padding: var(--sp-2) var(--sp-3); }
internal/web/templates/issue.html +1 −1
@@ -31,7 +31,7 @@
3131{{if .Viewer}}
3232<form method="post" action="/{{.Repo.OwnerName}}/{{.Repo.Name}}/issues/{{.Issue.Number}}/comment" class="commentform">
3333<p><textarea name="body" aria-label="Comment" rows="4" placeholder="Comment as {{.Viewer}}"></textarea></p>
34<p><button type="submit" class="btn">Comment</button></p>
34<p><button type="submit">Comment</button></p>
3535</form>
3636{{end}}
3737</div>
internal/web/templates/layout.html +1 −1
@@ -75,7 +75,7 @@
7575 tabs only the identity row and the tab bar render, and the header
7676 is identical on every page within a tab. */}}
7777 {{if eq $top "code"}}
78 <p class="repodesc">{{with field $ "Desc"}}{{.}}{{end}} {{with field $ "Topics"}}{{range .}}<a class="chip topic" href="/explore?q={{.}}">{{.}}</a> {{end}}{{end}}</p>
78 {{if or (field $ "Desc") (field $ "Topics")}}<p class="repodesc">{{with field $ "Desc"}}{{.}}{{end}} {{with field $ "Topics"}}{{range .}}<a class="chip topic" href="/explore?q={{.}}">{{.}}</a> {{end}}{{end}}</p>{{end}}
7979 {{if or $.Repo.Settings.Website (field $ "Mirrors")}}<p class="repometa">{{with $.Repo.Settings.Website}}<a href="{{.}}" rel="nofollow">{{.}}</a>{{end}}{{range $i, $m := field $ "Mirrors"}}{{if or $i $.Repo.Settings.Website}} · {{end}}{{if eq $m.Direction "push"}}mirrors to{{else}}mirrors from{{end}} <a href="{{$m.URL}}" rel="nofollow">{{$m.Target}}</a>{{if $m.Error}}, <span class="bad">sync error: {{$m.Error}}</span>{{else if $m.Synced}}, synced {{$m.Synced}}{{end}}{{end}}</p>{{end}}
8080 {{if $.Viewer}}<p class="toggles">Pinned shows in your rail. Watching sends every issue, request and build to your inbox. Bookmarked lists it under Bookmarks.</p>{{end}}
8181 {{end}}
internal/web/templates/login.html +1 −1
@@ -2,7 +2,7 @@
22{{define "title"}}login · {{.Site}}{{end}}
33{{define "content"}}
44<h1>Sign in</h1>
5{{if .Next}}<p class="meta">Log in to continue to <code>{{.Next}}</code>.</p>{{end}}
5{{if .Next}}<p class="meta">Sign in to continue to <code>{{.Next}}</code>.</p>{{end}}
66{{if .Error}}<p class="error" role="alert">{{.Error}}</p>{{end}}
77{{if .Sent}}
88<p>If that account exists, a login link is on its way. It works once and
internal/web/templates/mr.html +2 −2
@@ -7,7 +7,7 @@
77 {{else if and (eq .MR.State "closed") .MR.ClosedBy}}closed without merging by <a href="/{{.MR.ClosedBy}}">{{.MR.ClosedBy}}</a>{{with .MR.ClosedAt}} on {{when .}}{{end}}
88 {{else if or (eq .MR.State "merged") (eq .MR.State "closed")}}{{if eq .MR.State "merged"}}merged{{else}}closed without merging{{end}}
99 {{else}}opened by <a href="/{{.MR.Author}}">{{.MR.Author}}</a> on {{when .MR.CreatedAt}}{{end}}
10 · <code>{{.MR.SourceRef}}</code> into <code>{{.MR.TargetRef}}</code></p>
10 · <code>{{if .MR.SourcePath}}{{.MR.SourcePath}}:{{end}}{{.MR.SourceRef}}</code> into <code>{{.MR.TargetRef}}</code></p>
1111{{with field . "StackedOn"}}<p class="meta">Stacked on <a href="/{{$.Repo.OwnerName}}/{{$.Repo.Name}}/mrs/{{.Number}}">!{{.Number}} {{.Title}}</a>: merges into its branch until that lands, then onto its target.</p>{{end}}
1212{{with field . "Stacked"}}<p class="meta">Builds on this: {{range $i, $k := .}}{{if $i}}, {{end}}<a href="/{{$.Repo.OwnerName}}/{{$.Repo.Name}}/mrs/{{$k.Number}}">!{{$k.Number}} {{$k.Title}}</a>{{end}}. Merging with squash or rebase is refused while they are open.</p>{{end}}
1313
@@ -46,7 +46,7 @@
4646{{if .Viewer}}
4747<form method="post" action="{{$base}}/comment" class="commentform">
4848<p><textarea name="body" aria-label="Comment" rows="4" placeholder="Comment as {{.Viewer}}"></textarea></p>
49<p><button type="submit" class="btn">Comment</button></p>
49<p><button type="submit">Comment</button></p>
5050</form>
5151{{end}}
5252</div>
internal/web/templates/register.html +1 −1
@@ -10,7 +10,7 @@
1010{{if eq .Mode "invite"}}<div class="field"><label for="invite">Invite code</label><input type="text" id="invite" name="invite" required></div>
1111{{else}}<div class="field"><label for="email">Email</label><input type="text" id="email" name="email" required></div>{{end}}
1212<div class="field"><label for="key">SSH public key</label>
13<p class="hint">Paste the contents of your public key file, usually <code>~/.ssh/id_ed25519.pub</code>. It starts with <code>ssh-ed25519</code> or <code>ssh-rsa</code>. No key yet? <a href="/krz/gitbay/wiki/SSH-keys">Make one</a>.</p>
13<p class="hint">Paste the contents of your public key file, usually <code>~/.ssh/id_ed25519.pub</code>. It starts with <code>ssh-ed25519</code> or <code>ssh-rsa</code>. No key yet? <a href="https://gitbay.org/krz/gitbay/wiki/SSH-keys">Make one</a>.</p>
1414<textarea id="key" name="key" rows="3" required placeholder="ssh-ed25519 AAAA... you@host"></textarea></div>
1515<p><button type="submit">Create account</button></p>
1616</form>
internal/web/templates/settings.html +2 −2
@@ -4,7 +4,7 @@
44{{$base := printf "/%s/%s/settings" .Repo.OwnerName .Repo.Name}}
55<h1>Settings</h1>
66{{if .Notice}}{{if .Saved}}<p class="notice" role="status">{{.Notice}}</p>{{else}}<p class="error" role="alert">{{.Notice}}</p>{{end}}{{end}}
7<nav class="sections" aria-label="Sections"><a href="#identity">Identity</a><a href="#access">Access</a><a href="#gates">Merge gates</a><a href="#branches">Protected branches</a><a href="#tags">Protected tags</a>{{if .DepsEnabled}}<a href="#deps">Dependencies</a>{{end}}<a href="#runners">Runners</a><a href="#lifecycle">Lifecycle</a></nav>
7<nav class="sections" aria-label="Sections"><a href="#identity">Identity</a><a href="#access">Access</a><a href="#gates">Merge gates</a><a href="#branches">Protected branches</a><a href="#tags">Protected tags</a><a href="#deps">Dependencies</a><a href="#runners">Runners</a><a href="#lifecycle">Lifecycle</a></nav>
88
99<section id="identity"><h2>Identity</h2>
1010<form method="post" action="{{$base}}" class="setform">
@@ -179,7 +179,7 @@
179179 <input type="hidden" name="field" value="archive">
180180 <div><label for="archive">Archived</label><p class="hint">Read-only for everyone. Issues and requests close to new activity. Reversible.</p></div>
181181 <div class="check"><input type="checkbox" id="archive" name="archive" value="on"{{if .Repo.Settings.Archived}} checked{{end}}></div>
182 <div><button type="submit" class="danger">Save</button></div>
182 <div><button type="submit" {{if .Repo.Settings.Archived}}class="btn"{{else}}class="danger"{{end}}>Save</button></div>
183183</form>
184184<p class="meta">Deleting or transferring a repository is a CLI operation:
185185<code>gitbay repo delete {{.Repo.OwnerName}}/{{.Repo.Name}} --yes</code></p>