Release Notes

Introduction

This page documents each release of ReeWeb. For a timeline view of project milestones, see the Changelog.

ReeWeb uses calendar versioning, Ubuntu-style. A release is YY.MM.N - two-digit year, two-digit month, and the release number within that month. 26.07.1 is the first release shipped in July 2026. The version tells you when a release shipped, not what kind of change it carries. The shape:

  • Month releases - the first release of a new month is a feature release. It may carry a breaking change, always documented in this entry. Read it before upgrading across months.
  • Point releases - later releases within the same month are bug fixes and documentation only. Always safe to upgrade in place.

26.07 - Current

The first release of ReeWeb under calendar versioning.

Included

  • .ree template engine - custom template engine with output tags ({= }, {~ }), control flow ({#if}, {#each}, {#with}), layouts ({#layout}), includes ({#include}), and components via ReeTags. Translation-lookup tags {_ } / {- } / {@ } read from translation namespaces ({@ } renders the value through markdown).
  • Multi-language support - per-language translation files with cross-language fallback, language-prefixed URLs, hreflang links
  • Localized routes - translate URL paths per language via route_name in translation JSON, with Unicode slugification
  • Markdown rendering - server-side rendering via Bun.markdown.html() with frontmatter, syntax highlighting (highlight.js), auto-generated heading IDs, Tailwind class injection
  • Tailwind CSS v4 - standalone CLI with @theme customisation, watch mode for development
  • Static site generation - scripts/ssg.ts renders templates + markdown to static HTML with redirect support
  • Dev server - scripts/dev.ts with live reload via WebSocket, file watching, multi-language routing
  • Redirect system - schema-validated redirects from config/redirects.ts, emitted as _redirects (Cloudflare format) + HTML stubs
  • Sitemap & RSS - scripts/generate_sitemap.ts and scripts/generate_rss.ts for SEO and blog feeds
  • Component system - custom HTML element auto-discovery resolves <my-component> to components/my-component.ree
  • Content collections - lib/collect_records.ts for collecting, filtering, sorting, and paginating markdown records by route. Optional Zod schema validation via _schema.ts files.
  • Pagination - config/pagination.ts with configurable routes, markdown/loader-backed record sources, window-based page navigation, and <full-pagination> / <simple-pagination> components.
  • Content visibility - lib/content_visibility.ts with a five-channel visibility model (render, list, feed, sitemap, index). Draft or unpublished-at-date pages are generated but hidden from every aggregation and marked noindex.
  • Project hooks - lib/hooks.ts with typed ProjectHooks for extending scripts without modifying them: helper functions, page data extras, SEO localization, markdown layout resolution, and content visibility.
  • Data loading - sibling .ts files export load_template_data() for injecting dynamic data during static site generation
  • Props convention - all template data accessed via props.xxx, ReeTag attributes grouped under props.attributes, ...rest spread shorthand
  • Zero runtime dependencies - only dev dependencies (Tailwind CSS v4, tailwind-merge, @types/bun)

Known limitations

  • Search is not yet implemented (search modal is a placeholder)
  • No plugin system - template engine extensions require editing source files directly
  • No visual editor - templates are hand-authored