[Improvements]
- PR #326 Make ttree totals references (GH #325)
- PR #332 Make truncate filter Character Entity Reference aware
- PR #333 Skip require for already-loaded Template::Plugin subclasses
[Bug Fixes]
- PR #323 Fix list.grep('0') never returns matches (GH #322)
- PR #334 Re-save compiled template to disk when source changes
- PR #337 Escape single quotes in html_filter and HTML.escape [CVE-2026-5090, 2026-05-19]
- PR #338 Assert plugin always throws on defined values (GH #300)
- PR #341 Throw Template::Exception with type 'while' on WHILE loop termination
- PR #342 Add explicit parentheses for operator precedence in Stash.pm
- PR #343 Remove redundant duplicate regex substitution in Plugins.pm
- PR #364 Quote interpolated filename in plugin error regex
- PR #365 Allow iteration of constant references (GH #207)
- PR #374 Fix blank error reported for template exception (GH #373)
- PR #375 Correct hash dereference on array ref in _assign() DEFAULT path
- PR #376 Use file path instead of undef $compiled in _load_compiled error
- PR #394 Throw proper exception for nonexistent methods in Scalar plugin
[Maintenance]
- PR #324 Fix missing closing tag in documentation
- PR #328 Grammar/spelling fix ("be thrown")
- PR #329 Document configuration
- PR #330 Typo fixes (dyanamic, relvant)
- PR #335 Add tests for grammar factory
- PR #336 Modernize GitHub Actions CI workflow
- PR #339 Add 127 unit tests for under-tested core modules
- PR #348 Add AI policy document
- PR #357 CI: pre-install XML deps without tests for Template::Plugin::XML CI (GH #356)
- PR #368 Remove stale TT3 promise from FAQ (GH #313)
- PR #369 Migrate Template::Test from manual TAP to Test::Builder (GH #301)
- PR #378 Add SECURITY.md (GH #331)
- PR #397 Add CLAUDE.md with rules for generated files and releases
- Update MANIFEST for current shipping policies