Skip to content

Align the site design with registrystack.org - #5

Merged
jeremi merged 3 commits into
mainfrom
design/align-with-registrystack-org
Sep 9, 2026
Merged

Align the site design with registrystack.org#5
jeremi merged 3 commits into
mainfrom
design/align-with-registrystack-org

Conversation

@jeremi

@jeremi jeremi commented Sep 9, 2026

Copy link
Copy Markdown
Member

What

Refreshes every human page on id.registrystack.org to the registrystack.org civic-print design system, so the resolver reads as part of the same family while staying a light, zero-dependency static publisher:

  • Masthead with the RS mark, "Registry Stack · Identifiers" brand linking to the main site, catalog navigation, and the stamp-red current-page tick.
  • Ledger-paper hero per page: mono eyebrow, balanced headline, lede, and the canonical URI shown as a stamped chip.
  • Ink-ruled section headings, ledger tables (paper mono header cells, status chips, proportioned catalog columns), the authority boundary as a stamp-red marginal note, and machine records printing as ink code bands.
  • Deep ink footer with brass accents, catalog links, and the machine index (index.json, llms.txt).
  • Home page link list replaced with six rule-topped catalog pillars carrying live identifier counts; the 404 page gets the same treatment.
  • HTML pages carry noindex: the resolver is reached by following identifiers from responses and docs, not by search, and human explanations stay with the product docs. Machine artifacts, catalogs, and llms.txt are unaffected; crawling stays allowed so crawlers can see the directive.

How

  • The shared stylesheet, family favicon, and self-hosted Public Sans and IBM Plex Mono OFL subsets live in src/assets/ (licenses kept beside the fonts). The catalog import never touches them; the README documents them as publisher-owned machinery.
  • The stylesheet is served under a content-hashed filename (/assets/site.<sha256>.css) with a single /assets/* cache rule that overlaps no existing _headers rule, so the duplicate-header guarantee still holds.
  • Record content, JSON outputs, routes, redirects, and machine header contracts are unchanged. public/ is regenerated from the same pinned catalog.

Verification

  • npm test: 17/17 pass, including the byte-exact public/ regeneration check and the _headers duplicate-header test.
  • npm run check:problem-routes: all 59 problem identifiers and all 10 artifact identifiers resolve to routes on the built site.
  • Rendered locally and reviewed home, catalog index, problem page, vocabulary page, schema artifact page, 404, and a 390px mobile view; fonts and hashed stylesheet load on every page.
  • noindex present exactly once in every generated HTML page; absent from index.json, llms.txt, and machine artifacts.

Refresh every human page to the registrystack.org civic-print design
system: the broadsheet masthead with the RS mark and catalog navigation,
a ledger-paper hero with the canonical URI as a stamped chip, ink-ruled
section headings, ledger tables with mono paper header cells and status
chips, the authority boundary as a stamp-red marginal note, machine
records printing as ink code bands, and the deep ink footer with brass
accents.

The shared stylesheet, family favicon, and self-hosted Public Sans and
IBM Plex Mono OFL subsets live in src/assets/, which the catalog import
never touches. The stylesheet is served under a content-hashed filename
with a single /assets/* cache rule that overlaps no existing header
rule. Record content, JSON outputs, routes, and machine headers are
unchanged; public/ is regenerated from the same pinned catalog.

Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-09T16:07:37.703401Z 868dd35 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a55cd3c0c4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/build.mjs
Comment on lines +359 to +361
${siteHeader(current)}
${body}
</main>
${siteFooter()}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore the main landmark around page content

On every generated HTML page, the content is now inserted directly between the header and footer without a <main> element, removing the main landmark that existed previously. Screen-reader and keyboard users therefore cannot navigate directly to the page's primary content; wrap ${body} in a single <main> landmark.

Useful? React with 👍 / 👎.

Comment thread scripts/build.mjs Outdated
Comment on lines +519 to +521
function catalogKeyForUri(uri) {
const segment = uriToPath(uri).split('/')[0];
return siteCatalogs.some((catalog) => catalog.key === segment) ? segment : undefined;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Map canonical route prefixes to their catalog keys

When viewing namespace or vocabulary detail pages, their canonical paths begin with ns or vocab, but the navigation keys are namespaces and vocabularies. This function consequently returns undefined, so those two catalogs never receive the intended aria-current="page" state on their detail pages, unlike problems, schemas, contexts, and profiles; explicitly map these route prefixes to their logical catalog keys.

Useful? React with 👍 / 👎.

The resolver is reached by following identifiers from responses and
documentation, not by search, and authoritative human explanations stay
with the product docs. Search presence for the registrystack.org family
concentrates on the website and docs instead of 77 near-identical
record pages. The meta robots tag covers HTML pages only; machine
artifacts, catalogs, and llms.txt are unaffected. Crawling stays
allowed so crawlers can see the directive.

Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
Address Codex review on the design PR: wrap page content in a single
<main> landmark again, and map the /ns/ and /vocab/ canonical prefixes
to their namespaces and vocabularies catalogs so every detail page
ticks its catalog in the masthead.

Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
@jeremi
jeremi merged commit c212933 into main Sep 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant