Commit e359304464
e3593044648d28789a8096625bc7832fa01cd11f
parent: 9e644e467c
Verified · cmc ci/build: success ci/test: failure
cmc <hello@cleberg.net> · 2026-09-20 04:24 UTC
web: name the action columns and size the skip link
An action column's header was empty on the SSH key, PGP key and org
member tables, so a screen reader read the column by its cells. The
skip link was 40px tall, under the target size the rail now keeps.
internal/web/static/style.css
+3
| @@ -264,6 +264,9 @@ a.skip { |
| 264 | 264 | position: absolute; |
| 265 | 265 | left: var(--sp-3); top: -3rem; |
| 266 | 266 | z-index: 50; |
| 267 | display: flex; |
| 268 | align-items: center; |
| 269 | min-height: var(--rail-hit); |
| 267 | 270 | background: var(--fill); |
| 268 | 271 | color: var(--fill-fg); |
| 269 | 272 | padding: var(--sp-2) var(--sp-4); |
internal/web/templates/account.html
+2 −2
| @@ -51,7 +51,7 @@ Write it with a push, or edit it here.</p> |
| 51 | 51 | commands and push; a <code>git</code> key can only move git data, which is what |
| 52 | 52 | a CI checkout wants.</p> |
| 53 | 53 | {{if .Keys}}<div class="tablewrap"><table class="keys nowrap"> |
| 54 | | <tr class="cols"><th scope="col">label</th><th scope="col">fingerprint</th><th scope="col">type</th><th scope="col">scope</th><th scope="col"></th></tr> |
| 54 | <tr class="cols"><th scope="col">label</th><th scope="col">fingerprint</th><th scope="col">type</th><th scope="col">scope</th><th scope="col"><span class="vh">actions</span></th></tr> |
| 55 | 55 | {{range .Keys}}<tr> |
| 56 | 56 | <td>{{.Label}}</td> |
| 57 | 57 | <td class="mono">{{.Fingerprint}}</td> |
| @@ -111,7 +111,7 @@ account, and where notifications go.</p> |
| 111 | 111 | <p class="meta">Only needed if you sign commits with GPG. SSH signing |
| 112 | 112 | (<code>gpg.format = ssh</code>) uses the keys above.</p> |
| 113 | 113 | {{if .PGP}}<div class="tablewrap"><table class="keys"> |
| 114 | | <tr class="cols"><th scope="col">fingerprint</th><th scope="col">identities</th><th scope="col"></th></tr> |
| 114 | <tr class="cols"><th scope="col">fingerprint</th><th scope="col">identities</th><th scope="col"><span class="vh">actions</span></th></tr> |
| 115 | 115 | {{range .PGP}}<tr> |
| 116 | 116 | <td class="mono">{{.Fingerprint}}</td> |
| 117 | 117 | <td>{{range .UIDs}}{{.}}<br>{{end}}{{if .Revoked}}<span class="badge badge-bad_signature">revoked</span>{{else if .Expired}}<span class="badge badge-signed_key_expired">expired</span>{{end}}</td> |
internal/web/templates/owner.html
+1 −1
| @@ -30,7 +30,7 @@ |
| 30 | 30 | <h2>people <span class="count">{{len .Members}}</span></h2> |
| 31 | 31 | {{if .Notice}}<p class="error" role="alert">{{.Notice}}</p>{{end}} |
| 32 | 32 | <div class="tablewrap"><table class="keys"> |
| 33 | | <tr class="cols"><th scope="col">member</th><th scope="col">role</th><th scope="col"></th></tr> |
| 33 | <tr class="cols"><th scope="col">member</th><th scope="col">role</th><th scope="col"><span class="vh">actions</span></th></tr> |
| 34 | 34 | {{range .Members}}<tr> |
| 35 | 35 | <td><a href="/{{.Name}}">{{.Name}}</a></td> |
| 36 | 36 | <td>{{.Role}}</td> |