Skip to content

fix(blog): capitalize post headings, center body, tighten heading rhythm#100

Merged
yigitdot merged 4 commits into
mainfrom
polish/blog-headings-centered-body
May 12, 2026
Merged

fix(blog): capitalize post headings, center body, tighten heading rhythm#100
yigitdot merged 4 commits into
mainfrom
polish/blog-headings-centered-body

Conversation

@yigitdot
Copy link
Copy Markdown
Collaborator

@yigitdot yigitdot commented May 12, 2026

What

Polish fixes to the long-form blog posts:

  1. Capitalized ## section headings in all three MDX posts — e.g. the elevator versionThe elevator version, transport: …Transport: …, the common patternThe common pattern. The deliberate lowercase aesthetic belongs to the chrome (field notes_ index title, .meta labels), not to in-body section titles. Acronym/proper-noun headings (## IPFS …, ## Filecoin …, ## Theta …, ## Livepeer …, ## Arweave / Sia / Storj …, ## MaidSafe / Safe Network …) are left as-is. Frontmatter title: fields were already capitalized. Also capitalized the word after the colon in ## Settlement: Stablecoins … and ## L2s: Payment channels … for internal consistency.
  2. Centered the MDX body column — added margin-inline: auto to .prose so the 68ch reading column sits centered within the 1280px Frame instead of hugging the left edge. Body text stays left-aligned; the rule above the body and the prev/next nav stay full-width. On phone widths the auto margin collapses to zero, so nothing changes there.
  3. Centered the post masthead — the meta line (§ · date · read), the post <h1> (e.g. "Why now"), and the tag pills now align on the page's vertical axis, sitting as a centered masthead above the centered body. The "← field notes" back-link stays flush-left as nav chrome. The <h1> gets text-balance so a two-line title breaks evenly.
  4. Tightened heading spacing — the pre-heading gap before an h2 is 1.7em (was 2.4em), scoped to .prose > * + h2 so a post that opens on a heading doesn't get a stray top margin (mirrors the .prose > * + * lobotomized-owl rule). .prose h3's explicit margin-block-start (was 2em) is dropped — the base .prose > * + * already supplies 1.4em.

Files

  • content/blog/00-what-were-building.mdx, content/blog/01-why-now.mdx, content/blog/02-decentralized-cdn-graveyard.mdx — heading capitalization only
  • app/globals.css.prose (margin-inline: auto), .prose h2.prose > * + h2 for the pre-heading margin, .prose h3 (dropped redundant margin-block-start)
  • app/blog/[slug]/page.tsx — centered post header (items-center / text-center / justify-center), text-balance on the <h1>

No data-layer changes; lib/blog.ts passes body through verbatim, and no anchor/TOC/slug machinery consumes the heading text.

Review

Addressed the Gemini Code Assist review (heading-margin scoping, Stablecoins capitalization) and a follow-up multi-agent review (text-balance on the centered title). Code-reviewer + comment-analyzer found no critical/important issues.

Verification

  • pnpm lint
  • pnpm format:check
  • pnpm test — 45 passing ✓
  • pnpm build — static export clean; built HTML has <h2>The elevator version</h2> / <h2>Settlement: Stablecoins are now load-bearing financial infrastructure</h2> / <h1 … class="hug text-balance …">, built CSS has .prose{…;margin-inline:auto} and .prose>*+h2{margin-block-start:1.7em} with no margin-block-start on .prose h3

🤖 Generated with Claude Code

The long-form posts were authored with all-lowercase `##` section
headings — the lowercase aesthetic belongs to the chrome (the
`field notes_` index title, `.meta` labels), not to in-body section
titles, where it reads as a mistake. Capitalize the first letter of
each lowercase heading across the three posts (acronym/proper-noun
headings like `IPFS …`, `L2s: …`, `Filecoin …` are untouched).

Also center the MDX reading column within the wide Frame instead of
pinning it to the left edge (`margin-inline: auto` on `.prose`; text
stays left-aligned, header and prev/next nav stay full-width), and
tighten the space above headings (`.prose h2` 2.4em → 1.7em, `.prose
h3` 2em → 1.4em).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 12, 2026 23:26
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 12, 2026

Deploying website with  Cloudflare Pages  Cloudflare Pages

Latest commit: d0c3367
Status: ✅  Deploy successful!
Preview URL: https://8c7e8a46.website-70y.pages.dev
Branch Preview URL: https://polish-blog-headings-centere.website-70y.pages.dev

View logs

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Polishes long-form blog post presentation by standardizing section heading capitalization and improving the MDX reading layout/typography so posts read more cleanly within the site’s Frame layout.

Changes:

  • Capitalize ## section headings across the three existing blog MDX posts (leaving acronym/proper-noun headings unchanged).
  • Center the .prose reading column via margin-inline: auto while keeping body text left-aligned.
  • Reduce top spacing before .prose h2 / .prose h3 to tighten heading rhythm.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
