A CLI-first git forge. cli forge git self-hosted

https://gitbay.org

Commit 1c20fc5c9f

1c20fc5c9fa1ffecea9369a20d6937c70188bca1

parent: 94822078db

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

cmc <hello@cleberg.net> · 2026-09-19 02:52 UTC

web: the dashboard is one column; the activity feed is a section after the queues

Ref #222
internal/web/static/style.css +6 −3
@@ -1027,6 +1027,11 @@ form.actions { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-top: var
10271027form.actions button { flex: 1 1 auto; }
10281028form.actions select, form.actions textarea { width: 100%; }
10291029.feedline { margin-bottom: var(--sp-2); }
1030/* the dashboard's activity feed is a section after the queues, one column */
1031.feed { margin-top: var(--sp-6); max-width: 78ch; }
1032.feed h2 { margin-bottom: var(--sp-3); }
1033.feed .feedline { font-size: var(--fs-2); }
1034.feed .none { color: var(--muted); font-size: var(--fs-1); }
10301035
10311036/* ---- comments and threads ---- */
10321037article.comment {
@@ -1466,10 +1471,8 @@ svg.icon { vertical-align: -0.125em; }
14661471/* ---- breakpoints ---- */
14671472@media (max-width: 62rem) {
14681473 .withaside { grid-template-columns: 1fr; }
1469 /* checks and reviewers before a long thread; the dashboard's aside is
1470 the activity feed, which reads after the queues */
1474 /* checks and reviewers before a long thread */
14711475 .withaside .aside { order: -1; }
1472 .withaside.feedlast .aside { order: 0; }
14731476}
14741477
14751478@media (max-width: 52rem) {
internal/web/templates/dashboard.html +5 −13
@@ -19,9 +19,6 @@
1919<h1>Dashboard</h1>
2020{{with .Rail.Pinned}}<p class="pinned" aria-label="Pinned repositories">{{range .}}<a class="chip" href="/{{.Owner}}/{{.Name}}"><span class="owner">{{.Owner}}/</span>{{.Name}}</a> {{end}}</p>{{end}}
2121
22<div class="withaside feedlast">
23<div class="mainside">
24
2522{{if .Reviews}}{{template "queue" dict "Title" "Waiting on your review" "Items" .Reviews "Kind" "mrs" "Empty" "Nothing waiting on you"}}{{end}}
2623{{if .Assigned}}{{template "queue" dict "Title" "Assigned to you" "Items" .Assigned "Kind" "issues" "Empty" "Nothing assigned to you"}}{{end}}
2724{{if .MRs}}{{template "queue" dict "Title" "Open merge requests" "Items" .MRs "Kind" "mrs" "Empty" "No open merge requests" "Hint" "Yours anywhere, and every one in a repository you can write to."}}{{end}}
@@ -32,14 +29,9 @@
3229{{if not .MRs}}<h2 class="empty">Open merge requests <span class="count">0</span></h2>{{end}}
3330{{if not .Issues}}<h2 class="empty">Open issues <span class="count">0</span></h2>{{end}}
3431
35</div>
36
37<aside class="aside">
38 <div class="grp">
39 <h2>Recent activity</h2>
40 {{range .Feed}}<p class="row feedline">{{if eq .State "failure"}}<span class="dot bad"></span>{{else if eq .State "success"}}<span class="dot ok"></span>{{else if .State}}<span class="dot pend"></span>{{end}}<a href="/{{.Actor}}">{{.Actor}}</a> {{.Verb}} <a href="{{.URL}}"{{if .Jobs}} title="{{join .Jobs ", "}}"{{end}}>{{.Ref}}</a><br><span class="none">{{.Repo}} · <span title="{{whenT .WhenT}}">{{ago .WhenT}}</span></span></p>
41 {{else}}<p class="none">No activity yet</p>{{end}}
42 </div>
43</aside>
44</div>
32<section class="feed">
33 <h2>Recent activity</h2>
34 {{range .Feed}}<p class="feedline">{{if eq .State "failure"}}<span class="dot bad"></span>{{else if eq .State "success"}}<span class="dot ok"></span>{{else if .State}}<span class="dot pend"></span>{{end}}<a href="/{{.Actor}}">{{.Actor}}</a> {{.Verb}} <a href="{{.URL}}"{{if .Jobs}} title="{{join .Jobs ", "}}"{{end}}>{{.Ref}}</a><br><span class="none">{{.Repo}} · <span title="{{whenT .WhenT}}">{{ago .WhenT}}</span></span></p>
35 {{else}}<p class="none">No activity yet</p>{{end}}
36</section>
4537{{end}}