История коммитов

.
docs: update documentation submodule (pagination guide)
.
docs: update changelog
.
fix(admin): invalidate container cache after settings update (#252)
.
test(guestbook): add unit tests for module use cases, access and forms
.
docs(agents): add pagination usage guidelines
.
refactor(guestbook): extract user stats update to repository
.
feat: add new pagination component and migrate guestbook to it
.
refactor(guestbook): migrate to use case architecture
- fix TypeError: nullable manage URLs in GuestbookEntryMetaDTO
- enforce manage access server-side: edit/delete/reply check author rights (403)
- unify mode/access checks in GuestbookMode and GuestbookAccess, drop GuestbookService
- add use cases: create, edit, reply, delete, clear + context/ensure-access guards
- move all data access to GuestbookEntryRepositoryInterface, add ClearGuestbookPeriod enum
- extract text formatting from model to GuestbookEntryTextFormatter (profile activity updated)
- use PageMeta for paginated titles, Session service instead of $_SESSION
- escape user text at output in templates instead of controllers
- log previously swallowed exceptions in captcha and attached files cleanup
.
refactor(admin): remove legacy dispatcher and dead code
All admin actions are migrated, so drop the legacy query-param front controller
(modules/admin/index.php), the includes/ directory, the catch-all admin.legacy
route, and the deprecated BaseAdminController (replaced by AdminControllerContext).
Removes the dead mail/index dispatcher entries. Trailing-slash links keep working
via the global rtrim in the front controller.
.
refactor(admin): migrate file integrity scanner to new architecture
Move the antispy file integrity scanner to FileIntegrityController (rights>=9
super-group) at /admin/file-integrity (menu, GET scan, GET snapshot confirm +
POST create). Extract the CRC32 snapshot/scan logic into CrcFileIntegrityScanner
behind FileIntegrityScannerInterface; add Scan/CreateSnapshot use cases and a
result DTO. Snapshot creation is POST + CSRF with a PRG redirect. Remove
includes/antispy.php and the dispatcher entry; point both sidebars at
/admin/file-integrity.