Facet Changelog - Version History
Release notes and version history
All notable changes to this project are documented here.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.0.2] — 2026-08-11
Added
-
JavaScript server-side plugins — Custom backend logic in JavaScript (or TypeScript) via GraalVM.
Add computed endpoints, data aggregations, and request/response interceptors without Java.
Hot-reload on next request. See the JavaScript Plugins guide. -
JavaScript plugin integration tests —
JsPluginsITvalidates JS plugin loading and
request-logger interceptor with HTMX-driven verification.
Changed
- RESTHeart commons updated from 9.5.2 to 9.7.2 (compatible with RESTHeart 9.7).
- Pebble updated from 4.1.1 to 4.1.2.
- Maven plugin versions now managed as properties in the parent POM:
maven-compiler-plugin3.15.0,maven-surefire-plugin3.5.6,maven-failsafe-plugin3.5.6,
maven-dependency-plugin3.11.0,maven-assembly-plugin3.8.0,versions-maven-plugin2.21.0. - Dockerfile base image updated to RESTHeart 9.7.
Fixed
update-dependencies.shimproved with better version control logic.
[1.0.1] — 2026-03-19
Fixed
- Bypass HTML interception for SSE
event-streamrequests (#8). - Allow
setversion.shto run frommasterandrelease/*branches. - Update
restheart.versionto 9.2.0 in POM.
Added
- OpenWiki documentation — Architecture, HTMX integration, operations, quickstart, template
system, and testing guides now live in the repository underopenwiki/. update-dependencies.sh— Script to update project dependencies using Maven Versions Plugin.- Polyglot extensibility documented in README (GraalVM support).
Changed
- README rewritten for clarity on Facet as a RESTHeart plugin with server-rendered HTML.
- CI workflows updated to latest GitHub Actions versions.
- Documentation consolidated: detailed guides moved to OpenWiki and the project website.
[1.0.0] — 2026-03-13
First stable release. The core API and template conventions are now considered stable.
Added
-
requestMethodtemplate variable — All templates now receive the HTTP method of the current
request (GET,POST,PATCH,DELETE,PUT,HEAD,OPTIONS,OTHER). Enables
conditional rendering for post-mutation feedback (e.g., showing "Created successfully!" after POST). -
Per-status-code error templates —
HtmlResponseHelper.renderErrorPage()now looks for
templates/errors/{statusCode}.htmlbefore falling back to the generictemplates/error.html.
Example 404 page added to the product-catalog example attemplates/errors/404.html. -
MongoDB count caching — Count results for
estimatedDocumentCount(),countDocuments(),
listDatabaseNames(), andlistCollectionNames()are cached with a 5-second TTL.
Eliminates extra MongoDB round-trips per rendered page. -
JUnit 5 test suite — 67 tests covering template resolution, HTMX header parsing,
authentication context building, and HTMX response helpers. -
"Handling Mutations" section in Developer's Guide — Documents three patterns for
responding to form submissions and API mutations: HTMX Fragment Swap (recommended),
Post-Redirect-Get, and inline response withrequestMethod.
Changed
- Version bumped from
0.2.0-SNAPSHOTto1.0.0inpom.xmlandcore/pom.xml. requestMethodvariable documented in Template Context Reference.
[0.2.0] — 2026-01
Added
- Parametric mongo-mount support and multi-tenant context (
tenantId,isMultiTenant,hostParams) - Custom Pebble filters:
stripTrailingSlash,buildPath,parentPath,toJson - HTMX strict mode: missing fragment template returns 500 to surface errors early
- CRUD example in product-catalog with HTMX-powered edit forms
HX-Reselectgap documented as known limitation
Changed
- Template resolver refactored to
PathBasedTemplateResolverwith full hierarchical fallback MongoHtmlResponseHandlerenriches documents with_idmetadata for URL generation
[0.1.0] — 2025
Initial release.
Added
- Core interceptor architecture (
HtmlResponseInterceptor,HtmlErrorResponseInterceptor,HtmlAuthRedirectInterceptor) - Path-based template resolution with hierarchical fallback
- Pebble template engine integration
- HTMX fragment resolution via
HX-Targetheader - MongoDB response handler with pagination
- ETag-based response caching
- Product-catalog example with Pico CSS
Known Limitations (Future Work)
These issues exist but are not blocking for 1.0.0:
HX-Reselectresponse header not implemented (minor HTMX gap)JsonHtmlResponseHandlerloads full response into memory (no streaming)- MongoDB operation timeout handling not configurable
- Thread pool size not configurable in
PebbleTemplateProcessor - Redirect query param name (
?redirect=) not configurable - Count cache TTL is hardcoded at 5 seconds (not runtime-configurable per handler)