v0.62.0
What's Changed
- docs: document securing the Ajax data routes by @pentiminax in #251
- fix(security): restrict boolean toggle to mapped boolean fields (#237) by @pentiminax in #253
- Enforce authorization on AJAX mutation endpoints by @pentiminax in #252
- docs: document the Voter required for entity-level authorization by @pentiminax in #256
- Fix: allow string/UUID identifiers in AjaxEditRequestDto by @pentiminax in #258
- [Security] Add CSRF protection to delete and boolean-toggle endpoints by @pentiminax in #254
- Harden action names and stateless mutation UX by @pentiminax in #259
- Fix N+1 queries when rehydrating API rows in AjaxTemplateRenderController by @pentiminax in #261
- fix(security): derive Mercure topics server-side instead of trusting the client by @pentiminax in #255
- fix(query): remove unreachable InListSearchStrategy dead code by @pentiminax in #262
- fix: set type="button" on action buttons to prevent implicit form submit by @pentiminax in #263
- refactor(model): extract query pipeline and Mercure topic building (#247) by @pentiminax in #264
- fix(data-provider): use COUNT(DISTINCT) for filtered count to avoid to-many join inflation (#243) by @pentiminax in #266
- perf(data-provider): map array rows at most once (#242) by @pentiminax in #265
- test(data-provider): cover search + pagination boundary in ArrayDataP… by @pentiminax in #269
- refactor(query): delegate ContainsSearchStrategy to SearchPredicateFactory (#246) by @pentiminax in #268
- fix(mutation): map Doctrine flush failures to a structured 409 response (#244) by @pentiminax in #267
- Secure boolean toggles around registered DataTables by @pentiminax in #270
- feat(assets): add ColumnStyleAdapter for badge and switch chrome by @pentiminax in #271
Full Changelog: v0.61.0...v0.62.0