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.
Condense the Admin overview to one row of metric cards
9a2a270b91085170678db617a3fae6873df2fd61 · Keenan Nemetz · 4d ago · parent 0db980ee
Condense the Admin overview to one row of metric cards The overview had two card grids, five metrics followed by four account counts, and the storage and account cards repeated detail that belongs on their tabs. It is one row now: storage used, free space, users, repositories, and page views. The Users card is the active account count with the roster mix as its note (people, bots, admins, retired), so the separate account cards are gone. LFS object totals stay on the Storage tab. The queue and runner counts remain a line below the row. Refs #198 (01M6MK0NNZ2XR1D5TQKNWYT4HN).
server/web/templates/status.html +9−34
| @@ -12,48 +12,23 @@ | |||
| 12 | 12 | {{if .Storage.DiskErr}}<span class="status-note bad">unavailable</span>{{else}}<span class="status-note">available of {{bytes .Storage.Disk.Total}}</span>{{end}} | |
| 13 | 13 | </div> | |
| 14 | 14 | <div class="card"> | |
| 15 | <span class="muted">LFS objects</span> | ||
| 16 | <strong>{{bytes .LFS.Total.Bytes}}</strong> | ||
| 17 | <span class="status-note">{{.LFS.Total.Objects}} object(s)</span> | ||
| 15 | <span class="muted">Users</span> | ||
| 16 | <strong>{{.Accounts}}</strong> | ||
| 17 | <span class="status-note">{{.AccountSummary.UsersNote}}</span> | ||
| 18 | </div> | ||
| 19 | <div class="card"> | ||
| 20 | <span class="muted">Repositories</span> | ||
| 21 | <strong>{{.Repos}}</strong> | ||
| 22 | <span class="status-note">hosted here</span> | ||
| 18 | 23 | </div> | |
| 19 | 24 | <div class="card"> | |
| 20 | 25 | <span class="muted">Page views</span> | |
| 21 | 26 | <strong>{{if .Views.Disabled}}—{{else}}{{.Views.Month.Views}}{{end}}</strong> | |
| 22 | 27 | <span class="status-note">{{if .Views.Disabled}}not recorded{{else}}last 30 days{{end}}</span> | |
| 23 | 28 | </div> | |
| 24 | <div class="card"> | ||
| 25 | <span class="muted">Unique users</span> | ||
| 26 | <strong>{{if .Views.Disabled}}—{{else}}{{.Views.Month.Users}}{{end}}</strong> | ||
| 27 | <span class="status-note">{{if .Views.Disabled}}not recorded{{else}}signed in, last 30 days{{end}}</span> | ||
| 28 | </div> | ||
| 29 | 29 | </div> | |
| 30 | 30 | ||
| 31 | <p class="muted status-inventory">{{.Accounts}} account(s) · {{.Repos}} repository(s) · {{.Queued}} queued · {{.Running}} running · {{.Runners}} runner(s)</p> | ||
| 32 | |||
| 33 | <h2>Accounts</h2> | ||
| 34 | <div class="status-grid"> | ||
| 35 | <div class="card"> | ||
| 36 | <span class="muted">Active people</span> | ||
| 37 | <strong>{{.AccountSummary.People}}</strong> | ||
| 38 | <span class="status-note">can sign in or push</span> | ||
| 39 | </div> | ||
| 40 | <div class="card"> | ||
| 41 | <span class="muted">Bots</span> | ||
| 42 | <strong>{{.AccountSummary.Bots}}</strong> | ||
| 43 | <span class="status-note">automation identities</span> | ||
| 44 | </div> | ||
| 45 | <div class="card"> | ||
| 46 | <span class="muted">Instance admins</span> | ||
| 47 | <strong>{{.AccountSummary.Admins}}</strong> | ||
| 48 | <span class="status-note">can act everywhere</span> | ||
| 49 | </div> | ||
| 50 | <div class="card"> | ||
| 51 | <span class="muted">Retired</span> | ||
| 52 | <strong>{{.AccountSummary.Retired}}</strong> | ||
| 53 | <span class="status-note">names kept, access removed</span> | ||
| 54 | </div> | ||
| 55 | </div> | ||
| 56 | <p class="muted"><a href="/admin?tab=accounts">Manage accounts</a></p> | ||
| 31 | <p class="muted status-inventory">{{.Queued}} queued · {{.Running}} running · {{.Runners}} runner(s)</p> | ||
| 57 | 32 | ||
| 58 | 33 | <h2>Recent admin activity</h2> | |
| 59 | 34 | {{if .RecentAudit.Err}}<div class="flash bad">The audit log could not be read: {{.RecentAudit.Err}}</div>{{end}} | |