Skip to content

Releases: kpab/astro-keel

v0.2.0 — search, i18n, comments, and a verified 100

Choose a tag to compare

@kpab kpab released this 03 Aug 06:14

The first release since the initial cut, and a large one — search, pagination, generated OG images, view transitions, opt-in comments, and localizable UI strings.

Because Astro Keel is a template, upgrading means porting the changes you want into your own copy. Every entry below names the files it touches.

Live demo: https://kpab.github.io/astro-keel/

Added

  • Static search at /search, powered by Pagefind and indexed at build time via a postbuild script — zero backend.
  • Pagination on the blog index and tag archives, 10 posts per page (src/components/Pagination.astro).
  • Auto-generated Open Graph images for every post and work, rendered at build time with satori + sharp (src/pages/og/[collection]/[slug].png.ts).
  • Reading time on blog posts, via a remark plugin (remark-reading-time.mjs).
  • View Transitions<ClientRouter /> for soft navigation, with the theme toggle, Pagefind, and code-copy buttons re-initialized on astro:page-load / astro:after-swap.
  • Localizable UI strings — every string the theme renders comes from a typed dictionary in src/i18n/, selected by a new SITE.locale. One line also drives <html lang>, og:locale, Intl date formatting, and the RSS <language> element. en and ja ship with the theme.
  • Optional Giscus comments on blog posts (GISCUS in src/consts.ts), off by default — a disabled build emits no Giscus markup, styles, or script at all. When enabled it lazy-loads, follows the light/dark toggle live, and falls back to a Discussions link if the embed never appears.
  • JSON-LD structured dataWebSite on the home page, BlogPosting + BreadcrumbList on posts.
  • Copy buttons on code blocks, previous / next post navigation, and a related posts section matched on shared tags.
  • Configurable social links in the footer via SOCIAL_LINKS, rendered as inline SVG icons.
  • Custom 404 page, sticky top bar on scroll, a default OG image, work thumbnails, and a hero image for the sample posts.
  • Community health files — issue forms, a pull request template, CONTRIBUTING.md, and a changelog.

Changed

  • minutesRead is now a number, not a preformatted "3 min read" string. If you read remarkPluginFrontmatter.minutesRead in a template of your own, route it through the readingTime() helper in src/i18n/. The Content Layer caches rendered frontmatter, so delete node_modules/.astro/ once after upgrading — clearing the repo-root .astro/ is not enough.
  • Site identity is centralized in src/consts.ts; content images recompressed; README rewritten with a badge header and light/dark previews.

Fixed

  • Filled buttons now pass WCAG AA in dark mode. The dark-scheme accent is light, so near-white label text only reached a 2.53:1 contrast ratio. A new per-scheme --color-on-accent token fixes it — every demo page now scores 100 / 100 / 100 / 100 in Lighthouse.
  • Mobile theme-toggle placement, section padding behind the works list and about ledger, and hero sizing so the call to action stays above the fold.

Getting started:

npm create astro@latest -- --template kpab/astro-keel

Full changelog: https://github.com/kpab/astro-keel/blob/main/CHANGELOG.md#020---2026-08-03
Diff: v0.1.0...v0.2.0

v0.1.0 — initial release

Choose a tag to compare

@kpab kpab released this 03 Aug 04:35

Initial release of Astro Keel — a minimal, neutral, and modern portfolio + blog theme for Astro 7.

Added

  • Astro 7 project with MDX, @astrojs/sitemap, and @astrojs/rss.
  • works and blog content collections on the Content Layer API, with listing and detail pages for each.
  • Per-tag blog archives at /blog/tags/[tag].
  • RSS feed at /rss.xml.
  • Structural-minimalist design system: OKLCH theme tokens, a single --color-accent variable, and self-hosted Fraunces / Public Sans / JetBrains Mono via @fontsource.
  • Light and dark mode honoring prefers-color-scheme, with a header toggle persisted to localStorage and no flash on load.
  • Shiki dual themes emitted as CSS variables so highlighting follows the active color scheme.
  • Canonical URLs, Open Graph, and Twitter card meta in the base layout.
  • Base-path-aware internal links through withBase() (src/lib/url.ts).
  • GitHub Pages deployment workflow (.github/workflows/deploy.yml), building on Node 22.
  • npm run check (astro check) wired up, MIT license, and the theme README.

Getting started

npm create astro@latest -- --template kpab/astro-keel

Live demo: https://kpab.github.io/astro-keel/


Full changelog: https://github.com/kpab/astro-keel/blob/main/CHANGELOG.md