Changelog

New releases, improvements, fixes and notable changes to Meridian.

1.0.0 — Initial public release

The first public release of Meridian — a print-editorial Ghost theme for news publications.

Homepage

  • Asymmetric responsive 3-column lead grid (secondary aside + hero + most-read rail with sticky newsletter CTA).
  • Editor's Picks horizontal scroll strip, populated from Ghost's native Featured flag (up to 8 posts).
  • Seven tag-driven section row layouts below the fold: #home-feature-package, #home-briefing, #home-briefing-carousel, #home-asymmetric-lead-list, #home-opinion-hedcut, #home-tag-columns, #home-standard-3-column-grid.
  • 18-post archive tail under the section band.
  • Optional Editor's note panel sourced from a Ghost page with slug editors-note.

Post page

  • Hero with custom-excerpt deck, visibility chip (Public / Free members / Paid / Subscribers only), and #breaking badge.
  • Action toolbar: Save / Comments / Reader controls / Share, with a sticky compact clone that takes over after the toolbar scrolls off.
  • Reading-progress indicator.
  • Drop-cap support via the #dropcap internal tag.
  • Tier-aware member CTA (signup → upgrade → hidden) with copy editable in Theme → Site wide.
  • Related coverage, recommendations, latest articles, from-this-writer, post navigation, Ghost-native comments.
  • Full-bleed band rendered above the footer on every page.
  • Editorial copy sourced from a Ghost page with slug membership-cta (eyebrow ← custom_excerpt, issue line ← meta_description, trial badge ← meta_title, headline + body ← page body).
  • Accent phrase in headline created by highlighting in Koenig (⌘+Option+H on Mac / Ctrl+Alt+H on Windows/Linux).
  • Pricing auto-fills from the cheapest active public paid tier; "save N%" line computed client-side, self-removes when there's no real savings.
  • Deleting or unpublishing the membership-cta page hides the band site-wide — admin opt-out.

Theme settings

  • 7 custom settings, all under Settings → Design & branding → Customize → Theme → Site wide: Color scheme, Background palette, Font heading, Font body, Dark mode logo, Member CTA headline, Member CTA body.

Typography

  • 11 self-hosted variable typefaces (Source Serif 4, Newsreader, Fraunces, Roboto Slab, Inter, Literata, EB Garamond, IBM Plex Sans, Public Sans, Charter, System Serif) + JetBrains Mono for code.
  • Conditional preload — only fonts in active use are preloaded; duplicate heading/body picks skip the duplicate preload.
  • Ghost's custom-font picker overrides the theme setting when set; falls back to Meridian's pick when empty.

Paper palettes

  • Four presets: Newsprint, Mist, Stone, Press.
  • Each preset pairs a light-mode and dark-mode value; body-text contrast clears WCAG AAA on every paper × scheme combination.

Reader controls

  • Text size (Small / Default / Large) and appearance (Light / Dark / System) in a masthead popover.
  • Persisted to localStorage (readingFontSize, theme) and synced across tabs.
  • Appearance picker hides when the admin locks the site to Light or Dark via the Color scheme setting.

Bookmarks

  • Local-only saved-articles feature backed by localStorage — no API key, no signup.
  • Save button on every post card and post hero; popover in the masthead utility row.
  • Dedicated /bookmarks/ page (requires a Ghost page with slug bookmarks).
  • Cross-tab sync via the storage event.
  • Primary horizontal section bar in the masthead with edge-fade overflow on mobile.
  • Secondary hamburger drawer + footer columns hydrate from Ghost's secondary navigation, using # (heading) and - (sub-item) prefix conventions.
  • Drawer slides from the right edge in RTL locales (Arabic, Hebrew, Persian, Urdu).
  • External URLs auto-gain an icon.
  • Native support for Facebook and X via Ghost's social-accounts settings.
  • 20+ additional platforms via a Code Injection snippet (Instagram, YouTube, LinkedIn, Bluesky, Mastodon, Substack, etc.).
  • Anchor-block form for per-link placement (footer, author, or both) and custom SVG fallback.

Print

  • @media print cover masthead, drop caps, and colophon footer with source URL + retrieval date.
  • Print button in the post toolbar triggers window.print() directly.

i18n

  • 183-key English locale shipped in en.json.
  • Full RTL support for ar, he, fa, ur.
  • yarn lint:i18n parity check between templates and locales/en.json.

Tech

  • Tailwind CSS v4 with design tokens in CSS variables.
  • Vite 8 build.
  • Alpine.js 3 + Alpine plugins (collapse, focus, intersect).
  • PhotoSwipe 5 (dynamic import — only loaded when Koenig galleries / image cards are present).
  • Self-hosted variable fonts via Fontsource packages.

Requirements

Requires Ghost ≥ 6.0.0. Node.js ≥ 22.12.0 and Yarn 1.x are only needed to build from source — site editors uploading meridian.zip directly do not need them installed.