Structure
- Every section is a real route (/docs, /playground, /cheat, /spec,
/changelog, /bench) with its own title, description and prerendered HTML.
It was one page with #/hash routes, so search engines, link previews and
the browser title all saw the same thing. Old /#/docs links redirect.
- sitemap.xml, a skip link, aria-current on the active nav item.
- Removed the leftover template /api route that returned "Hello, world!".
- The bench page now has an h1.
Look
- New identity: cool lilac paper, deep violet ink, one magenta accent that
is a live token, warning-tape yellow reserved for errors. Bricolage
Grotesque for everything people read and Spline Sans Mono for code only,
both self-hosted at build time through next/font.
- The home page hero is the language itself: an editable DSSL box wired to
the engine that styles the page. Change the accent and the whole site
retints; mistype a property and the real error comes back.
- Quieter structure: heading-left, answer-…
v0.8.2: one cascade across all stylesheets, fluid on the longhands
Found while rebuilding the website on its own engine.
- "Later wins" did not hold between stylesheets. Every sheet numbers its
rules from 0 and the engine sorted by (layer, order) comparing those raw
numbers across sheets, so a later sheet lost to an earlier one whenever
the earlier one had more rules above the rule in question. Reproduced with
a 30 rule sheet followed by a 1 rule sheet: the earlier colour won.
rebuild() now renumbers every rule into one global sequence in load order
(assignGlobalOrder, idempotent via order0). Layers still outrank order.
- Consequence: a tokens { } block in a later sheet now overrides a token an
earlier sheet set inside @media or @signal.
- fluid works on padding-top/right/bottom/left/inline/block, margin-*,
letter-spacing and border-radius, not only the four-sided shorthands.
- scripts/test-v082.mjs (27 assertions) runs the engine's own sort on rules
from real compiled sheets; the first check in each group reproduces the
old bug.
…
Site: version badge and size claim now measured from the engine
- The nav badge and footer said v0.8.0 after the 0.8.1 release, because the
version was hardcoded in SiteRoot. The site now reads VERSION from
public/dssl/index.js when it is built, so it cannot drift again.
- The hero claimed "~20 kB engine". The engine is about 190 kB as plain
source and about 58 kB gzipped. The hero, the page description and
llms.txt now say the real gzipped size, measured at build time.
- Page title, hero copy, footer and home page text no longer use em dashes.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>