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.
A listed codebase: its README, and its code (its namespaces, each with its size, description and where its code runs, and its definitions, each opening on the forge's pages in the registry's frame), as the registry last mirrored its main branch, from its root (codebaseRoot: past a lone top-level namespace, as tcm's `tcmts`); beside them, the server it's at, how to get it, and when it was mirrored.
Every codebase its author lists (`tcm announce`), newest first: how many, and on how many servers.
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, the codebases they list, their reviews and what they've starred; 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 or codebase: the forge's page for it, in the registry's frame, its mount said as whose it is (read again first, refreshMounts).
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 and Codebases 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, their stars, 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 review, advisory or yank in the feed: who said what about which release.
CodebaseRow({ c, who }: { c: RegistryCodebase; who: Trusted; }) => Element
A listed codebase in a list: its name, opening its page; how many definitions it has, as mirrored; who lists it, what it is, where it's served (opening its own web UI) and when it was listed.
FeedItem({ r, who }: { r: RegistryRelease; who: Trusted; }) => Element
A release in the feed: who released what, and a card with how it changed, where it runs and what it reaches.
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 tabs (Libraries is the tab of every page about libraries: one, its code, its changes, a search; Codebases, of a listed codebase's code).