Skip to content

feat(site): illustrate all 25 blog essays - #725

Merged
crs48 merged 2 commits into
mainfrom
codex/generated-blog-covers
Oct 9, 2026
Merged

crs48 merged 2 commits into
mainfrom
codex/generated-blog-covers

Conversation

@crs48

@crs48 crs48 commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

What

Every blog essay now has a generated editorial illustration based on its contents. This replaces all 25 SVG covers across post headers, the blog listing, the repeated Harvest illustration, and social previews.

  • Serve 800px and 1600px WebP versions with descriptive alt text, lazy-loaded cards, and priority-loaded headers.
  • Show the full 2:1 composition on listing cards and keep header text readable with a consistent gradient.
  • Generate 1200×630 social PNGs from the same covers and remove the unused SVG components.

The overdue-exploration index is also refreshed, and the existing 50 overdue documents are acknowledged in the backlog baseline. Their original dates and unfinished status remain visible; the gate will flag further growth.

Changelog

Added 2026-10-09-every-blog-essay-has-its-own-illustrated.json: every blog essay has its own illustrated cover.

Verification

Full site build and its validators passed; verified all 25 built hero references, responsive sources, social metadata, and PNG dimensions. Browser checks loaded every post at desktop and 390px mobile widths, with visual checks of the listing, bright and dark covers, and both themes. Repository commit and push hooks passed: type checks, formatting, and the full test suite (12,749 passed; 4 skipped).

The refreshed backlog gate passes locally (50 stale against a baseline of 50), and all 391 exploration references resolve.

Docs & site sync

  • Site updated in this PR. Impact: the blog listing, all 25 essay headers, and social images. No app, SDK, or CLI behavior changes.
All 25 generated covers

Atoms for the Ballot

Atoms for the Ballot

The Hundred-Year Machine

The Hundred-Year Machine

The Door Inside the House

The Door Inside the House

The Table and the Wall

The Table and the Wall

The Matchmaker and the Meter

The Matchmaker and the Meter

The Harvest You Can Count

The Harvest You Can Count

Rig the Game or Play

Rig the Game or Play

Palimpsest

Palimpsest

The World’s Greatest Record Store

The World’s Greatest Record Store

Tree Rings

Tree Rings

People in Disguise

People in Disguise

Clutch Power

Clutch Power

Weights You Can Hold

Weights You Can Hold

Timeout

Timeout

The Vault and the View

The Vault and the View

The Workshop and the Walled Garden

The Workshop and the Walled Garden

Hand on the Tiller

Hand on the Tiller

The Tip of the Hook

The Tip of the Hook

The Loom You Can Read

The Loom You Can Read

The Forest and the Field

The Forest and the Field

The Right to Say No

The Right to Say No

The Desert That Feeds the Forest

The Desert That Feeds the Forest

The Gentlest Furnace

The Gentlest Furnace

Data Should Work Like Soil

Data Should Work Like Soil

A Great Pirate Age for the Internet

A Great Pirate Age for the Internet

- Replace all 25 SVG covers with generated editorial illustrations in two WebP sizes.
- Share accessible, responsive artwork across post headers, listing cards, and social previews.
- Preserve readable titles with a consistent overlay and show complete covers in the listing.
- Verify the site build, every post image, social cards, and desktop/mobile layouts.

Signed-off-by: xNet Test <test@xnet.dev>
@crs48
crs48 temporarily deployed to pr-725 October 9, 2026 18:47 — with GitHub Actions Inactive
@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 109 files, which is 9 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6dbf5610-2bca-4d26-a399-f995f1d5be4f

📥 Commits

Reviewing files that changed from the base of the PR and between 2491086 and 2a6c235.


