Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Rebuilds the /foundation page from scratch using Linear Method's essay format as heavy inspiration. Copy is sourced verbatim from the doc brief (Steph Alinsug, April 2026): hero + four chapters (About The Network, About The Foundation, What We Do, The Team). Hero: - Serif display headline (Instrument Serif, added to lib/fonts.ts) paired with Favorit Pro for body - "Coordinating the ecosystem" centered in a full-viewport hero - Venn-diagram graphic below: two dashed overlapping circles with stroked gradient "shooting star" comets revolving around each, diagonal stripes in the lens intersection with a small inset - Concentric arc geometry (radius 49.9 in 100-unit viewBox) so the comets trace exactly along the dashed borders Chapters: - Each chapter has a numbered breadcrumb (01–04), serif chapter title, and (for 01–03) a thematic animated SVG banner sandwiched between the heading and body prose - 01 The Network: distributed dot-grid with connection pulses - 02 The Foundation: same grid with a ripple radiating from a centered anchor (visual echo to reinforce Foundation as in-service-of-network) - 03 What We Do: three streams converging on a shared focal point, viewBox widened to 800×200 so streams span the full text-column width while keeping circles perfectly round (preserveAspectRatio="xMinYMid meet") - 04 The Team: no graphic — the roster of names carries the section Nav + Footer: - Added Foundation to Resources dropdown in NAV_ITEMS (lib/constants.ts) - Added Foundation to the Resources column in the global Footer Internal link: - "Read the original announcement" now points to /blog/introducing- the-livepeer-foundation (internal) rather than external blog URL Other: - Resolved stray merge-conflict markers in pnpm-lock.yaml Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Next's lint rule disallows bare `<a>` elements for internal navigation. Swap the "Read the original announcement" anchor for `<Link>` from `next/link` to resolve the build error. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Updated the Foundation graphic's viewBox from 760×200 to 768×200 and gapX from 34 to 38.4 so the dot grid spans edge-to-edge, matching the width of the body text below it like the other section graphics. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
3f2f08b to
cd39d12
Compare
CI was failing with ERR_PNPM_OUTDATED_LOCKFILE after my earlier merge-conflict resolution left the lockfile slightly out of sync with package.json. Running pnpm install regenerates the missing entries; verified passing with pnpm install --frozen-lockfile. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
The center anchor in the Foundation graphic now follows the cursor, and nearby dots light up green based on proximity (linear falloff within an influence radius of 110 viewBox units). When the mouse leaves the graphic, the anchor glides back to center and the dots fade to their idle dim-white state. Internals: converts client-coords to SVG-local coords via svg.createSVGPoint() + getScreenCTM().inverse() so the interaction works correctly regardless of the graphic's rendered size. Anchor uses a translate() transform with a cubic-bezier transition for a calm follow, and dots transition fill + radius over 180ms so the highlight feels continuous rather than jittery. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
When the mouse is over the graphic, moving in any direction emits a cascade wave that travels from the cursor in the direction of motion at 900 viewBox units/sec, lighting dots in sequence all the way to the end of the grid. The wave has a perpendicular band of 95 units and each dot fades back to idle over 900ms after the wave passes. The center anchor still follows the cursor with a smooth translate. When the mouse is NOT over the graphic, the graphic returns to its prior idle state: a radial ripple sweeps outward from the center via per-dot CSS animation delay, and the anchor breathes in place at the origin. Implemented by swapping the dot's style between an inline computed fill (hovered) and a CSS keyframe animation (idle). A RAF loop ticks re-renders while a wave is active so intensities animate smoothly; it auto-stops once the wave has traversed the grid diagonal + fade duration. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
02 Foundation:
Reverts the mouse-interactive cascade and removes the center anchor
circle entirely. Returns to the original radial ripple from the
geometric center (per-dot CSS animation delay based on distance from
origin). No moving anchor.
01 The Network:
Improves visual richness:
- Lattice density bumped to 13×5 (from 11×5)
- Quiet background mesh of subtle short edges between scattered node
pairs (5% white, gives the lattice underlying structure)
- 8 multi-hop "packet" routes, each a chain of 3–5 nodes joined by a
single SVG path. A short bright green dash (length 14) animates
along each path with stroke-dashoffset, so a packet visibly hops
from node to node along its route.
- Faint base lines drawn under each route at 12% opacity so the
routing pattern is still visible when no packet is mid-flight.
- Highlighted node count expanded to 15, distributed across the grid.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Replaces the multi-hop packet routing concept with a layered neural net composition that better conveys the connection between nodes. - 4 layers of nodes (4 / 6 / 6 / 4 = 20 nodes) arranged as columns - Every node in each layer fully connects to every node in the next layer (24 + 36 + 24 = 84 connections) - All connections drawn as faint static white lines (7% opacity) so the wiring is always visible — the network's structure reads at rest, not just during animation - Each connection has its own continuous activation pulse: a short bright green dash traveling along the line over 4.2s, with delays staggered across all 84 connections so ~10–15 are mid-flight at any moment, mimicking activation propagation in a neural net - 7 nodes highlighted with a green halo to suggest "active" GPUs - Node radius bumped to 2 (3 for highlighted) so they read clearly against the dense connection mesh Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Rejected the neural-net direction because it was conceptually wrong:
neural nets are layered/directional/hierarchical, but Livepeer is a
flat distributed P2P mesh of equal peers with no center.
Rebuilt from first principles:
• Nodes laid out via a perturbed grid (deterministic seeded RNG)
so the constellation looks organic rather than columnar.
• Each node connects to its 3 nearest neighbors — a real mesh
routing graph, not bipartite layers between fixed columns.
• Mesh edges drawn at very low opacity (5% white) so the structure
is visible at rest without dominating; the pulses do the talking.
• 14 ephemeral peer-to-peer pulses traverse random edges in either
direction (random reverse flag per pulse) on staggered delays
and durations, so traffic feels organic and never synchronized.
• 6 highlighted nodes scattered around the constellation suggest
"active GPUs" without imposing a hierarchy.
The graphic now visually reads as: a global constellation of
independent peers exchanging work locally with their neighbors —
which is what the section copy actually describes.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Implements the post-launch polish suggestions:
• ChapterNav: fixed vertical thread on the right side of the viewport
(desktop only). 4 dots — one per chapter — connected by a thin
static spine for visual continuity. Dots are clickable (smooth-
scroll to chapter) and the active chapter highlights green with
its label visible. Uses IntersectionObserver to detect which
chapter is currently in the user's reading zone (rootMargin
-30% / -50%).
• Hero arrival staggered: eyebrow / headline / lede now animate in
individually with 0 / 80 / 180 ms delays. Feels more composed
than the previous all-at-once fade-in.
• Italic emphasis on the conceptual heart of "About The Network":
"owned and run by its participants" is now wrapped in a serif
italic span. The phrase carries the section's thesis and now
visually carries the weight too.
• Colophon: small bookend at the bottom of section 04 — Livepeer
symbol + "THE LIVEPEER FOUNDATION" in a hairline. Gives the page
a sense of completion as a finished artifact.
• Network graphic alignment: viewBox widened from 760×200 to
768×200 to match the max-w-3xl text column aspect exactly.
Column gap bumped to 76.8 so the constellation's leftmost and
rightmost base nodes sit at the viewBox edges. Anchored
xMinYMid so the mesh aligns flush with the prose's left edge.
• data-chapter attributes added to all four chapter sections so the
nav can observe them without prop drilling.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Two fixes for the 01 Network graphic:
• Edge-clipping fix: the previous gapX of 76.8 with ±15 jitter could
push edge nodes to viewBox x = ±399, just past the ±384 bounds, so
the rightmost (and leftmost) nodes/edges were being clipped by the
parent overflow:hidden. Tightened to gapX=72 with ±18 jitter so
the maximum jittered range is ±378 — comfortably inside the ±384
viewBox with a tiny 6-unit safety margin.
• Seed picked for aesthetics: sampled five seeds (0x4c2b, 0x9e7f,
0x2d8a, 0x6b1c, 0x8f55) and chose 0x2d8a — produces the most
evenly triangulated mesh with no clusters or gaps, dense enough
to read clearly as a connected network.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
The hero + Venn graphic + chapter 1 had too much vertical air on mobile:
• Hero was min-h-screen (812px on iPhone), but the centered text
only filled ~500px, leaving a big gap below the lede before the
graphic peeked.
• Each chapter section had py-28 (112px top padding) on mobile, so
the "01 / The Network" sat 112px below the bottom of the Venn.
Adjustments:
• Hero: min-h-[78vh] on mobile, min-h-screen on lg+. The shorter
mobile hero pulls the Venn closer to the lede, and on phones the
hero text + graphic + start of chapter 1 now all fit in one
viewport.
• Chapter sections: py-14 lg:py-40 (was py-28 lg:py-40). Halves the
mobile padding while keeping desktop spacing untouched.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
03 Work graphic — comets now travel the full path:
• Comets start at the left of each stream and travel horizontally
to x=700, then bend diagonally up/down into the focal node at
(760, 0).
• Per-stream keyframes computed so motion is uniform-speed across
both segments (90% of duration is travel, 10% is post-arrival
fade).
• Comets get "subsumed" by the focal node: at the moment of arrival
they begin a 0.4s scale-down (1 → 0.2) plus opacity fade
(1 → 0), so the visual reads as the comet collapsing into the
pulsing focal.
• Replaced the directional rect+circle pulse with a single
omnidirectional glowing dot (head + halo), which works cleanly
when the comet bends along the diagonal segment.
Chapter graphic mobile spacing:
• Graphic height: 180 → 220 px on mobile (200 unchanged on lg+)
• Margin above (heading bottom): mb-10 → mb-6 on mobile
• Margin below (graphic bottom): mb-10 → mb-6 on mobile
Result: graphics feel more present and the body text sits closer.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Previous implementation used a rigid <rect> rotated to the diagonal angle. Problem: the rect can't bend, so during the diagonal segment the trail extended off the track into empty space. Replaced with a stroke-dashoffset animation along an SVG <path> that includes both the horizontal stream and the diagonal hand-off into the focal node. The "comet" is a 70-unit dash that travels along this path; because it's drawn on the path itself, it bends naturally at the corner — always sitting on the track like a railroad car. Two layered <path> strokes give the comet a halo + bright core look (width 6 green halo + width 2.4 white core, both following the same dash animation). Opacity fades to 0 at 100% so the comet appears absorbed by the focal node when it reaches the end of the path. Also: chapter graphic mobile sizing now uses aspect-[19/5] instead of fixed h-[220px], so the container height matches the SVG content's aspect ratio — eliminating the empty vertical space that made the graphics look skinny on mobile. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Reintroduces the comet look (bright white head + glowing green trail)
while keeping the path-aware trail that bends with the track:
• Trail: two layered <path> strokes — width 7 soft halo + width
2.5 brighter core — both with stroke-dashoffset animation along
the stream's path. The dash naturally follows the corner from
horizontal to diagonal.
• Head: a single bright white circle, animated with SVG
<animateMotion> along the same path. keyTimes synced with the
trail dash (0/0.06/0.9/1) so the head sits at the leading edge
throughout, including across the bend.
• workHead keyframes fade the head in and out in sync with the
trail's opacity, so the whole comet appears, travels, and
dissolves into the focal node together.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Work graphic comet tail now uses 20 stacked stroke layers with aligned leading edges and a color ramp that mirrors the deployed linearGradient (0% transparent green → 60% green(0.6) → 100% white), capped by a crisp 7px white head node. Composited opacity falls smoothly from head to tail with no visible banding. Proportions tuned to match the deployed rect+circle look: • tail length 80, width 4 (matches the 80×4 rect) • head node diameter 7 (matches the r=3.5 circle) • green→white interpolation over the last 40% of the tail Motion remains path-based stroke-dashoffset along straight-cornered tracks, so the trail bends exactly at the hand-off into the focal without losing shape. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Moves Documentation to the bottom and places Foundation directly above Brand, in both the header nav dropdown (lib/constants.ts) and the footer Resources column (components/layout/Footer.tsx). Final order: Primer, Blog, Foundation, Brand, Documentation. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Adds a dedicated opengraph-image.tsx for /foundation matching the site's standard OG format — centered Livepeer lockup, "The Foundation" tagline, green accent line, and livepeer.org/foundation domain. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
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
Adds a new
/foundationpage. Copy is sourced verbatim from the source doc (Steph Alinsug, April 2026). The page is structured as an essay: hero with a serif display headline, followed by four numbered chapters, each with a thematic animated graphic.What's in it
Hero
Instrument Seriffont (lib/fonts.ts) paired with Favorit Pro for bodyFour chapters —
01 The Network/02 The Foundation/03 What We Do/04 The Team. Each has a numbered breadcrumb, serif chapter title, and (for 01–03) a thematic animated SVG banner between the heading and body. Team intentionally has no graphic — the roster of names is the section.Graphic rationale
Nav & Footer
Foundationto the Resources dropdown inNAV_ITEMS(lib/constants.ts)Foundationto the Resources column in the global FooterTest plan
/foundationis reachable from the Resources nav dropdown and Footer/blog/introducing-the-livepeer-foundationwithout opening a new tab🤖 Generated with Claude Code