|
3 | 3 |
|
4 | 4 | ## Unreleased |
5 | 5 |
|
| 6 | +## 1.9.1 (2026-08-12) |
| 7 | + |
| 8 | +### Changed |
| 9 | + |
| 10 | +- **Documentation**: Reworked the README and guides for direct setup and usage |
| 11 | + instructions. Corrected the security boundary, cooperative-cancellation |
| 12 | + limits, template-store behavior, and loop-modifier compatibility notes. |
| 13 | + |
| 14 | +### Fixed |
| 15 | + |
| 16 | +- **Writer Errors**: `FRender` and `ParseAndFRender` now return final buffered |
| 17 | + writer failures instead of panicking. Wrapped errors support `errors.Is`. |
| 18 | +- **Strict Variables**: Strict mode now distinguishes missing variables and |
| 19 | + properties from valid `nil` literals and bound `nil` values. |
| 20 | +- **Nested Includes**: Relative paths in nested includes now resolve from the |
| 21 | + included file instead of the original root template. |
| 22 | +- **Value Safety**: Prevented panics when templates compare maps, access |
| 23 | + unexported struct fields, use incompatible map property keys, or pass `nil` |
| 24 | + through `uniq`. |
| 25 | +- **Delimiters**: Empty custom delimiter arguments now select their documented |
| 26 | + defaults. Whitespace control also works with delimiters of any length. |
| 27 | +- **Standard Filters**: Corrected Unicode and downcasing behavior in |
| 28 | + `capitalize`, short-length behavior in `truncate`, and exact-count behavior |
| 29 | + in `truncatewords`. |
| 30 | +- **Jekyll Assignments**: Nested assignment uses copy-on-write and no longer |
| 31 | + mutates maps supplied in the caller's bindings. |
| 32 | + |
| 33 | +### Security |
| 34 | + |
| 35 | +- **Template Paths**: The built-in `include` and `render` tags now reject |
| 36 | + absolute paths and paths that escape the source template's directory. |
| 37 | + `FileTemplateStore` confines reads to a configurable root and blocks symbolic |
| 38 | + link escapes. |
| 39 | + |
6 | 40 | ## 1.9.0 (2026-08-12) |
7 | 41 |
|
8 | 42 | ### Added |
|
0 commit comments