id: bd97c1d0-b90e-45df-b3e9-ab1182f8382a title: 'Meta/date/authors pass: state pills, label chips, monograms, relative dates, demote internal ids' state: closed labels:
- ui assignees: [] milestone: null created: 2026-10-27T15:27:21.526717764Z updated: 2026-10-27T16:11:29.189573145Z
Issue, PR, CI and commit pages render raw data-model fields as label: value lines. It reads as a debug dump, not a product.
Evidence
Issue page (issues/<uuid>.html), before any content:
state: closed
labels: area:docker
milestone: m5-docker-v1
created: 2026-09-10T03:52:27.769090401Z
updated: 2026-09-10T05:09:33.503159534Z
id: 06b5602f-4327-4377-99f6-3dca67b5bd75
≈180px of vertical space, six full-width lines. The UUID is internal plumbing; the timestamps are nanosecond ISO.
Same pattern:
- PR:
state: merged,branches: master ← m6/table2,ci: [pass],created/updated: <ISO>,id: <uuid> - CI:
runner: local,verdict: [pass],run: 2026-10-27T14-08-12.402568073Z,created: …, and a table whose headers are the literal field namesstep | exit | duration_ms - Commits index:
2026-10-27 14:08:48 +0000per row; issues/pulls index:created 2026-10-27T14:54:31.66872…truncated mid-digit - Comments:
2026-09-10T05:09:33.499801243Z unknown
Scope
- One meta component for issue/PR/CI/commit: a compact chip row or a right-hand sidebar (desktop) / collapsible
<details>(mobile) with: state pill (open/closed/merged, colored), label chips, milestone chip, author monogram + handle, "opened 3 days ago" (relative,title=exact UTC), "updated …". - State pills using
--state-open/--state-merged/--state-closedtokens (add in the foundations issue). CIpass/fail/runningbadges already exist — reuse that shape. - Author monogram: 1–2 letters in a square, deterministic hue from the handle hash (no assets, no JS). Applies to comments and the commits table.
- Relative dates everywhere with the exact value in
title=(pattern already exists:relative_ageinbuild.rs). Never show nanoseconds; never truncate an ISO string. - Internal ids: keep them, but demote to a monospace detail at the bottom of the sidebar (
#id 06b5…with a copy affordance-freetitle), not a headline field. CIduration_ms→duration+ "ms" unit or humanized (245 ms), and pick user-facing labels (step,exit,duration). - Don't lose data: every field currently shown must remain reachable (sidebar or
<details>).
Acceptance
-
issue/PR pages start with title + state pill + meta row; no
id:/created:full-width lines -
no raw ISO/nanosecond timestamps anywhere in HTML (relative +
titleexact) -
CI table headers are
step | exit | duration, values include units -
comments show a monogram +
handle · 3 days ago -
mobile: meta collapses to one line +
<details>