Changelog

Introduction

This page is the time-ordered journal of significant project moments - releases, public announcements, doc reorganisations, ecosystem milestones. It complements the version-organised Release Notes, which is the canonical reference for what changed in each version. Use this page when you want a "what's been happening lately" view; use Release Notes when you want to know what's in a specific version.

Entries are reverse-chronological - newest first. Each entry has a date, a one-line headline, and a short paragraph of context.

June 2026

2026-06-23 - Pagination, content visibility, hooks system & scripts restructuring

A major engine update bringing content collections, per-page visibility control, project hooks, pagination, and a modular scripts architecture.

  • Pagination - A new pagination system (config/pagination.ts) with configurable routes, markdown and loader-backed record sources, window-based page navigation, and shipped <full-pagination> / <simple-pagination> components.
  • Content visibility - New lib/content_visibility.ts with a five-channel visibility model (render, list, feed, sitemap, index). Pages can be draft, invisible, or published across any subset of channels without auth - unpublished pages are built but hidden from every aggregation and marked noindex.
  • Content collection - New lib/collect_records.ts for collecting, filtering, sorting, and paginating markdown records by route, with nested-folder support.
  • Hooks system - New lib/hooks.ts + src/lib/project_hooks.ts extension points. Scripts call typed hooks at fixed points (helper functions, page data extras, SEO localization, markdown layout resolution, content visibility), and each project supplies its own implementation. All hooks are optional.
  • Scripts restructuring - scripts/ssg.ts and scripts/dev.ts split into focused subdirectory modules (scripts/ssg/*.ts, scripts/dev/*.ts) with a thin entry point, mirroring the template engine's modular architecture.
  • Soft launch languages - New soft_launch_languages config allows building languages that are excluded from sitemaps, feeds, hreflang links, and language chooser until ready.
  • Project setup - The early interactive bootstrap was later consolidated into bun reeweb:install, the single setup command for a new ReeWeb project.
  • oxfmt removed - Formatting is now handled entirely by reettier; oxfmt config and dependency removed.

2026-06-17 - Modular template engine (shared with Reepolee)

Adopted Reepolee's modular template engine so both projects build on one identical codebase. The monolithic lib/template_engine.ts was split into a thin orchestrator plus focused modules (template/compiler.ts, template/custom_elements.ts, template/include_handler.ts, template/include_resolver.ts, template/types.ts).

Behaviour changes:

  • Attribute interpolation added - attr="{= expr }" is evaluated where the tag sits and delivered under props.attributes.
  • {#with expr }...{/with} added - opens a with-scope for unqualified member access.
  • HTML comments are stripped during static site generation before compilation.
  • {#if} is resilient at render time - a condition that throws is caught and treated as falsy.
  • ReeTags compile their slot inline (shared scope) instead of via an isolated slot function.

May 2026

2026-05-29 - Template data rename, attribute handling & spread shorthand

Template data references renamed from data. prefix to props. for clarity (render(name, data)render(name, props)). Custom element HTML attributes are now grouped under props.attributes instead of being spread directly on the props object. The key_values() helper wraps values in double quotes, fixing broken rendering for attributes with spaces. Bare ...identifier in template output is automatically converted to {~ key_values(identifier)} - a shorthand for spreading an object of HTML attributes onto an element.

2026-05-12 - Documentation restructure

The documentation site was reorganised end-to-end into top-level sections.

How This Page Works

Three rules for what goes here:

  • Releases of ReeWeb and the VSCode extension.
  • Significant docs changes - restructures, new tutorial sections, deprecated pages.
  • Ecosystem moments - talks given, blog posts about ReeWeb, third-party projects that integrate.

Bug fixes, internal refactors, and individual blog posts don't make the cut.

Contributing an Entry

If you've built something with ReeWeb that's worth a mention here - a public project, a third-party integration, a library that pairs well - open a PR against this page or send a note via GitHub Discussions. We're happy to surface community work; the only filter is "would another ReeWeb user benefit from knowing this exists."