All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
First stable release. The core API and template conventions are now considered stable.
-
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 fortemplates/errors/{statusCode}.htmlbefore falling back to the generictemplates/error.html. AddedPathBasedTemplateResolver.resolveError()to support this lookup. Example 404 page added to the product-catalog example attemplates/errors/404.html. -
MongoDB count caching —
MongoHtmlResponseHandlernow caches the results ofestimatedDocumentCount(),countDocuments(),listDatabaseNames(), andlistCollectionNames()with a 5-second TTL using aConcurrentHashMap<String, CacheEntry>. Eliminates one or more extra MongoDB round-trips per rendered page. Cache hits are logged at DEBUG level. -
JUnit 5 test suite — Added
junit-jupiter5.14.3 andmockito-core5.23.0 (withbyte-buddy1.18.7-jdk5 for Java 25 support). New test classes:PathBasedTemplateResolverTest— 29 tests covering collection, document, fragment, and error template resolution, including all hierarchical fallback branches.HtmxRequestDetectorTest— 14 tests covering HTMX header parsing andisTargeting().TemplateContextBuilderTest— 12 tests covering auth variables,requestMethod, and context merging.HtmxResponseHelperTest— 12 tests covering all HTMX response header methods.
-
"Handling Mutations" section in DEVELOPERS_GUIDE.md — Documents three patterns for responding to form submissions and API mutations: HTMX Fragment Swap (recommended), Post-Redirect-Get, and inline response with
requestMethod.
-
Version bumped from
0.2.0-SNAPSHOTto1.0.0inpom.xmlandcore/pom.xml. -
DEVELOPERS_GUIDE.md — Version updated to
1.0.0, date updated to2026-03-13. -
README.md — Maven/Gradle coordinates updated from
RELEASE_VERSIONplaceholder to1.0.0. -
TEMPLATE_CONTEXT_REFERENCE.md —
requestMethodvariable documented in Authentication Context section.
- 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
- Template resolver refactored to
PathBasedTemplateResolverwith full hierarchical fallback MongoHtmlResponseHandlerenriches documents with_idmetadata for URL generation
Initial release.
- 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
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)