Public: anyone can read this; the crew can change it.
MCP explore, feed and forks draw ui:// cards, as held and board do #11502
Check · Review · Land · Live — No review yet.
`forks` now draws the `ui://forge/forks` card, and `explore` with `kind: tree` now draws a card of the tree instead of an empty "0 ranked" one. `explore` and `feed` already drew their cards for ranked and timeline answers, so those two needed no change. The tests I ran pass, `bun x tsc --noEmit` is clean, and no new tool was added.
4 files · +84 −3
waiting waiting for sentinel's review deploy cdafc8f
Check passed in 6 minCheck of cdafc8fchecked against main at da127e7fast tier: green in 6m41s · full gate runs on land
Website spec: 23 findings (report only)
- / <a href="/admin-ada0/admin/app/production/open"> has no accessible name — names
- / <a href="/bad-name-12dd/bad-name/app/production/open"> has no accessible name — names
- /front <a href="/admin-ada0/admin/app/production/open"> has no accessible name — names
- /front <a href="/bad-name-12dd/bad-name/app/production/open"> has no accessible name — names
- /board http://127.0.0.1:37377/board answered 303 — https://specification.website/
- /notes http://127.0.0.1:37377/notes answered 303 — https://specification.website/
- /feed http://127.0.0.1:37377/feed answered 303 — https://specification.website/
- /review http://127.0.0.1:37377/review answered 303 — https://specification.website/
- /releases http://127.0.0.1:37377/releases answered 303 — https://specification.website/
- /repos http://127.0.0.1:37377/repos answered 303 — https://specification.website/
- /map http://127.0.0.1:37377/map answered 303 — https://specification.website/
- /system http://127.0.0.1:37377/system answered 303 — https://specification.website/
- /talk http://127.0.0.1:37377/talk answered 303 — https://specification.website/
- /flow http://127.0.0.1:37377/flow answered 303 — https://specification.website/
- /resilience http://127.0.0.1:37377/resilience answered 303 — https://specification.website/
- /boards?help http://127.0.0.1:37377/boards?help answered 303 — https://specification.website/
- /settings/crew http://127.0.0.1:37377/settings/crew answered 303 — https://specification.website/
- /settings/crew?help http://127.0.0.1:37377/settings/crew?help answered 303 — https://specification.website/
- /preview-admin/sample expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/next expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/bets expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/waves expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/milestones expected exactly one <h1>, found 2 — headings
Look
9 pages beside main · 0 new to this pull
/apps
In the dark
at cdafc8f ·
/explore
In the dark
at cdafc8f ·
/feed
In the dark
at cdafc8f ·
/front
In the dark
at cdafc8f ·
/map
In the dark
at cdafc8f ·
/notes
In the dark
at cdafc8f ·
/releases
In the dark
at cdafc8f ·
/repos
In the dark
at cdafc8f ·
/review
In the dark
at cdafc8f ·
forks now draws the ui://forge/forks card, and explore with kind: tree now draws a card of the tree instead of an empty "0 ranked" one. explore and feed already drew their cards for ranked and timeline answers, so those two needed no change. The tests I ran pass, bun x tsc --noEmit is clean, and no new tool was added.
What changed
src/web/studio/cards.ts:forksis added toCARD_OF_TOOL, so itstools/listentry points atui://forge/forks.cardForhas one new branch covering three answers:
- forks page: one row per fork saying N ahead · M behind, or standing unknown when git cannot say.
- forks with kind: chain: one row per repo, as role and how it follows.
- explore with kind: tree: upstream rows first, then the repo itself, then its forks, with the same follow words and standing as the tree page. It keeps the explore card kind, so it matches the tool's resource.
- Rows link to the repository and go through the existing text-only card shell, so every field is escaped and only http(s) origins link.
- Rows stop at 30. After that a "More" row counts the rest, and another says more forks exist when a cursor or
truncatedis set. - Docs and tool text: the card table in
docs/MCP.mdand theforkstool doc now name the card. test/mcp-cards-explore.test.ts: covers a forks page, a chain and the tree, each with rows and with none, plus escaping and the ranked explore card.
What I checked
- Run: the new test,
test/mcp-size.test.ts,test/mcp-card-table.test.ts,test/mcp-cards.test.ts,test/mcp-cards-coverage.test.tsandtest/mcp.test.ts. All 68 pass. - MCP size: the ceilings are unchanged.
bun scripts/mcp-table.tsran, anddocs/MCP.mdchanged only where I edited it. - Gate: I ran
bun scripts/gate.ts, but its output was cut off in my run, so I can't tell you it passed. The forge's check will report it.
What I chose not to do
- No new tool, and no
ui://resource beyond the existingforksandexploreones. - I left
feedalone because its ranked andbeforeanswers already render through the existing card.
I made an empty "Try:" commit because the pre-push hook refused the push without one.
To try it: call forks { repo } or explore { kind: "tree", app } from a harness that renders MCP Apps.
This push fixes the one failing check: the header-width rule. A comment line at src/web/studio/cards.ts:271 was over 160 columns, so I wrapped it onto two lines. No behaviour changed.
test/header-width.test.ts and bun x tsc --noEmit both pass locally. I didn't run the rest of the suite or bun scripts/gate.ts, since the forge runs the full check on push.
The pull's other content is unchanged: the MCP forks card and the explore card with kind: tree show rows that link to the page each one mirrors.
To try it, open /settings/tokens, make a token, then call forks with a repo.
🤖 Generated with Claude Code
forksnow draws theui://forge/forkscard, andexplorewithkind: treenow draws a card of the tree instead of an empty "0 ranked" one.exploreandfeedalready drew their cards for ranked and timeline answers, so those two needed no change. The tests I ran pass,bun x tsc --noEmitis clean, and no new tool was added.What changed
src/web/studio/cards.ts:forksis added toCARD_OF_TOOL, so itstools/listentry points atui://forge/forks.cardForhas one new branch covering three answers:-
forkspage: one row per fork sayingN ahead · M behind, orstanding unknownwhen git cannot say. -forkswithkind: chain: one row per repo, as role and how it follows. -explorewithkind: tree: upstream rows first, then the repo itself, then its forks, with the same follow words and standing as the tree page. It keeps the explore card kind, so it matches the tool's resource.truncatedis set.docs/MCP.mdand theforkstool doc now name the card.test/mcp-cards-explore.test.ts: covers a forks page, a chain and the tree, each with rows and with none, plus escaping and the ranked explore card.What I checked
test/mcp-size.test.ts,test/mcp-card-table.test.ts,test/mcp-cards.test.ts,test/mcp-cards-coverage.test.tsandtest/mcp.test.ts. All 68 pass.bun scripts/mcp-table.tsran, anddocs/MCP.mdchanged only where I edited it.bun scripts/gate.ts, but its output was cut off in my run, so I can't tell you it passed. The forge's check will report it.What I chose not to do
ui://resource beyond the existingforksandexploreones.feedalone because its ranked andbeforeanswers already render through the existing card.I made an empty "Try:" commit because the pre-push hook refused the push without one.
To try it: call
forks { repo }orexplore { kind: "tree", app }from a harness that renders MCP Apps.Closes #11491