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

.
refactor(notifications): migrate to layered architecture
- Add controllers: IndexController, SettingsController, ClearController
- Add use cases: GetNotificationListUseCase, SaveSettingsUseCase, ClearNotificationsUseCase
- Add NotificationRepositoryInterface and EloquentNotificationRepository
- Add AuthorizedUserMiddleware; replace legacy user check in routes
- Replace legacy catch-all route with clean URLs: /notifications/, /notifications/settings/, /notifications/clear/
- Migrate Installer to src/Install/ with updated namespace
- Add config/services.php with DI wiring and Counters class alias
- Update templates: remove layout args, add output escaping
- Fix guestbook_comment → guestbook_comments counter key bug
- Remove legacy index.php and includes/
.
chore(downloads): update changelog
.
feat(downloads): implement slug-based URLs
- Slug paths for categories: /downloads/{slug}/ and /downloads/{parent}/{child}/
- Slug paths for files: /downloads/{cat-path}/{slug}-{id}/
- 301 redirects from legacy ?id= query URLs to slug URLs
- New services: DownloadCategoryPathService, DownloadFilePathService, DownloadSlugService, DownloadLegacyRedirectResolver
- New controllers: DownloadPathController (catch-all router), DownloadCategoryController
- Installer updated: slug column + unique(refid, slug) constraint on both tables
- Data converter: install/downloads_slug_converter.php for existing installations
- All admin controllers and templates updated to use slug URLs (no old ?id= or /files/{id}/ links remain)
.
chore(library): update changelog and clean up installer
.
feat(library): implement slug-based URLs
- Add slug columns to library_cats (unique parent+slug) and library_texts
- Add LibraryCategoryPathService and LibraryArticlePathService for path resolution
- Add LibrarySlugService for unique slug generation
- Add LibraryPathController as catch-all dispatcher (mirrors ForumPathController)
- Replace /library/section/{id} and /library/article/{id} routes with /library/{path}
- Update all controllers, templates, and LegacyRedirectHandler to use slug URLs
- Add install/library_slug_converter.php to regenerate slugs from names
.
Merge remote-tracking branch 'origin/9.x' into 9.x
# Conflicts:
# composer.json
.
refactor(rss): remove unused rss module
.
refactor(redirect): migrate to layered architecture
.
refactor(registration): migrate to controller architecture
Split into RegistrationController and ConfirmEmailController.
Extracted user creation and email sending into RegisterUserUseCase.
Added RegistrationFormDTO for passing validated form data.
Email confirmation now uses clean URL /registration/confirm-email.
.
refactor(login): migrate to controller architecture with use cases
Split login/logout into separate controllers and routes (/login, /logout).
Extracted login business logic into PerformLoginUseCase returning LoginResultDTO.
Added LoginStatus enum for match-based controller dispatch.
Updated logout links in both themes to /logout.