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.tswith 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 markednoindex. - Content collection - New
lib/collect_records.tsfor collecting, filtering, sorting, and paginating markdown records by route, with nested-folder support. - Hooks system - New
lib/hooks.ts+src/lib/project_hooks.tsextension 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.tsandscripts/dev.tssplit 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_languagesconfig 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 underprops.attributes. {#with expr }...{/with}added - opens awith-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."