docs: relaunch homepage with determinism-led narrative and precision design#97
Merged
Conversation
…design
Complete rebuild of the docs homepage away from the gradient/SaaS template
look. New seven-block narrative leads with build-time determinism and the
ESLint+OxLint split ("It's just ESLint. Resolved ahead of time. Accelerated
by Rust."), with AI guardrails as second act and a linked receipts section
instead of a logo wall.
Centerpiece is an interactive flag configurator whose numbers come from a
new build-time script (docs/scripts/generate-config-stats.ts) that reuses
the package's own composeConfig/hash/codegen logic, so rule counts, hashes
and OxLint splits shown on the page are true by construction. The script
runs before docs dev/build and emits docs/app/generated/config-stats.json.
Visual system: monochrome OKLCH ramp with a single signal-green accent
(hue 155, applied to the Ardo shell via --ardo-hue-brand so homepage and
docs share one brand color), Schibsted Grotesk + Fragment Mono self-hosted
via Fontsource, hairline structure instead of gradients/glows, restrained
state-driven motion with a prefers-reduced-motion block.
Package change: export resolveRulesForFile from codegen.ts (one word) so
the stats script can resolve rules exactly like the generator does.
Also adds docs/PRODUCT.md and docs/DESIGN.md as design context, and a
.claude/launch.json for browser preview during development.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #97 +/- ##
=======================================
Coverage 89.42% 89.42%
=======================================
Files 39 39
Lines 889 889
Branches 182 182
=======================================
Hits 795 795
Misses 79 79
Partials 15 15 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Greptile SummaryThis PR rebuilds the docs homepage around generated config data and a new visual system. The main changes are:
Confidence Score: 4/5The docs build path needs a dependency-boundary fix before merging.
docs/scripts/generate-config-stats.ts and docs/package.json Important Files Changed
Reviews (1): Last reviewed commit: "docs: relaunch homepage with determinism..." | Re-trigger Greptile |
The stats generator imports the package's source files, so the docs workspace must declare the dependency for filtered installs to pull in the package and its source-time dependencies. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Instead of claiming "two lines of config after this", the hero now shows the actual eslint.config.ts below the install command, reusing the same snippet builder as the configurator. Resets Ardo's inline-code border and background inside the hero block. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Configurator grid uses minmax(0, 7fr) so long code lines overflow inside the output panel instead of resizing the columns on toggle. - AI section now says what the flag actually does: the rule count barely moves, the strictness of already-active rules does. - Hero install command and config snippet stack as separate left-aligned blocks instead of flowing inline next to each other. - CI matrix extended to Node 26; receipts updated to match. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Quiet "Built on" band between the AI section and the receipts: ESLint, OxLint, TypeScript, React, Node.js, Prettier, Vitest, Playwright, and Storybook as currentColor SVG marks, each linking to its project. Logo paths are restored from the previous BrandLogos component; the OxLint mark comes from the official oxc-assets mono icon. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Amplifies hierarchy instead of adding effects: hero display scale up to 5.4rem, section titles to 3.1rem, the configurator's live rule count becomes a large accent-green numeral, receipt values scale up, and the closing section is the page's one drenched moment — full brand-green band with scoped token overrides so every child (command, copy button, links) adapts automatically. Adds accent-colored text selection. Documents the new --hp-accent-deep token and the one-drench rule in DESIGN.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replaces ArdoCodeBlock (whose Shiki highlighting only runs via a build plugin, so dynamic configurator snippets rendered as plain text in a nested grey box) with an in-house CodeBlock + a small dependency-free tokenizer. Restrained scheme: green accent for keywords/literals, ink weight for everything else — no rainbow, no nested box. Inside the configurator output the block renders flat; hero and before/after keep a bordered titled panel. Also corrects a stale DESIGN.md note about removed section numbers. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The global prose `.hp-page code` rule (grey background, border, padding) was leaking onto the <code> inside <pre>, painting a box behind every line and indenting the first line by its left padding. Reset background, border, and padding on `.hp-code-pre code`. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Addresses three noise sources in the proof section: every value is now a real numeral that fits one line (the CI matrix becomes "10 CI legs" with the OS/Node/Bun detail in prose, no more wrapping phrase); links no longer underline at rest — the whole row is a hover-tinted target and only the value stays accent-green; row separators drop to the soft hairline. Internal and external receipts merged into one ordered narrative (generate → verify → decide). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Softens the closing pratfall from a harsh either/or into the Prettier
lineage: opinionated because AI writes most of the code now and style
debates on it aren't worth the time — with the rule-helper API presented
as a genuine strength ("strong defaults, still yours to override"), not a
grudging escape hatch. Removes Prettier from the "Built on" strip and its
now-unused logo: formatting is deliberately out of scope, not a feature
this config provides.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Complete rebuild of the docs homepage — new narrative, new copy, new visual system, and an interactive centerpiece.
Narrative (7 blocks): Hero leads with the ownable claim — "It's just ESLint. Resolved ahead of time. Accelerated by Rust." — followed by an interactive flag configurator, the determinism argument (before/after), the OxLint split, AI guardrails, a linked "receipts" section replacing the logo wall a v0.5 project can't have, and a closing that mirrors the hero. All eight previous sections were replaced.
Flag configurator: Four toggles (react/node/ai/oxlint) live-update the two-line config, the active rule count, the resolved hash filename, and (with oxlint on) the Rust/ESLint split bar. The numbers are generated at build time by
docs/scripts/generate-config-stats.ts, which reuses the package's owncomposeConfig/hash/codegen logic — so everything shown is true by construction and drifts visibly in PR diffs (docs/app/generated/config-stats.jsonis committed and regenerated on every build).Visual system: Monochrome OKLCH ramp + one signal-green accent (hue 155). The
--ardo-hue-brandoverride recolors the doc shell too, fixing the previous teal-homepage/red-shell mismatch. Fonts are now self-hosted via Fontsource (Schibsted Grotesk, Fragment Mono, JetBrains Mono) — the render-blocking Google Fonts@importis gone. No gradient text, no glow backgrounds, no section eyebrows/numbered markers, restrained state-driven motion with a fullprefers-reduced-motionblock.Package change: one-word export of
resolveRulesForFileinpackages/eslint-config/src/build/codegen.tsso the stats script resolves rules exactly like the generator.Why
The previous homepage leaned on generic SaaS-template patterns (gradient headline, teal/violet glows, identical card grids) and qualitative claims. The relaunch positions the project on what competitors can't copy — pre-generated deterministic configs plus the automated ESLint/OxLint split — and backs every number with a linked artifact (tests, snapshot, ADRs, CI matrix).
Notes for review
pnpm run lint(self + docs, 0 errors), 202 package tests green,docs:buildprerender succeeds with real rule counts in the HTML, configurator/dark mode/mobile checked in the browser.docs/PRODUCT.md+docs/DESIGN.mdadded as durable design context;.claude/launch.jsonadded for browser preview during development.🤖 Generated with Claude Code