What's new
Every release of the theme, newest first.
Changelog
All notable changes to this project are documented here. Format: Keep a Changelog.
[1.5.0] - 2026-10-17
Added
- Numbered equations:
\label{…}in a display formula numbers it, and\eqref{…}/\ref{…}link back to it, even from earlier in the post. <Theorem>for theorems, lemmas, propositions, corollaries, definitions, examples, remarks and proofs, numbered per page in CSS. Available in posts and docs without an import.- Copying a formula copies its LaTeX source (KaTeX copy-tex, loaded only on pages with math).
- See all three in the demo: A Typography Sampler.
- Demo builds get a What’s new page (this changelog, with links to the demo pages that show each feature), linked from the demo bar. Buyer builds are unchanged.
[1.4.0] - 2026-10-17
Added
- Math in posts and pages:
$…$inline and$$…$$display, rendered with KaTeX at build time (no client-side JS). Chemical equations work through mhchem (\ce{…}). The KaTeX stylesheet and fonts load only on pages that contain math. If an existing post has two dollar amounts in one paragraph ($20 and $30), the text between them now renders as a formula: escape them as\$20. See it in the demo: A Typography Sampler.
[1.3.1] - 2026-10-14
Fixed
- With analytics set to GA4,
gtag()is now onwindow, so your own events can call it (it was a function local to the snippet). - A wide table in a post scrolls inside a wrapper (
.table-scroll) instead of having its own display changed, so screen readers still announce it as a table. - Chinese and Japanese are counted by character for the reading time; a sentence without spaces used to count as one word.
[1.3.0] - 2026-09-23
Added
- Hungarian UI strings,
src/i18n/hu.ts. Setsite.locale: 'hu'for a Hungarian site, or addhutoi18n.localesto serve it alongside another language. - Latin Extended font subsets for Newsreader, Inter, and JetBrains Mono. Characters such as
ő,ű,ł,ř, andşnow render in the theme fonts instead of falling back to a system font. Each subset is its own@font-facewith aunicode-range, so a page only downloads it when it uses one of those characters: an English site loads exactly what it did before.
Changed
- The language switcher moved from the header to the footer, as one more link group titled “Language”. It lists every language in its own name with the current one marked; before, the header showed only the other languages, and with three or more they read as extra nav items. The header also gets back the room it needs at 360px.
Fixed
- Generated OG images drew empty boxes for Latin Extended characters: the title check accepted any Latin-script character, but the OG fonts only had the basic Latin subset. The OG fonts now include Latin Extended, and a title with a character they still lack gets the default OG image rather than a broken one.
- Removing a language from
i18n.localeswhile its folder of translated posts was still insrc/content/blog/<locale>/failed the build withMissing parameter: slug. The build now stops with a message naming the folder and the two ways to fix it. - Adding a language no longer needs a registration step. Every
src/i18n/<locale>.tsis picked up automatically; before, a new file was silently ignored until it was also imported insrc/i18n/t.ts.
[1.2.3] - 2026-09-23
Fixed
CLAUDE.md, which is a symlink toAGENTS.md, is no longer written into the release snapshot. An unzip that ignores the symlink bit — Windows Explorer, 7-Zip — left a broken file where the guide should be.
[1.2.2] - 2026-09-22
Changed
- The author name is spelled in lowercase —
ondelva— inLICENSE.md. The license terms are unchanged.
[1.2.1] - 2026-09-21
Fixed
- The Lighthouse config listed only demo pages, so deleting one failed CI with a 404 that reads
like a performance problem.
lighthouserc.cjsnow filters the list down to the pages that are actually there; restore a page and it is measured again.
[1.2.0] - 2026-09-21
Added
- Section components can be embedded in the body of a post, page, or work entry. Wrap one in
<div class="not-prose breakout">and it keeps the width and look it has on the home page; the prose around it stays at the reading measure.breakoutis a new@utilityinglobal.css, and no section component had to change. A worked example ships at/work/how-people-read-long-essays/. - Work entries can use the long-form features posts have:
work.series,work.sidenotes, andwork.tocinsrc/config.ts, plus an optionalseriesfield in work frontmatter. This makes the collection usable for essays, studies, and guides, not only portfolio case studies. All three default totrue.seriesandsidenotesrender nothing until an entry has aseriesvalue or a footnote;tocfollows the same rule posts do and appears on an entry with 3 or more headings, so set it tofalsefor a portfolio of short case studies.
Fixed
.not-prosenow opts a block out of every.proserule. Quotes, tables, list spacing, link underlines, and image rounding still leaked through, which restyled a section component embedded in a post. The only visible change to existing content is the/docs/index, where the list rows lose the body-text margin they were never meant to inherit.
[1.1.2] - 2026-09-21
Fixed
- The Lighthouse gate measures each URL three times instead of once. The first URL in the list absorbs the runner’s cold start, so a page could fail the 95 threshold with the site unchanged.
[1.1.1] - 2026-09-21
Fixed
- The search page loaded the Pagefind index and its wasm as soon as it opened, which blocked the
main thread for a visitor who never typed. Both are loaded on the first keystroke now; a page
opened with
?q=still loads them straight away. - CI uploads the Lighthouse report when the performance gate fails.
.lighthouseciis a dotted directory, andupload-artifactskips hidden files by default, so the report that explains a failure was never actually attached.
[1.1.0] - 2026-09-21
Added
- Umami as an analytics provider, next to Plausible and GA4.
analytics.hostpoints a self-hosted Plausible or Umami at your own origin; leave it empty for the hosted service. The default is stillprovider: null, and a build with nothing set loads no third-party script.
[1.0.4] - 2026-09-19
Fixed
- No more
[astro-icon] Failed to load icons from "src/icons"warning on every build.src/icons/now ships empty, ready for your own SVG icons.
[1.0.3] - 2026-09-19
Fixed
pnpm installworks with pnpm 9 and older pnpm 10 releases. The project now pins pnpm 10.34.5 instead of pnpm 12, which older pnpm could not read or switch to.
Changed
- README: HTTPS clone URL, install steps for the zip download, and the required Node.js and pnpm versions.
docs/deploy.md: removed deploy buttons (they need a public repository) and added steps to push your copy to your own repository first.
[1.0.2] - 2026-09-17
Fixed
- Lists marked
not-proseno longer get prose bullets or numbers (the/docsindex showed numbers outside the page margin on phones).
[1.0.1] - 2026-09-17
Changed
- README links to the Pro checkout page.
[1.0.0] - 2026-09-17
Changed
- Home is now a writer’s front page: the latest essay set large, earlier posts, and the newsletter. Theme marketing moved to
/features. - Section labels are serif italic in a hanging left column (
section-label,hang), replacing small uppercase labels. - Buttons and inputs have square corners; the newsletter, split, and pricing blocks use rules instead of rounded cards.
- Section headings use regular weight; spacing now varies by section.
- Footer shows its link group titles. Demo author is “Ada Marlow”.
- Rewritten page copy and sample essays; two short posts added.
Added
- Tag index at
/blog/tag/, linked from each tag page. /styleguideis built for production too; turn it off withfeatures.styleguide.- Agent files:
.cursor/rules/pilcrow.mdcand Claude Code skills in.claude/skills/(new post, section, color preset). - Rubricated drop cap (
blog.dropCap) and margin sidenotes on wide screens (blog.sidenotes). - User docs:
docs/customization.md,docs/content.md,docs/deploy.md.AGENTS.mdmap updated. - Integrations: newsletter providers (Buttondown, Kit), Giscus comments, contact form submitted without a page reload.
- Four color presets, three font pairings, generated per-post OG images (satori).
- Blog: authors, series, table of contents, reading time, related posts,
Calloutand code copy button in MDX. - Pages: Pricing, Features, Team, Newsletter, Changelog, Cookies, Accessibility;
docsandworkcollections. - 20 home sections, all shown on
/sections. - Pagefind search (
/search) and i18n routing (/<locale>/blog/…, language switcher, hreflang). - Project scaffold (Astro 7, Tailwind v4, MDX, sitemap, RSS, astro-icon).