Skip to content

feat(website): library pages in the homepage manner - #914

Merged
blove merged 10 commits into
mainfrom
blove/library-pages
Sep 1, 2026
Merged

feat(website): library pages in the homepage manner#914
blove merged 10 commits into
mainfrom
blove/library-pages

Conversation

@blove

@blove blove commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Summary

/langgraph, /chat, /ag-ui, /render get the homepage treatment, per docs/superpowers/specs/2026-08-31-library-pages-design.md:

  • Medium switchers replace the static BrowserFrame mocks — each page's own clip (including the never-before-used AG_UI_CLIP), Live scenarios via ?featured=, and Code panes lifted byte-verbatim from the old mocks into SECTION_MEDIA (auto-validated by the existing media spec). Panes omitted where media doesn't exist, never faked: /chat has no code pane, /ag-ui no live. /ag-ui's switcher lands on its second block — the first is the real BackendsGrid, not a mock (ratified deviation, recorded in the spec).
  • Dark closers: FinalCTA variant="dark" on all four; rule amendment recorded — dark closes product pages, commerce pages stay tinted (test-guarded).
  • Hero polish: mono package-identity kickers with rail hairlines (the old plain eyebrows deleted — no doubled package names), one marker sweep per subtitle, /ag-ui gains WhitePaperBlock parity.
  • buildPanes extracted from the homepage into a shared server module, byte-identical.
  • Also retires the site's last two hero litanies (/langgraph, /ag-ui subtitles).

Test Plan

  • nx test website — 52 files / 394 tests green (four new page specs pin kicker/marker/tablist/dark-closer per page)
  • nx build website --configuration=production — green (async pages + shared buildPanes)
  • Chrome: switcher tabs verified interactively on /langgraph (Code highlights, Live iframe mounts only on select — 0 iframes at load); all four pages DOM-verified; mobile 390px clean

🤖 Generated with Claude Code

blove and others added 9 commits August 31, 2026 19:12
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
/langgraph's subtitle was the site's final six-noun list; /ag-ui's
re-enumerated all eight runtimes its own H1 had just counted. The other
library-page copy was verified already in voice — this closes the
recorded five-page copy-pass follow-up as satisfied.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add libLanggraph/libChat/libAgUi/libRender to SECTION_MEDIA for Task 2 of
the library-pages plan. Code sources are lifted verbatim from each page's
current static mock content (app.config.ts blocks for langgraph/ag-ui, the
spec JSON for render); libChat has no code pane since its mock is a fake
chat-debug panel, not source. Task 3 wires the pages to these entries and
deletes the page-local copies.
Adopt the homepage's MediumSwitcher, dark FinalCTA, and hero kicker rail
across the four library pages (/langgraph, /chat, /ag-ui, /render):

- First FeatureBlock's static BrowserFrame mock is replaced with
  MediumSwitcher, panes built server-side via buildPanes(SECTION_MEDIA.lib*).
  For /ag-ui the static mock lives on the "primitives" FeatureBlock (its
  first block, BackendsGrid, is real content, not a mock) — the switcher
  goes there instead, matching the SECTION_MEDIA.libAgUi code content that
  was already lifted from that block.
- Mono package-identity kicker + rail hairline above each hero h1.
- One marker-highlight sweep per subtitle on the load-bearing phrase.
- FinalCTA variant="dark" on all four; /ag-ui also gains
  WhitePaperBlock paper="overview" for parity with the other three.
- Orphaned static-mock CSS deleted from pages.css (zero consumers after
  the page edits): render-page-visual-panel/-spec-block/-rendered-card/
  -ai-label/-card-title/-card-value; chat-page-visual-panel/
  -visual-pills-row/-tool-label/-result-block/-replay-footer;
  ag-ui-page-code-pre; langgraph-page-code-pre.

Page specs assert kicker text, marker span, switcher tablist, and dark
FinalCTA surface. Each spec mocks its second FeatureBlock's *CodeShowcase
(untouched, pre-existing) because it's an async Server Component and
react-dom/client cannot render an async component outside Next's RSC
pipeline ("Only Server Components can be async at the moment").

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review caught that each library hero (/langgraph, /chat, /ag-ui, /render)
showed the package name twice: the new .lib-hero-rail kicker plus the old
plain <Eyebrow className="*-page-eyebrow-spaced"> line that predates it.
Delete the old line on all four pages, keeping the rail kicker as the sole
package-identity marker.

Deleted the now-zero-consumer *-page-eyebrow-spaced CSS rules from
pages.css: render-page-eyebrow-spaced, chat-page-eyebrow-spaced,
ag-ui-page-eyebrow-spaced, langgraph-page-eyebrow-spaced.
pricing-page-eyebrow-spaced is a distinct rule still used by /pricing and
is untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- section-media.ts libRender: SolutionCode's language union is typescript |
  python | html — no 'json' — so the code block stays tagged typescript
  (noted inline); simplified its dead label to 'spec.json'.
- section-media.ts: the library-entries comment described Task 3's
  not-yet-done deletion of the page-local mocks; rewritten to present tense
  now that the pages consume these entries and the mocks are gone. Also
  documented the /ag-ui deviation (switcher lands on its second block,
  BackendsGrid stays on the first) directly on libAgUi.
- FinalCTA.spec.tsx: test name said "8 non-home pages" — now 4 after the
  library pages moved to the dark closer.
- library-pages-design.md §1: amended the FIRST FeatureBlock sentence with
  the ratified /ag-ui deviation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
threadplane Ready Ready Preview Sep 1, 2026 3:03am UTC

Request Review

@blove
blove enabled auto-merge (squash) September 1, 2026 02:58
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated approval: this PR received an intelligent (AI) code review. See the review comments on this PR.

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@blove
blove merged commit 127ab51 into main Sep 1, 2026
24 checks passed
@blove
blove deleted the blove/library-pages branch September 1, 2026 03:04
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