Releases: DimwitLabs/ode
Releases · DimwitLabs/ode
v1.5.0
Added
- Configurable pagination parameters via
reader.paginationinconfig.yamlwithcolumnWidth,columnHeight,lineHeight,avgCharWidth, andsafetyMarginoptions.
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.presetinstead of top-leveltheme. - 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
Added
- Configurable characters per page in reader mode via
reader.charsPerPageinconfig.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
v1.4.5
v1.4.4
Added
- SHOWCASE.md which also pushes it to the documentation at docs.ode.dimwit.me/showcase
v1.4.3
Changed
- Ode will now move from DeepanshKhurana/ode to DimwitLabs/ode. Please ensure you update your
docker-compose.ymlfor the new url which will be underghcr.io/dimwitlabs/ode:<tag>. This version functionally changes nothing except this information.v1.4.4is planned to be from the new url. In that case,ghcr.io/deepanshkhurana/ode:latestwill point tov1.4.3whileghcr.io/dimwitlabs/ode:latestwill continue to get updates.
v1.4.2
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
Added
- Configurable Body of Work page:
bodyOfWork.titleandbodyOfWork.slugfields inconfig.yaml.
Fixed
- 502 error page now correctly uses theme from
ui.theme.presetinstead of defaulting tojournal. - Deployment script now polls host filesystem for 502 page instead of waiting for container build.
v1.4.0
Added
Metadata (#14)
- Social card preview system with OG image generation using
satoriand@resvg/resvg-js. - Pre-rendered meta pages for bots (WhatsApp, LinkedIn, Twitter, Facebook, etc.) with full
og:*andtwitter:*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 aUser-Agente.g.curl -H "User-Agent: WhatsApp/2.0"...can be a good way to test. This works acrossnginxas well asVercel. Configurations for both are provided in the repository asnginx/andvercel.json. - Content-based meta descriptions: first 160 characters extracted from markdown content with formatting stripped.
- Reader URL bot support:
/reader/:collection?piece=:slugserves appropriate meta pages to bots. The page is selected to be the piece the reader is currently reading. - Custom
bodyOfWork.descriptionfield inconfig.yamlforbody-of-workpage social preview. nginxconfiguration templates innginx/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'sredeployPagesection. - The theme respects all settings e.g.
defaultMode,lowercaseand overrides enabled inconfig.yaml. - 502 page served from persistent host location (survives container restarts).
- Configuration settings are available in the
nginx/directory's base 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.mdwith SSH key setup guide. (#18)
Fixed
- Numeric values in
config.yaml(e.g.,404) now handled correctly. (#17)
Removed
react-helmetdependency (using React 19 native meta tags).
v1.2.9
Changed
- Moved auto-generated files to
public/generated/subdirectory for cleaner structure.
v1.2.8
Fixed
- Duplicate meta tags in
<head>caused by hardcoded tags inindex.htmlconflicting with dynamically added tags fromLayout.jsxandreact-helmetinHeader.jsx.