Skip to content

docs: relaunch homepage with determinism-led narrative and precision design#97

Merged
swernerx merged 10 commits into
mainfrom
claude/keen-euler-d49cd7
Jul 8, 2026
Merged

docs: relaunch homepage with determinism-led narrative and precision design#97
swernerx merged 10 commits into
mainfrom
claude/keen-euler-d49cd7

Conversation

@swernerx

@swernerx swernerx commented Jul 7, 2026

Copy link
Copy Markdown
Member

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 own composeConfig/hash/codegen logic — so everything shown is true by construction and drifts visibly in PR diffs (docs/app/generated/config-stats.json is committed and regenerated on every build).

Visual system: Monochrome OKLCH ramp + one signal-green accent (hue 155). The --ardo-hue-brand override 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 @import is gone. No gradient text, no glow backgrounds, no section eyebrows/numbered markers, restrained state-driven motion with a full prefers-reduced-motion block.

Package change: one-word export of resolveRulesForFile in packages/eslint-config/src/build/codegen.ts so 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

  • Verified: pnpm run lint (self + docs, 0 errors), 202 package tests green, docs:build prerender succeeds with real rule counts in the HTML, configurator/dark mode/mobile checked in the browser.
  • Receipts state 202 tests (the 170 in older docs material was stale) and exact per-permutation rule counts (575 base / 698 react / 771 react+ai / 785 all) counted with the generator's own resolution logic.
  • The green hue recolors all doc pages via the Ardo token — worth a quick visual pass on a few guide/ADR pages.
  • docs/PRODUCT.md + docs/DESIGN.md added as durable design context; .claude/launch.json added for browser preview during development.

🤖 Generated with Claude Code

…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

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.42%. Comparing base (8f193a2) to head (1337928).

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@greptile-apps

greptile-apps Bot commented Jul 7, 2026

Copy link
Copy Markdown

Greptile Summary

This PR rebuilds the docs homepage around generated config data and a new visual system. The main changes are:

  • New homepage sections and interactive flag configurator.
  • Build-time generation of committed config statistics.
  • Self-hosted font imports and rewritten homepage CSS.
  • Product and design notes for the docs site.
  • A small export change in the config codegen helper.

Confidence Score: 4/5

The docs build path needs a dependency-boundary fix before merging.

  • The homepage configurator data maps cleanly across all flag combinations.
  • The new docs data script reaches into package source during the docs build.
  • A docs-only install can miss package source-time dependencies and fail before prerendering.

docs/scripts/generate-config-stats.ts and docs/package.json

Important Files Changed

Filename Overview
docs/scripts/generate-config-stats.ts Adds the docs data generator that imports package source and writes homepage config stats.
docs/app/lib/configStats.ts Adds typed accessors for generated config stats and mirrors the package bitmask order.
docs/app/components/home/FlagConfigurator.tsx Adds the interactive flag selector for the generated homepage data.
docs/app/components/home/configuratorData.ts Adds flag metadata, shared links, and generated config snippet text.
docs/app/routes/home.tsx Replaces the old homepage composition with the new narrative sections.
docs/app/root.tsx Adds self-hosted Fontsource CSS imports before homepage styling.
docs/package.json Runs generated data before docs dev/build and adds new docs-only development dependencies.
packages/eslint-config/src/build/codegen.ts Exports an existing rule-resolution helper without changing its implementation.

Reviews (1): Last reviewed commit: "docs: relaunch homepage with determinism..." | Re-trigger Greptile

Comment thread docs/scripts/generate-config-stats.ts
swernerx and others added 9 commits July 8, 2026 00:08
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>
@swernerx
swernerx merged commit 4543246 into main Jul 8, 2026
16 checks passed
@swernerx
swernerx deleted the claude/keen-euler-d49cd7 branch July 8, 2026 06:29
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