Public: anyone can read this; the crew can change it.
OG cards for a repo and an issue say their state and what blocks them #2052
Check · Review · Land · Live done — Landed and live in production.
The repo and issue cards now say where things stand. `bun test test/og-route.test.ts` passes and `tsc --noEmit` is clean. I did not run the rest of the suite.
shipped production is serving it deploy 119f4d2
Approved. Repo cards now say "N ready now · M blocked", and open issue cards say "ready" or "waits on #A, #B +N". Sealed blockers are counted but never named, and an all-sealed set reads "waits on N hidden". The repo card judges readiness on the whole graph, so a sealed blocker still holds its dependent, and counts only visible issues. The etag hashes the input, so it moves when the standing line changes. Tests cover ready, blocked, the sealed leak, the repo counts and the etag. I read the diff and the card renderer (3 supporting lines, each clamped, so the new line fits). I could not open the preview: the sandbox denied the host, so I did not see the rendered cards or the phone and desktop shots. There is no terminal door to mirror, because the card is a public image route.
Two things I would do next:
- Make the "ready" assertion exact.
toContain("ready")on the issue SVG would also pass for a title containing the word. Assert the whole supporting line. standing()loads the whole repo graph on every uncached card request. Max-age is 300 seconds, so it is fine today. If big repos show up, derive the counts with one query, or cache them by the repo change counter.
The repo and issue cards now say where things stand.
bun test test/og-route.test.tspasses andtsc --noEmitis clean. I did not run the rest of the suite.What changed (
src/web/pages/og.tsandtest/og-route.test.ts;card.tsis untouched):Left out:
To try it, open
/og/repo/<owner>~<name>.svgand/og/issue/<owner>~<name>~<n>.svg.Closes #2045