2025-09-06
- Added local Ehcache 3 (JCache) configuration and Spring Cache wiring for high‑value hot paths.
- Introduced sidByUsernamecache forAclSidlookups viaAclSidLookupService.
- Added micro‑TTL permissionDecisionscache forAclService.hasPermission(...)decisions.
- Reduced KMSSecureFieldAspectlogging to WARN by default in production settings.
- Included unit test for AclSidLookupServicecaching behavior.
2025-09-07
- Fix: LLM Chat SYSTEM principal crash
- Updated thorapiACL to handle non-UUID principals safely.
- ValkyrACL.resolveAuthenticatedPrincipalIdnow treats- SYSTEM/- anonymousUsercase-insensitively and only parses UUID-looking strings.
- Prevents Invalid UUID string: SYSTEMduring LLM chat secure-field reads when running as SYSTEM.
 
- Updated 
- Hardening: SystemSidInitializer idempotency
- Both thorapiandvalkyraiSystemSidInitializerset deterministic UUIDs and check by ID and name before saving.
- Prevents duplicate SYSTEM/ADMIN/EVERYONE/AUTHENTICATEDSIDs if both initializers are active.
 
- Both 
2025-09-08
- 
Fix: Replace javax.servlet with jakarta.servlet in OpenAPI templates - Updated apiDelegate.mustacheto usejakarta.servlet.http.HttpServletRequest.
- Updated modelTest.mustacheimports tojakarta.servlet.http.HttpServletRequest.
- Regenerated API code for valkyrai; compile errors referencingjavax.servlet.httpresolved.
- Added defensive null checks in ApiUtil.setExampleResponseand now passHttpServletResponseviaServletRequestAttributesto avoid NPE during example response rendering.
 
- Updated 
- 
Feature: Lightweight per-entity stats endpoint and secured repository convenience queries - Added derived Spring Data methods to every *PageableRepository:- count(),- countByOwnerId(UUID ownerId),- countByCreatedDateAfter(OffsetDateTime),- countByLastModifiedDateAfter(OffsetDateTime),- findTopByOrderByCreatedDateDesc()
 
- Added GET /v1/<Entity>/statsendpoint per API interface returning JSON stats:- count,- ownedCount,- createdLast24h,- modifiedLast24h,- latestCreatedAt
 
- Implemented in delegates with @PreAuthorize("hasRole('EVERYONE') or hasRole('ADMIN')")and user-scoped cache keys.
 
- Added derived Spring Data methods to every 
- 
Change: Relationship fetch based on requiredness - In generated JPA models, associations now use:
- fetch = EAGERwhen the property is- required
- fetch = LAZYwhen the property is optional
 
- For @ManyToOne,optionaland@JoinColumn(nullable=...)mirrorrequired.
- Keeps payloads lean while eagerly resolving mandatory links.
 
- In generated JPA models, associations now use:
- 
Fix: Stable JSON for Hibernate lazy proxies - Added jackson-datatype-hibernate5and configuredHibernate5Module.
- Disabled forced lazy loading; serialize identifiers for uninitialized proxies.
- Added Jackson mixins to ignore hibernateLazyInitializer/handleron proxies.
- Resolves ByteBuddy proxy serialization failures on Application.openAPISpec.
 
- Added 
- 
Feature: Pimped ExecModules (Email + Stripe) - Added comprehensive Javadoc for MailtrapSendModule,EmailModule, andStripeCheckoutModule(inputs, outputs, env, error codes).
- New docs page: Execution-Modules/stripe-module.mdxcovering setup and usage.
- UI: Palette icons now include Stripe via react-icons/si (SiStripe).
- UI: Palette fetch hardened to accept API responses as either ["Class"]or[{ className: "Class" }].
- UI: Module picker shows friendly names for Stripe and Email modules when nameis unset.
- Tests: Added StripeCheckoutModuleTestcovering input validation and error branches.
 
- Added comprehensive Javadoc for