Skip to content

fix(website): docs polish 1/3 — sticky rails, anchor offsets, honest mobile widths - #861

Merged
blove merged 2 commits into
mainfrom
blove/docs-polish-1-structural
Aug 30, 2026
Merged

fix(website): docs polish 1/3 — sticky rails, anchor offsets, honest mobile widths#861
blove merged 2 commits into
mainfrom
blove/docs-polish-1-structural

Conversation

@blove

@blove blove commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

What

PR 1 of 3 of the docs polish arc (plan · findings) — the structural fixes. This is deliberate visual change, the first of the whole arc; each item below was a measured defect.

defect (measured before) fix measured after
Both sticky rails dead site-wide (sidebar at top:-2920 at scrollY 3000) body{overflow-x:clip} — clips like hidden but creates no scroll container rails pin at var(--nav-h)
Every deep link under the nav (heading at 0, nav bottom 81) html{scroll-padding-top:calc(var(--nav-h)+16px)} anchors land 16px clear
22px dead space on phones (hardcoded 80px vs 58px nav) --nav-h (58/81) drives shell, rails, overlay padding == nav height at both sizes
Sidebar 10,030px tall, own scrollbar never engages align-self:flex-start + max-height 819px, scrolls
Phones zoom out to 421px (min-content overflow the old guards hid) fixed at the source: 3 min-width:0 flex/grid items, the wp cover's height-derived aspect-ratio width, 5 unclamped auto-fit minimums, 5 stacked 1fr auto-minimums, one unbreakable URL zero elements exceed a true pinned 320 on every probe page

The mechanism worth knowing

overflow-x: hidden on body was doing two jobs: pinning the mobile layout viewport and killing sticky (it makes <body> a scroll container; sticky descendants pin against a thing that never scrolls). overflow-x: clip does the first job without the second. The real overflow is still fixed at the source — clip is the belt, not the fix.

Blast radius

/ and /pricing are hash-identical to production at 1280 (644 and 420 elements × 26 properties) — desktop marketing is untouched. Docs pages change deliberately (rails, padding, anchors). nx test website fully green, 0 lint errors, prod build green.

PR 2 (breadcrumb, tables, rails, mdx details) and PR 3 (a11y + interaction) follow.

🤖 Generated with Claude Code

@blove
blove enabled auto-merge (squash) August 30, 2026 01:28
@vercel

vercel Bot commented Aug 30, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
threadplane Ready Ready Preview Aug 30, 2026 1:35am

Request Review

@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 Aug 30, 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 and others added 2 commits August 29, 2026 18:32
… 320px honest

The structural third of the docs polish arc (findings §1, §2, §5, §6-partial).

- body gets overflow-x: CLIP, not hidden. `hidden` made <body> a scroll
  container, so every sticky rail pinned against a thing that never scrolls -
  the docs sidebar and TOC have been dead since they were written. `clip`
  clips identically, creates no scroll container (sticky works), and keeps
  the mobile layout viewport pinned (without any body guard, min-content
  overflow forced phones to zoom out: measured vw 421 on a 320 device).
- One nav height: --nav-h (58px / 81px at md) drives the docs shell padding
  (was a hardcoded 80px = 22px dead space on phones), both sticky rails, the
  mobile overlay offset, and html's scroll-padding-top - which stops every
  deep link landing under the fixed nav.
- The sidebar gets align-self:flex-start + max-height so its own scrollbar
  finally engages (it was stretched to the article's 10,030px).
- The overflow the old guards were hiding is fixed at the source: Steps'
  flex item, why-row's flex item and wp-cover-wrap's grid item (min-width:0),
  the wp cover's height-derived aspect-ratio width, five auto-fit grids with
  unclamped px minimums, five stacked 1fr breakpoints with auto minimums,
  and the about page's unbreakable repo URL.

Measured: rails pin at var(--nav-h) at scrollY 3000; #anchor jumps land 16px
clear of the nav; zero elements exceed a true pinned 320px viewport on /,
/pilot-to-prod, /solutions, /about, /blog, /pricing, and the docs pages; and
/ and /pricing are hash-identical to production at 1280 (desktop untouched).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@blove
blove force-pushed the blove/docs-polish-1-structural branch from 6b9d10e to db12b6a Compare August 30, 2026 01:32
@github-actions

github-actions Bot commented Aug 30, 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 d8dc3b0 into main Aug 30, 2026
23 checks passed
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