What changed between two versions of a library, as `tcm lib upgrade` would say it: what broke and what was added, each with its signature before and after, then what changed with the same API; how many of what the registry has use each version; and what upgrading does.
HomePage({ show }: { show: string; }) => Promise<Element>
Home: what's happened lately, newest first: releases, reviews and advisories (and yanks), or one of them (`show`); for a visitor signed in, what people they follow did (`following`), or what's happened to libraries they use (`mine`: in releases they've announced, or in the codebase they gave). Beside it, what to show, and, signed in, the libraries they use.
A library: its newest version, or the one asked for, with its README, code, versions, dependents and what tcm checked; beside them, how to add it, where it runs, what it reaches, where it's fetched from and the libraries it holds.
Someone: their Bluesky name, picture and bio; what they've done (releases, reviews, advisories), their libraries and their reviews; beside them, how many libraries and releases, where they serve code from, and where it runs.
RegistryCodePage({ name }: { name: string; }) => Promise<Element>
A definition or namespace of a mirrored library: the forge's page for it, in the registry's frame.
Search: by name, words in docs, or a type (`:(s: Shape) => number`), across every library's newest version, grouped by library; only what reaches nothing outside itself, what's in a reviewed library, or what runs in the browser, if asked; and, by type, the close matches after.
The registry's tabs, Libraries with how many there are.
Browser
CodebaseForm({ url }: { url: string; }) => Element
The codebase whose libraries are "Libraries I use", as the visitor gave it: a `tcm serve` URL (React Aria's Form and TextField, which says what's wrong with one the registry can't read), or none.
A choice of pages, as a select (React Aria's, as the forge's history filter has): a library's versions, or a list's orders. Choosing one goes to it; the page's own is chosen. `shown`, its label is shown before it.
Who's signed in, in the registry's header. Nobody: "Sign in", which opens a dialog asking for their handle (React Aria's Form and TextField, as the forge's sign-in is) and sends the browser to sign in. Someone: their picture, which opens a menu (as the forge's is): who it is, their page, what's theirs in the feed, and signing out. Coming back from signing in, it finishes it.
The header's search (React Aria's Autocomplete, as the forge's finder is): names, docs or :types across the libraries, with results as you type, by library: each library, then what in it matches. ⌘K or / goes to it, arrows choose, Enter opens the one chosen (or, with none chosen, the search page). On the search page it holds what was searched for.
RegistrySearchForm({ q, asked, mode, }: { q: string; asked: SearchAsked; mode: "docs" | "name" | "type"; }) => Element
The search page's own search (React Aria's SearchField) and what it searches by (a ToggleButtonGroup, as the forge's diff layout is): names, words in docs, or a type. Changing either searches again.
SearchFilters({ q, asked }: { q: string; asked: SearchAsked; }) => Element
The search's filters, for what tcm works out from the code (what it reaches, where it runs) and what people say (reviews), as checkboxes (React Aria's, as the forge's are), and the legend for where code runs. Changing one searches again.
A library's stars, and the visitor's, as a toggle (React Aria's ToggleButton): starring writes a `codes.tcm.star` record to their own repository (one per library, across its versions), and taking it back deletes it; the registry checks it there at once. Signed out, or if it doesn't work, a toast says so.
A library in a list: its name and version, how many use it, what it is, where it runs and what it reaches, its licence, what people say of it and its stars.
The registry's own styles, beside the forge's (whose colours, boxes, badges, rows and place bars it uses): as the registry's mockup draws them, light and dark.
The registry's frame: its mark and name, a narrow search, who's signed in, and its two tabs (Libraries is the tab of every page about libraries: one, its code, its changes, a search).