Repository navigation
Redesign: article page - #39
Conversation
The article page follows the Paper design "V2 · Article — Serif text" with a 720px column: the back link to the home's Writing section, the meta line (date, reading time, project), the mono title, the text in Newsreader, then the "Part of the project" panel and Previous and Next. - prose.css styles the Markdown: headings, lists with muted bullets or mono numbers, inline code, code blocks, quotes, figures on a grey panel, and tables with numbers in 104px mono columns, a highlighted row and a caption. - rehype-article.mjs shapes the HTML for it: figures and their captions, YouTube embeds moved to youtube-nocookie.com and loaded lazily, tables (number columns, the row whose cells are all bold, a "Table:" caption). - remark-heading-levels.mjs shows the headings again, renumbered from h2. - src/data/projects.ts holds the three projects, their screenshots and which articles belong to each, for this page, the home and the share images. - The meta description falls back to an excerpt of the first paragraph. Implements #32. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013MdjUerTCBDeF5DG9puDd2
…2-article Keep both sides: the article page passes #34's share image to the Layout and uses it in its JSON-LD, and takes its date and reading time from #34's articleMeta(), so the meta line and the share image print the same ones (235 words a minute). src/data/projects.ts keeps the full project data, with the slug and name that the share images count. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013MdjUerTCBDeF5DG9puDd2
|
Preview: https://pr-39-meaningfool.josselin-perrus.workers.dev Built from 94fffd2 with the latest content. The link stays the same and shows the latest push. Search engines are asked not to index it. |
"Agent Frameworks for the Rest of Us" opens with a `##` before its first `#` section, which the renumbering made an h3 straight under the page title. Headings now go at most one level deeper than the heading before them, the title included, so it becomes an h2 like the parts after it. No other post changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013MdjUerTCBDeF5DG9puDd2
Astro keeps each post's rendered HTML in node_modules/.astro, which the deploy workflow restores from its cache, and renders a post again only when the post or the config it compares changes. Plugin functions drop out of that comparison, so the preview of acfbd34 still served the previous heading levels. A hash of the plugins' sources and bun.lock now goes into the config, as rehypeArticle's unused options. The built site is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013MdjUerTCBDeF5DG9puDd2
|
Review checkpoint: accepted at This was an independent review of this PR against #32, with #35, AGENTS.md and Setup
What I checked
Fixed in review
Left as is (minor)
Generated by Claude Code |
Implements #32 (part of #35). It builds on #36 (foundations) and has
redesignmerged in, with #37 (share images and favicon).What changes
src/pages/articles/[slug].astro) follows the Paper design "V2 · Article — Serif text" (docs/redesign/paper/article-v2.png) and the prototype's#articleview, with the column at 720px. Its<main>drops thelegacyclass.min(720px, 100%)column (main.post), so Redesign: page background and topic map, prepared at build time #30's band can line up with it. This PR draws no background or pattern./#writing.src/styles/prose.css):##is mono 22px/30px with 48px above;###is mono 18px/26px with 36px above.src/lib/remark-heading-levels.mjs). The page title is the only h1, and the post's headings are renumbered from h2. For example, the 11#sections of "Agent Frameworks for the Rest of Us", hidden until now, become h2 and their subsections h3.src/lib/rehype-article.mjs, which runs afterrehype-raw, now a direct dependency):youtube-nocookie.comwithloading="lazy", in a 16:9 figure. The three in "Thoughts on Human-AI Collaboration" answer 200 there.descriptionfield, or else an excerpt of the first paragraph (src/lib/excerpt.ts), or else the title. The JSON-LD description uses it too.src/data/projects.ts): the shared module for Redesign: home page #31 and Redesign: share images and favicon #34, newest first.src/assets/projects/.maps.js) and is kept in this data file, by article id. Nothing was pushed to meaningfool-writing.edit-collections-generative-ai,structured-extraction,thoughts-on-human-ai-collaborationagent-frameworks-for-the-rest-of-usantigravity_is_onto_somethingshareto the Layout and uses it as the JSON-LD image.articleMeta(), so the meta line and the share image print the same values. The reading time issrc/lib/reading-time.mjs, 235 words a minute rounded up, which gives the prototype's minutes for all 18 articles.projectskeeps theslugandnamethat the share images count.public/_headersalready allowsframe-src https://www.youtube-nocookie.com, so nothing needed adding.www.youtube.comstays for embeds this doesn't rewrite.Content conventions (documented in this repo's AGENTS.md)
Table:after a table, past a blank line, becomes its caption.cost-of-reworkis a file name, so it gets no caption.Proposed for meaningfool-writing (not done: a push there deploys the live site)
2026-05-27-structured-extraction.md, the design's highlighted Mistral row and its caption need the Mistral row in bold and aTable: …line after the table. The design also shows 6 of the 17 rows.AGENTS.mdstill says that#headings other than the title are hidden. It could describe the heading levels and the conventions above.Choices to check
/#writing, which works once Redesign: home page #31 gives the home's Writing sectionid="writing". Today's home has no such anchor, so the link lands at the top of the home.github-lightin a 1px line frame, instead of the dark block.####is mono 16px/24px.Validation
Head commit
c8250b4bbf5014178f944fb2d78006e14497d2f9. It mergesorigin/redesignat3df7e3843cdd06cf5d6c73d7b32e6443c3007262(#37) into the work started on4cf01a4. Node 24.22.1, Bun 1.4.4, content atbf783ba(git submodule update --init --remote).bun install --frozen-lockfile, thenbun run build: passes, 62 pages.bun run test:documents: 10 tests, 10 passed.3df7e38.llms*.txt./documents/,rss.xml, the sitemap,_redirects,robots.txt,_headersand the share images are byte-identical.<div>, in a paragraph, in a list and in a figure, protocol-relative, a site-relative/embed/…that is left alone, and other hosts;Review gate
There were 5 review passes over the whole change. These were fixed:
>in attributes are handled;/embed/…iframe is no longer taken for YouTube;#fragmentis kept.Table:caption is ignored;Left as they are, with the reasons:
/#writinganchor, which waits for Redesign: home page #31;descriptionfield, which is outside the issue;projects.tsgives a warning rather than an error, so that renaming an article doesn't block a deploy;rehype-rawruns twice, which only costs build time.Generated by Claude Code