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

.
feat(collections): add admin CRUD for collections
First admin increment of the collections module.

- Routes /admin/collections[...] guarded by rights >= 9, wired in the module's
own routes.php.
- CollectionsAdminController: paginated list with success flash, create/edit
form, store (CSRF, code format/required validation, code uniqueness), and
delete confirmation (FK cascade removes fields, sections, items, values).
- List/Save/DeleteCollectionUseCase, CollectionFormDTO/CollectionListItemDTO,
CollectionCodeAlreadyExistsException; repository gains create/update/delete
(update via model save to apply the settings cast).
- Admin templates (escape on output) and a Collections entry in the admin
sidebar menu.
- Exclude Application DTO/Exceptions from service autoload; use case tests.
.
feat(collections): add content collections module with EAV query core
Universal 'sections + items' storage with a single
query API over any collection.

- Schema: 5 tables (collections, collection_fields, collection_sections,
collection_items, collection_item_values) via Installer, plus demo Blog data.
- Domain: Eloquent models, FieldType/FilterOperator/SortDirection enums,
repository interfaces, immutable ContentCollectionItemQuery with typed
FieldFilterDTO/OrderByDTO.
- Infrastructure: repositories + ContentCollectionItemQueryCompiler applying
EAV filters (whereExists) and ordering (correlated sub-select) with
allowlisted base columns and enum-only operators/directions.
- Read model: ContentCollectionItem::getValuesMap() maps field code to cast
value (multiple fields as sort-ordered arrays) from eager-loaded values.
- Register module (composer PSR-4, modules.global, phpunit source).
- Tests run on in-memory SQLite via new Tests\Support\BootsInMemoryDatabase.
.
fix(downloads): avoid undefined sort session keys in category list
.
fix(view): handle malformed request URI in admin path detection
.
fix(redirect): disable timestamps on Ads model to fix click counter update
.
chore: change cms version
.
fix(profile): prevent admins from resetting their own rights on self-edit
The edit form does not render the rights field for self-edit, so on POST the field defaulted to 0 and silently demoted the editing admin. Skip updating rights when editing own profile.
.
New translations library.pot (Russian)
[ci skip]
.
New translations downloads.pot (Russian)
[ci skip]
.
New translations album.pot (Russian)
[ci skip]