Skip to content

Releases: DimwitLabs/ode

v1.5.0

06 Mar 16:25
e240da1

Choose a tag to compare

Added

  • Configurable pagination parameters via reader.pagination in config.yaml with columnWidth, columnHeight, lineHeight, avgCharWidth, and safetyMargin options.

Changed

  • Breaking: Rewrote pagination algorithm from line-based to character-based for more accurate page breaks.
  • CSS columns now allow content to break inside blocks (break-inside: auto) for natural text flow.
  • Theme scale overrides (ui.theme.overrides.font.scale) now affect pagination calculations.

Fixed

  • Theme config path now correctly reads ui.theme.preset instead of top-level theme.
  • Reader mode no longer overflows or cuts off content at column boundaries.
  • Blockquotes and lists split mid-content when needed instead of jumping entirely to next column.
  • Body of Work page now appears on first deploy when using a custom slug.

v1.4.6

06 Mar 10:18
994a04a

Choose a tag to compare

Added

  • Configurable characters per page in reader mode via reader.charsPerPage in config.yaml. Users may not need to change this at all. But the idea is to keep it configurable in case there are some visual artifacts in the reader mode. This is responsible for splitting the pages for the reader mode. (#25)

Fixed

  • Reader mode now correctly paginates lists, code blocks, and blockquotes instead of truncating them mid-element. (#24)
  • Body of Work page now appears on first deploy when using a custom slug; reliably. (#23)

v1.4.5

05 Mar 08:23

Choose a tag to compare

Fixed

  • Category names with spaces now display correctly in reader mode header instead of showing URL-encoded values like %20. (#21)

v1.4.4

28 Feb 10:29

Choose a tag to compare

Added

v1.4.3

27 Feb 21:33

Choose a tag to compare

Changed

  • Ode will now move from DeepanshKhurana/ode to DimwitLabs/ode. Please ensure you update your docker-compose.yml for the new url which will be under ghcr.io/dimwitlabs/ode:<tag>. This version functionally changes nothing except this information. v1.4.4 is planned to be from the new url. In that case, ghcr.io/deepanshkhurana/ode:latest will point to v1.4.3 while ghcr.io/dimwitlabs/ode:latest will continue to get updates.

v1.4.2

27 Feb 11:36

Choose a tag to compare

Changed

  • OG images now generate asynchronously in background after build completes, allowing site to start serving immediately.

Fixed

  • Cache headers for dynamic content (config.yaml, content/, generated/index/, feed.xml) in nginx and Vercel configs.
  • RSS feed now correctly handles date-only entries with local timezone.
  • Sidebar piece count now reflects actual count from pieces.json.

v1.4.1

26 Feb 00:48

Choose a tag to compare

Added

  • Configurable Body of Work page: bodyOfWork.title and bodyOfWork.slug fields in config.yaml.

Fixed

  • 502 error page now correctly uses theme from ui.theme.preset instead of defaulting to journal.
  • Deployment script now polls host filesystem for 502 page instead of waiting for container build.

v1.4.0

25 Feb 23:53

Choose a tag to compare

Added

Metadata (#14)

  • Social card preview system with OG image generation using satori and @resvg/resvg-js.
  • Pre-rendered meta pages for bots (WhatsApp, LinkedIn, Twitter, Facebook, etc.) with full og:* and twitter:* tags. Note that the tags work according to bot lists and would not be readily available on an online checker. However, curling the bots with a User-Agent e.g. curl -H "User-Agent: WhatsApp/2.0"... can be a good way to test. This works across nginx as well as Vercel. Configurations for both are provided in the repository as nginx/ and vercel.json.
  • Content-based meta descriptions: first 160 characters extracted from markdown content with formatting stripped.
  • Reader URL bot support: /reader/:collection?piece=:slug serves appropriate meta pages to bots. The page is selected to be the piece the reader is currently reading.
  • Custom bodyOfWork.description field in config.yaml for body-of-work page social preview.
  • nginx configuration templates in nginx/ directory with setup instructions.
  • OG images generated at 1200x630px with theme-specific styling.

502 Error Page for nginx (#19)

  • Themed 502 error page generation with customizable text via config.yaml's redeployPage section.
  • The theme respects all settings e.g. defaultMode, lowercase and overrides enabled in config.yaml.
  • 502 page served from persistent host location (survives container restarts).
  • Configuration settings are available in the nginx/ directory's base template.
Ode's 502 error page template

Here's what it looks like for my own site, fully customised. No more ugly 502 pages!

Changed

  • Improved GitHub Actions deployment documentation in WRITING.md with SSH key setup guide. (#18)

Fixed

  • Numeric values in config.yaml (e.g., 404) now handled correctly. (#17)

Removed

  • react-helmet dependency (using React 19 native meta tags).

v1.2.9

21 Feb 20:38
1b7246a

Choose a tag to compare

Changed

  • Moved auto-generated files to public/generated/ subdirectory for cleaner structure.

v1.2.8

20 Feb 09:12

Choose a tag to compare

Fixed

  • Duplicate meta tags in <head> caused by hardcoded tags in index.html conflicting with dynamically added tags from Layout.jsx and react-helmet in Header.jsx.