📒 Files selected for processing (109)
  • docs/explorations/.fallow-baseline.json
  • docs/explorations/STALE.md
  • site/public/blog/covers/a-great-pirate-age-800.webp
  • site/public/blog/covers/a-great-pirate-age.webp
  • site/public/blog/covers/atoms-for-the-ballot-800.webp
  • site/public/blog/covers/atoms-for-the-ballot.webp
  • site/public/blog/covers/clutch-power-800.webp
  • site/public/blog/covers/clutch-power.webp
  • site/public/blog/covers/data-should-work-like-soil-800.webp
  • site/public/blog/covers/data-should-work-like-soil.webp
  • site/public/blog/covers/hand-on-the-tiller-800.webp
  • site/public/blog/covers/hand-on-the-tiller.webp
  • site/public/blog/covers/palimpsest-800.webp
  • site/public/blog/covers/palimpsest.webp
  • site/public/blog/covers/people-in-disguise-800.webp
  • site/public/blog/covers/people-in-disguise.webp
  • site/public/blog/covers/rig-the-game-or-play-800.webp
  • site/public/blog/covers/rig-the-game-or-play.webp
  • site/public/blog/covers/the-desert-that-feeds-the-forest-800.webp
  • site/public/blog/covers/the-desert-that-feeds-the-forest.webp
  • site/public/blog/covers/the-door-inside-the-house-800.webp
  • site/public/blog/covers/the-door-inside-the-house.webp
  • site/public/blog/covers/the-forest-and-the-field-800.webp
  • site/public/blog/covers/the-forest-and-the-field.webp
  • site/public/blog/covers/the-gentlest-furnace-800.webp
  • site/public/blog/covers/the-gentlest-furnace.webp
  • site/public/blog/covers/the-harvest-you-can-count-800.webp
  • site/public/blog/covers/the-harvest-you-can-count.webp
  • site/public/blog/covers/the-hundred-year-machine-800.webp
  • site/public/blog/covers/the-hundred-year-machine.webp
  • site/public/blog/covers/the-loom-you-can-read-800.webp
  • site/public/blog/covers/the-loom-you-can-read.webp
  • site/public/blog/covers/the-matchmaker-and-the-meter-800.webp
  • site/public/blog/covers/the-matchmaker-and-the-meter.webp
  • site/public/blog/covers/the-right-to-say-no-800.webp
  • site/public/blog/covers/the-right-to-say-no.webp
  • site/public/blog/covers/the-table-and-the-wall-800.webp
  • site/public/blog/covers/the-table-and-the-wall.webp
  • site/public/blog/covers/the-tip-of-the-hook-800.webp
  • site/public/blog/covers/the-tip-of-the-hook.webp
  • site/public/blog/covers/the-vault-and-the-view-800.webp
  • site/public/blog/covers/the-vault-and-the-view.webp
  • site/public/blog/covers/the-workshop-and-the-walled-garden-800.webp
  • site/public/blog/covers/the-workshop-and-the-walled-garden.webp
  • site/public/blog/covers/the-worlds-greatest-record-store-800.webp
  • site/public/blog/covers/the-worlds-greatest-record-store.webp
  • site/public/blog/covers/timeout-800.webp
  • site/public/blog/covers/timeout.webp
  • site/public/blog/covers/tree-rings-800.webp
  • site/public/blog/covers/tree-rings.webp
  • site/public/blog/covers/weights-you-can-hold-800.webp
  • site/public/blog/covers/weights-you-can-hold.webp
  • site/src/components/blog/BallotArt.astro
  • site/src/components/blog/BallotHero.astro
  • site/src/components/blog/BlogArt.astro
  • site/src/components/blog/BoardArt.astro
  • site/src/components/blog/BoardHero.astro
  • site/src/components/blog/BrickArt.astro
  • site/src/components/blog/BrickHero.astro
  • site/src/components/blog/DisguiseArt.astro
  • site/src/components/blog/DisguiseHero.astro
  • site/src/components/blog/DoorHouseArt.astro
  • site/src/components/blog/DoorHouseHero.astro
  • site/src/components/blog/DustArt.astro
  • site/src/components/blog/DustHero.astro
  • site/src/components/blog/ForestArt.astro
  • site/src/components/blog/ForestHero.astro
  • site/src/components/blog/HarvestArt.astro
  • site/src/components/blog/HarvestHero.astro
  • site/src/components/blog/HookArt.astro
  • site/src/components/blog/HookHero.astro
  • site/src/components/blog/HundredYearArt.astro
  • site/src/components/blog/HundredYearHero.astro
  • site/src/components/blog/LeverArt.astro
  • site/src/components/blog/LeverHero.astro
  • site/src/components/blog/LoomArt.astro
  • site/src/components/blog/LoomHero.astro
  • site/src/components/blog/MeterArt.astro
  • site/src/components/blog/MeterHero.astro
  • site/src/components/blog/MycelialArt.astro
  • site/src/components/blog/MycelialHero.astro
  • site/src/components/blog/PalimpsestArt.astro
  • site/src/components/blog/PalimpsestHero.astro
  • site/src/components/blog/PirateArt.astro
  • site/src/components/blog/PirateHero.astro
  • site/src/components/blog/RecordArt.astro
  • site/src/components/blog/RecordHero.astro
  • site/src/components/blog/RingsArt.astro
  • site/src/components/blog/RingsHero.astro
  • site/src/components/blog/StarArt.astro
  • site/src/components/blog/StarHero.astro
  • site/src/components/blog/TableWallArt.astro
  • site/src/components/blog/TableWallHero.astro
  • site/src/components/blog/TillerArt.astro
  • site/src/components/blog/TillerHero.astro
  • site/src/components/blog/TimeoutArt.astro
  • site/src/components/blog/TimeoutHero.astro
  • site/src/components/blog/VaultArt.astro
  • site/src/components/blog/VaultHero.astro
  • site/src/components/blog/WeightsArt.astro
  • site/src/components/blog/WeightsHero.astro
  • site/src/components/blog/WorkshopArt.astro
  • site/src/components/blog/WorkshopHero.astro
  • site/src/data/blog-art.ts
  • site/src/data/blog.ts
  • site/src/data/changelog/2026-10-09-every-blog-essay-has-its-own-illustrated.json
  • site/src/pages/blog/index.astro
  • site/src/pages/blog/og/[slug].png.ts
  • site/src/pages/blog/the-harvest-you-can-count.astro

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

github-actions Bot added a commit that referenced this pull request Oct 9, 2026
github-actions Bot added a commit that referenced this pull request Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Preview removed for PR #725.

- Regenerate the stale index to record nine newly overdue explorations and current ages.
- Accept the existing 50-item overdue backlog as the ratchet baseline, as requested.
- Keep overdue dates and unfinished statuses visible for future triage.
- Verify the backlog gate and all 391 exploration references.

Signed-off-by: xNet Test <test@xnet.dev>
@crs48
crs48 temporarily deployed to pr-725 October 9, 2026 19:13 — with GitHub Actions Inactive
@crs48
crs48 merged commit 059c35e into main Oct 9, 2026
20 checks passed
@crs48
crs48 deleted the codex/generated-blog-covers branch October 9, 2026 19:18
github-actions Bot added a commit that referenced this pull request Oct 9, 2026

This branch was previously deployed

1 inactive deployment
pr-725 — 2a6c235e Deployed Oct 9, 2026 by crs48 via deploy-preview #1480
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