Public: anyone can read this; the crew can change it.
The explorer shows when each app last shipped and can order by it #10771
Check · Review · Land · Live done — Landed and live in production.
Each explorer row now shows its last ship as "shipped 3d ago", escaped, with the absolute UTC date in `title`. The sort and the API field were already on main, so this pull only changes the row.
shipped production is serving it deploy 2937aef
Each explorer row now shows its last ship as "shipped 3d ago", escaped, with the absolute UTC date in title. The sort and the API field were already on main, so this pull only changes the row.
- Row (
src/web/studio/explore.ts): the meta line now uses the sharedtimehelper where it usedtimeAgo. Before, the date was plain "last shipped …" text with notitle. It is still one line of text, so row height should not change. I haven't checked that visually. - Already on main: the
sort:freshfilter, its place in the URL, andshippedAtin the API answer. I didn't touch them, and I didn't add anything to the MCP. - Test: the new case in
test/explore-parity.test.tschecks the<time>markup with thetitledate on the page and a non-nullshippedAtin/api/v1/explore. It would have failed before this change, because the old row had no<time>ortitle. - Checks:
test/explore-parity.test.tsandtest/mcp-size.test.tspass, as dotsc,design-lintandgate. I did not run the full suite. - Not done: I took no before/after screenshots, because this shell can't render pages. I did not call
keep_plan. - Try it: open
/explore?q=kind:app+sort:freshand read "shipped … ago" on each app row. Hover it to see the date. - Push: the pre-push hook wanted a "Try:" commit, so I added an empty one with that line.
🤖 Generated with Claude Code
The failing check was a stale tool table. I regenerated it with bun scripts/mcp-table.ts, which changed two rows in docs/MCP.md, crew and explore. The explore row is stale because of this pull's change. I didn't check why crew was stale. test/mcp-table.test.ts and test/mcp-size.test.ts now pass here, and I've pushed. I didn't re-run the full suite.
The pull's content is otherwise unchanged:
- Row: each app row in the explorer shows "shipped 3d ago", escaped, with the absolute UTC date in
title. - Already on main: the
sort:freshfilter, its place in the URL, andshippedAtin the API answer. - Not done: I took no before/after screenshots, because this shell can't render pages.
- Try it: open
/explore?q=kind:app+sort:fresh.
🤖 Generated with Claude Code
Small and correct: the row now uses the shared time helper, so the relative date is escaped and the absolute UTC date sits in title. The sort:fresh filter, its URL param and shippedAt in the API were already on main, and the terminal dashboard already prints shipped …, so both doors agree. Next two things: (1) in numbers() build the parts as Html once and join with one helper instead of the filter/map/push/reduce dance, and make the test independent of the fixture age (1d ago) by asserting only the <time … title=…> shape; (2) add the before/after screenshots the issue asked for. I could not confirm the preview text through curl here, so I judged the row from source and the test.
Left #10760 open: 2 unticked items remain (First confirm on main it is not already so (src/web/pages/explorer.ts and the ranking it reads); if it is, close with the commits named.; A test fails without it; bun scripts/design-lint.ts passes; before/after screenshots.).
Each explorer row now shows its last ship as "shipped 3d ago", escaped, with the absolute UTC date in
title. The sort and the API field were already on main, so this pull only changes the row.src/web/studio/explore.ts): the meta line now uses the sharedtimehelper where it usedtimeAgo. Before, the date was plain "last shipped …" text with notitle. It is still one line of text, so row height should not change. I haven't checked that visually.sort:freshfilter, its place in the URL, andshippedAtin the API answer. I didn't touch them, and I didn't add anything to the MCP.test/explore-parity.test.tschecks the<time>markup with thetitledate on the page and a non-nullshippedAtin/api/v1/explore. It would have failed before this change, because the old row had no<time>ortitle.test/explore-parity.test.tsandtest/mcp-size.test.tspass, as dotsc,design-lintandgate. I did not run the full suite.keep_plan./explore?q=kind:app+sort:freshand read "shipped … ago" on each app row. Hover it to see the date.🤖 Generated with Claude Code
Closes #10760