Redesign subpages to match the landing page - #9
Merged
Conversation
Every inner page was the same narrow prose column while the homepage was a
fully designed landing. This gives the subpages the landing page's visual
language without changing what they claim.
- Add src/components/marketing/: PageHero (breadcrumbs, atmosphere, optional
product visual), Section (default/muted/inverted bands), Card/Grid, Steps,
MarkList, CodePanel, CheckRunPanel, Callout, Prose, CtaLink/Actions and
NextSteps.
- Rewrite all 14 subpages plus the 404 with them: facts that were buried in
paragraphs are now field tables (/pipeline), a comparison table
(/compare/github-actions), grouped glossary cards (/concepts), topic cards
(/security) and numbered flows (/product, /integrations/github-app). Each
page ends with cross-links instead of a bare CTA row.
- Replace the two ASCII diagrams on /product and /self-hosted with wire
diagrams that wrap on a phone.
- Fix an unlayered `a { color: inherit }` reset that beat every Tailwind
colour and underline utility on anchors, so inline links were rendering as
plain body text everywhere.
- Drop the stale Header/CheckRunPanel/RunFlow components: nothing imported
them and they referenced CSS variables the theme no longer defines.
Copy is restructured, not extended — claims still track the docs and the code
repo. `pnpm run build && pnpm run check-links` clean.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The redesign fixed the layout but left every inner page thinner than the landing page — 354-650 words against its 893. This adds the substance, sourced from the docs and code repos rather than invented. Each page now carries the material a reader needs before installing: - /why: Zuul as named prior art (what is borrowed, what is rejected), the five things this is genuinely better at, the eight it is genuinely worse at, and the five questions people ask first. 486 -> 1152 words. - /product: one-live-run-per-commit semantics, the four ways into the process, binding -> App -> settings precedence, and an honest section on concurrency, restarts, backups and monorepos. 650 -> 1225. - /pipeline: the five keys, Node defaults by lockfile, binding overrides, what a pipeline cannot express, and what stops a run. 394 -> 875. - /self-hosted: requirements, what has to survive a redeploy, and day-two reality — restarts, forward-only migrations, sizing, pruning. 374 -> 886. - /security: the bindings allow-list as the trust boundary, key rotation, and a table of what is reachable without a session. 354 -> 809. - /compare: the pick-by-what-you-want table plus Woodpecker, Drone, actions/runner and Jenkins with real choose-this-instead guidance. 397 -> 823. - The hub and leaf pages get the same treatment; all are now 700-1225 words against the homepage's 893. Add a Faq component for the positioning questions, and fix Steps so a step title renders markup instead of escaping it. Every claim traces to openpreflight/docs or the code repo README, and how-to still links out rather than being duplicated here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two problems: no page listed the whole site, and the same facts were being restated on up to eight pages. Navigation - `siteSections` in src/lib/site.ts is now the single source of truth. The header nav, the footer, and the 404 all render it, so a route cannot exist without being reachable from every page. - The header gains grouped menus (Product, Why, Trust) with a description per link, and the mobile sheet lists every group rather than four flat links. - The footer carries all 14 routes plus the reference links, in four columns. It is static HTML, which is what makes it the fallback for the JS-driven menus. De-duplication - Removed the "Keep reading" block from all 15 pages, and deleted the component. It was the same section fifteen times, doing a job the nav and footer now do properly. - Gave every repeated fact one owner and left a link everywhere else: concurrency and sizing, restarts, backups -> /self-hosted; the bindings allow-list, clone credentials, fork PRs, shareable logs, container hardening -> /security; the ceiling and the not-in-v1 list -> /why; dedup semantics -> /product; the neighbours -> /compare; branch-protection naming -> /use-cases/private-repos; the offline test suite -> /open-source. - An audit of 16 previously-repeated claims now shows none on more than two pages, and the pairs are the homepage summary plus its owner. Verified over CDP against the built output: the menus open on click and on Enter, Escape closes them, the mobile sheet carries all 14 routes, and every page's footer does too. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The branch is rebased onto main so the tagged release is stated, and the dogfooding FAQs match the live demo instance. Co-authored-by: Cursor <cursoragent@cursor.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.
Summary
src/lib/site.tsdrives nav, footer, and 404.Test plan
pnpm run buildandpnpm run check-linksMade with Cursor