Skip to content

feat(site): rough in microsite and design system - #3

Merged
oddurs merged 4 commits into
mainfrom
feat/site
Sep 29, 2026
Merged

oddurs merged 4 commits into
mainfrom
feat/site

Conversation

@oddurs

@oddurs oddurs commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Problem

People who care about fast infrastructure need one page that explains liam. The project needs a visual identity it can reuse. Refs cairn item 0035.

Approach

  • Site: Astro with static output in site/, shipping no JavaScript framework. The only script is a 612-byte inline one for the boot-trace replay. dist is 440 KB, of which 380 KB is self-hosted variable fonts, and the landing page is 17 KB gzipped.
  • Design system:
    • three token layers: raw values, then meanings for light and dark, then components;
    • Stack, Cluster and Grid layout primitives, which accept only spacing-scale steps;
    • eleven UI components;
    • a /design page showing all of it in both themes.
  • Copy: follows the roadmap, and decision 0051 for the zero-drop claim.
  • Seam:
    • scripts/task lint runs astro check and build runs astro build, installing from the lockfile first.
    • CI sets up pnpm and Node from site/package.json and site/.node-version.
    • Dependabot watches /site.
  • Astro was chosen over Next.js because a static build ships no runtime and is what liam itself will serve (item 0050).

Budget impact

None to liam. The site is a static build.

Look at this sceptically

  • The roadmap section is copied by hand from ROADMAP.md and will drift until it is generated from cairn list --json.
  • Spacing and letter-spacing are still literal values in some components. Only type values are tokens so far.
  • There is no automated check at a real 400 px phone width, because headless Chrome stops at 500 px.
  • scripts/task installs site dependencies on every lint and build. That's cheap when nothing changed, but it assumes pnpm is on PATH.

Checks

  • scripts/task check is green locally
  • The cairn item is updated, or there was none
  • No attribution to an assistant anywhere in the commits or this description

The landing page from the published design now builds as a static Astro
site under site/, so liam can eventually serve its own homepage. Pages ship
no framework runtime: the only client script is the ~600-byte boot-trace
replay, inlined, and CSS is inlined so first paint needs one request.

Styles are layered primitive -> semantic tokens, and components read only
the semantic layer. Themes apply to any subtree with data-theme, which lets
/design show every token and component in light and dark side by side
without script. Fonts are self-hosted through Fontsource.
The page promised HTTP/3, Wasm handlers, in-place binary upgrades and zero
loss across a liamd crash. None of that is in 1.0 as the cairn plan now
scopes it, and a crashed process loses its in-flight requests. The copy now
matches the zero-drop decision (0051) and the five milestones in ROADMAP.md,
with HTTP/3, Wasm and the response cache named as after 1.0.

Raw font sizes, weights and widths in components move into primitive
tokens, so the type scale lives in one file.

Refs: 0035, 0051
@oddurs
oddurs merged commit b75ffa5 into main Sep 29, 2026
2 checks passed
@oddurs
oddurs deleted the feat/site branch September 29, 2026 02:39
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