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.0] — 2026-03-13

First stable release. The core API and template conventions are now considered stable.

Added

  • requestMethod template 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 templatesHtmlResponseHelper.renderErrorPage() now looks for
    templates/errors/{statusCode}.html before falling back to the generic templates/error.html.
    Example 404 page added to the product-catalog example at templates/errors/404.html.

  • MongoDB count caching — Count results for estimatedDocumentCount(), countDocuments(),
    listDatabaseNames(), and listCollectionNames() 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 with requestMethod.

Changed

  • Version bumped from 0.2.0-SNAPSHOT to 1.0.0 in pom.xml and core/pom.xml.
  • requestMethod variable 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-Reselect gap documented as known limitation

Changed

  • Template resolver refactored to PathBasedTemplateResolver with full hierarchical fallback
  • MongoHtmlResponseHandler enriches documents with _id metadata 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-Target header
  • 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-Reselect response header not implemented (minor HTMX gap)
  • JsonHtmlResponseHandler loads 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)