content/blog/00-what-were-building.mdx Capitalizes section headings for consistent in-body presentation.
content/blog/01-why-now.mdx Capitalizes section headings for consistent in-body presentation.
content/blog/02-decentralized-cdn-graveyard.mdx Capitalizes a section heading for consistent in-body presentation.
app/globals.css Centers the .prose column and tightens h2/h3 vertical spacing within MDX bodies.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request centers the reading column in the global CSS and updates blog post headings from lowercase to sentence case. Feedback suggests that centering the column may cause horizontal misalignment with the header on desktop and that the explicit top margins on headings should be scoped to avoid breaking existing spacing logic for first-child elements. Additionally, further capitalization is recommended for consistency in the blog post headings.

Comment thread app/globals.css

.prose {
max-width: 68ch;
margin-inline: auto; /* center the reading column within the wide Frame */
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Centering the .prose column while keeping the post header and navigation "full-width" (as noted in the PR description) will likely create a significant horizontal misalignment on desktop. If the header text is left-aligned within the 1280px Frame, its left edge will be much further left than the centered 68ch body column. Consider either centering the header content as well or constraining the entire article container to the reading width to maintain a consistent vertical axis for the reader's eye.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Already addressed in 6130fe7: the post masthead (meta line, <h1>, tags) is centered too, so the header and the centered .prose column now share the same vertical axis. The "← field notes" back-link stays flush-left as nav chrome.

Comment thread app/globals.css Outdated
Comment on lines +878 to +886
margin-block-start: 1.7em;
}

.prose h3 {
font-size: var(--fs-lead);
font-weight: 600;
letter-spacing: -0.01em;
line-height: 1.2;
margin-block-start: 2em;
margin-block-start: 1.4em;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The explicit margin-block-start on .prose h2 and .prose h3 applies even when the heading is the first child of the container. This breaks the spacing logic established by the "lobotomized owl" selector at line 865 (.prose > * + *), which correctly omits top margin for the first element to avoid double-padding against the container's top.

For h3, the value 1.4em is identical to the base spacing, making the declaration redundant for non-first children and buggy for the first child. For h2, the override should ideally be scoped to non-first children (e.g., using .prose > * + h2 or :not(:first-child)).

References
  1. Avoid using redundant selectors or declarations in CSS when the desired layout can be achieved more efficiently through source order or existing rules.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in cab29ba. .prose h3's margin-block-start (which equalled the base 1.4em) is removed, and .prose h2's larger gap moves to .prose > * + h2 so a first-child heading no longer gets a stray top margin — mirrors the .prose > * + * rule and wins it on specificity. (No rendering change for current posts, since every body opens with a lede paragraph.)

Comment thread content/blog/01-why-now.mdx Outdated
Result: every byte we deliver is verified by the receiving client at line rate. We do not need a separate proof-of-delivery oracle. The retrieval problem Filecoin had to design a whole sub-protocol around — proving you delivered the right bytes — is just not a problem we have to solve.

## settlement: stablecoins are now load-bearing financial infrastructure
## Settlement: stablecoins are now load-bearing financial infrastructure
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Capitalize "Stablecoins" to maintain consistency with the other headings in this file (e.g., "Transport", "Addressing") and to align with the PR's objective of removing the "lowercase aesthetic" from section titles. Currently, it stands out as inconsistent compared to the sentence case used elsewhere.

## Settlement: Stablecoins are now load-bearing financial infrastructure

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Done in cab29ba — and for consistency the sibling heading got the same treatment: ## Settlement: Stablecoins are now load-bearing financial infrastructure and ## L2s: Payment channels are finally cheap enough to bother with.

yigitdot and others added 3 commits May 13, 2026 02:31
The meta line (§ · date · read), the post <h1>, and the tag pills now
align on the page's vertical axis, sitting as a centered masthead over
the centered reading column. The "← field notes" back-link stays
flush-left as nav chrome; body paragraphs and ## section headings stay
left-aligned.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…words

PR review follow-up:

- `.prose h2`'s larger pre-heading gap moves to `.prose > * + h2`, so a
  post that opens on a heading doesn't pick up a stray top margin
  (mirrors the `.prose > * + *` lobotomized-owl rule). `.prose h3`'s
  `margin-block-start` is dropped — it equalled the base 1.4em, so it
  was redundant for non-first headings and wrong for a first child.
  No rendering change for current posts (each body opens with a lede).
- "why now": capitalize the word after the colon in `## Settlement:
  Stablecoins …` and `## L2s: Payment channels …` for consistency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
`text-balance` on the post <h1> so a title that wraps to two lines on
the centered masthead breaks evenly instead of leaving a stubby last
line. Picked up from PR review feedback.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@yigitdot yigitdot merged commit b7d34d6 into main May 12, 2026
6 checks passed
@yigitdot yigitdot deleted the polish/blog-headings-centered-body branch May 12, 2026 23:51
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.

2 participants