fix(catalog): tag discovery tutorial by interface (mcp, api); split out video section - #68
Merged
Merged
Conversation
The discover-the-catalog tutorial is language-agnostic — every discovery surface is curl/MCP/REST, callable from any language. Labelling it "ts" implied a TypeScript-only tutorial. Add an `agnostic` Language that renders as "mcp + api" (labelled by interface, not language) and use it for the entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NJVmLG9aiAzymDX4n56duk
…ection Follow-up review feedback on the discovery tutorial: - Render the language-agnostic tutorial as two separate chips, "mcp" and "api", instead of one "mcp + api" chip. A `languageTags()` helper is now the single source of truth for language→chip(s) across the tutorial page, the overview and the sidebar — which also fixes the sidebar showing the raw `agnostic` enum value (it rendered `it.language` directly, not the label). - Split the discover "See it run" (§4, the working demo) from the video, which now has its own §5 "Catalog video". The video no longer sits inside the demo panel. Build green; both self-checks pass; verified in the local dev server. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NJVmLG9aiAzymDX4n56duk
Member
|
👀 Reviewing |
r-marques
reviewed
Sep 4, 2026
r-marques
left a comment
Member
There was a problem hiding this comment.
🤖 Automated PR review — 🟡 Mergeable with nits
Retags the catalog-discovery tutorial from ts to a new language-agnostic variant rendered as two interface chips (mcp, api), and lifts the guided-tour video out of DiscoverPanel into its own §5 on the tutorial page. The retag is substantively right and the refactor is clean — languageTags() is a single source of truth with a total fallback, so every render site moves together. Nits only; nothing blocks.
What I reviewed
- Diff range
origin/main...HEAD— 6 files, +58/−23, head3735f6b0. - Panel: none — my own source-level verification of each claim.
- Checked the retag against the tutorial's own content, not the PR title:
tutorials.tstech.stackis["REST catalog API", "Catalog MCP", "ARD registry", "/.well-known/ard.json", …]and a learn bullet reads "Query it as an agent over REST, the Catalog MCP (search_services), and the ARD registry". Sotswas genuinely wrong — nothing in this tutorial is TypeScript-specific — andmcp + apidescribes it. - Verified the new §5 can't leave a numbering gap: §1–§4 in
app/t/[slug]/page.tsx(:73,:89,:126,:167) are all unconditional, and §5 is the only conditional one, so a discover tutorial reads 1-2-3-4-5 and every other tutorial reads 1-2-3-4. - Confirmed the video move is behaviour-preserving:
discoverVideois gated ont.run.kind === "discover", which is exactly the setDiscoverPanelused to receive, and the<track>list plus the no-playback fallback text carried over verbatim. - Checked for a language filter that would need the new variant added — there is none;
Languageappears outsidelib/types.tsonly as anAppShellprop type, so no filter UI goes stale. - Checked the sidebar CSS for a width cap that two words could overflow:
.sb-item .lang(globals.css:128) sets onlymargin-left:autoand a font — no fixed width, no truncation — so the longer value is cosmetic, not clipped.
Verdict: 🟡 Mergeable with nits — 0 blockers, 0 should-fix, 3 nits.
🧭 Inline comments (4)
Each is posted on its line in Files changed.
- 💡 NIT — A "mcp" language chip collides with the existing Protocol value of the same name —
showcase/lib/types.ts:152 - 💡 NIT — Sidebar joins the tags with a bare space, so two tags read as one token —
showcase/components/AppShell.tsx:111 - 💡 NIT — This label can never render — LANGUAGE_TAGS always shadows it for agnostic —
showcase/lib/types.ts:145 - ✅ NICE — Narrowing on run.kind keeps the video move behaviour-preserving —
showcase/app/t/[slug]/page.tsx:35
r-marques
approved these changes
Sep 4, 2026
r-marques
left a comment
Member
There was a problem hiding this comment.
🟡 Approved with comments — no blockers; 0 should-fix, 3 nit(s) left inline.
Inline review: #68 (review)
Review nits on #68: - AppShell: join interface tags with " · " (interpunct, as used elsewhere) so the sidebar reads "mcp · api" as two tags, not one token. - types.ts: LANGUAGE_LABEL.agnostic is unreachable for chips (languageTags reads LANGUAGE_TAGS instead); set it to "agnostic" with a comment so nobody edits a dead string expecting the chip text to change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NJVmLG9aiAzymDX4n56duk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why this matters
Two small presentation fixes to the "What's in the Catalog?" discovery tutorial (follow-up to #67), from review feedback:
ts, implying a TypeScript-only tutorial. Discovery is language-agnostic — every surface (REST catalog, MCP tools, ARD registry, crawler feed) is a plain HTTP/MCP call from any language, shown ascurl. It now carries two interface tags,mcpandapi, so a Python or Go developer isn't wrongly filtered out.What changed
lib/types.ts— add anagnosticLanguageplus alanguageTags()helper that maps a language to its chip(s):agnostic → ["mcp","api"], everything else → its single existing label. One source of truth for all render sites.app/t/[slug]/page.tsx— render one chip per tag; add §5 "Catalog video" (discover tutorials only) and drop the video from the demo panel.app/page.tsx(gallery) &components/AppShell.tsx(sidebar) — render tags via the helper. This also fixes the sidebar, which rendered the rawlanguagevalue (it would have shownagnostic).components/DiscoverPanel.tsx— no longer renders the video (moved to §5).Additive:
ts/py/autonomoustutorials render exactly as before.Test plan
node lib/demo-agent.mjs+node lib/catalog-discovery.mjs— self-checks pass.npm run build— green (type-checksLANGUAGE_LABELtotality andcontent/tutorials.ts); 17 static pages.mcpapi; sidebar showsmcp api(no rawagnostic); §4 is the live demo (8 result cards, facet bars fill) with no video; §5 "Catalog video" holds the player; other tutorials unchanged.Follow-up to #67.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NJVmLG9aiAzymDX4n56duk