Each card on the index and owner pages led with a colored square holding the repo's first letter. It said nothing the name beside it doesn't, so the card now starts with the name; the hue filter that colored the mark goes with it.
- commit
- 3282a9991a0ca1d320ca293d12609e046663306d
- parent
- cb2b99dc4c067a67617270fd95580fea80edc7f7
- author
- cat <admin@dev.site>
- ci
- ✓ passed in 78s, signed by cat
- kind
- chore risk score 1.3 of 3, Jev's estimate
- review
- #10 Put a commit's type in a column, and its risk as a small score
ci attestation
forge-attestation 1 type ci commit 3282a9991a0ca1d320ca293d12609e046663306d tree de9278734f2d40d0e884cfabfc7aa9ef5b7414be script .forge/ci 38df37c0d5a6382f60569079a0dd821094e37e4a result pass exit 0 started 2026-10-19T00:31:20Z duration 78s runner (not shown here; refs/notes/ci has it) system Darwin 25.5.0 arm64 env host log sha256:c2194e9fdffd5457b52195b3b26be85892b1dc1ea71825f1a9c419f52e8ed985 244 lines |remote: review #4: /dami/greet/reviews/4/ |pushed wip/i18n |2cad298 running .forge/ci: greet.sh: say what it is | | sh: /bin/sh | | ok greet |2cad298 pass in 0s, signed |pushed main |remote: review #4: /dami/greet/reviews/4/ |pushed wip/i18n |24789f9 running .forge/ci: wave at the world | | sh: /bin/sh | | FAIL greet : got 'hello, world o/', want 'hello, world' |24789f9 fail in 0s, signed |forge: 1 commit(s) did not pass |remote: review #6: /dami/greet/reviews/6/ |pushed ana/wave |495fa4f running .forge/ci: update the test for the wave | | sh: /bin/sh | | ok greet |495fa4f pass in 0s, signed |remote: review #6: /dami/greet/reviews/6/ |pushed ana/wave |warning: You appear to have cloned an empty repository. |site home: deployed 6b84642 -> /sites/ana/dotfiles/home/ |created ana/notes |remote: review #1: /ana/notes/reviews/1/ |pushed ana/todo |landing #1 A todo list: ana/todo -> main |bc6d94c running .forge/ci: web, server and Python versions of greet | | sh: /bin/sh | | ok greet |bc6d94c pass in 0s, signed |pushed main |efa6e74 running .forge/ci: messages: notes for the later regions | | sh: /bin/sh | | ok greet |efa6e74 pass in 0s, signed |remote: review #7: /dami/greet/reviews/7/ |pushed dami/regions |created dami/forge |warning: You appear to have cloned an empty repository. |site guide: deployed 92f4eb0 -> /sites/dami/forge/guide/ |(node:36679) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built ana/dotfiles in 1s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |(node:36806) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built ana/notes in 0s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |(node:36943) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built dami/forge in 1s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |(node:37073) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built dami/greet in 1s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |(node:37743) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built - in 1s -> /Users/dami/Library/Caches/forge/ci/35f7a65d0235/demo/root/.forge/www |226 of 226 pages render the same without 11ty |guide: 4 files, links ok |ok
Signature: good, cat
| M | lib/ | 2 | -- |
| M | site/ | 3 | +-- |
@@ -541,8 +541,6 @@ export const filters = {
541541 .sort((a, b) => Number(a === 'other') - Number(b === 'other') || by.get(b)!.length - by.get(a)!.length || a.localeCompare(b))542542 .map((k) => ({ id: k.replace(/[^a-z0-9]+/g, '-'), title: k === 'other' && by.size === 1 ? 'repositories' : k, repos: by.get(k)! }));543543 },544- // A repo card's color: a hue from its name, the same on every build.545- hue: (name: string): number => [...name].reduce((h, c) => (h * 31 + c.charCodeAt(0)) % 360, 7),546544 // An attestation as a page shows it: the runner's value left out, since a547545 // machine name can say who someone is; the note in refs/notes/ci has the548546 // statement as signed, for checking the signature.@@ -158,7 +158,6 @@ a.rev { font-size: 0.85em; color: var(--muted); border: 1px solid var(--border);
158158 .card:hover, .card:focus-within, .card.sel { border-color: var(--faint); background: var(--hover); }159159 .card.sel { box-shadow: inset 2px 0 0 var(--accent); }160160 .card-top { display: flex; align-items: center; gap: 10px; min-width: 0; }161-.card-mark { flex: none; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 6px; background: hsl(var(--h) 55% 68%); color: #0d1117; font-weight: 700; font-size: 0.8rem; }162161 .card-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 650; }163162 .card-name::after { content: ''; position: absolute; inset: 0; border-radius: var(--radius); }164163 .card-name .desc { font-weight: normal; }@@ -181,7 +180,7 @@ a.rev { font-size: 0.85em; color: var(--muted); border: 1px solid var(--border);
181180 <ul class="cards nav-cards">182181 {% for s in sh.repos %}183182 <li class="card" data-name="{{ s.name | lower }}" data-date="{{ s.lastCommit }}"{% if s.counts.sites %} data-site{% endif %}>184-<div class="card-top"><span class="card-mark" style="--h: {{ s.name | hue }}" aria-hidden="true">{{ s.name[0] | upper }}</span><a class="card-name" href="{{ s.urls.home.href }}">{% if owners %}<span class="desc">{{ s.owner }} / </span>{% endif %}{{ s.name }}</a></div>183+<div class="card-top"><a class="card-name" href="{{ s.urls.home.href }}">{% if owners %}<span class="desc">{{ s.owner }} / </span>{% endif %}{{ s.name }}</a></div>185184 {% if s.description %}<p class="card-desc">{{ s.description }}</p>{% endif %}186185 <div class="card-foot">{{ sitesLink(s) }}{% if s.counts.reviews %}<a href="{{ s.urls.reviews.href }}">{{ s.counts.reviews | plural('review') }}</a>{% endif %}<span class="grow"></span>{{ s.lastCommit | date }}</div>187186 </li>