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

.
refactor(downloads): extract DeleteCategoryController with clean URL route
Replaces legacy ?act=folder_delete include with DeleteCategoryController
at /downloads/categories/{id}/delete. Extracts DeleteCategoryUseCase
for domain logic. Adds folder name to the confirmation page.
.
refactor(downloads): extract EditCategoryController with clean URL route
Replaces legacy ?act=folder_edit include with EditCategoryController
at /downloads/categories/{id}/edit. Fixes boolean concatenation bug
in extension validation and uses Eloquent for sort swap logic.
.
refactor(downloads): extract CreateCategoryController with clean URL route
Replaces legacy ?act=folder_add include with CreateCategoryController
at /downloads/categories/create. Adds $fillable to DownloadCategory model.
.
refactor(downloads): extract FilesModerationController with clean URL route
Replaces legacy ?act=mod_files include with FilesModerationController
at /downloads/moderation. Updates notification and counter links.
.
refactor(downloads): extract ImportFileController with clean URL route
Replaces legacy ?act=import include with ImportFileController at
/downloads/import/{id}. Improves URL validation to allow https and
adds SSRF protection by blocking private/reserved IP ranges.
.
refactor(downloads): extract MoveFileController with clean URL route
Replace legacy ?act=transfer_file with /downloads/move-file/{id}.
Extract MoveFileUseCase for file relocation logic.
.
refactor(downloads): extract AdditionalFilesController with clean URL route
Replace legacy ?act=files_more with /downloads/additional-files/{id}.
Add $fillable to DownloadMoreFile model.
.
refactor(downloads): extract EditScreenController and add breadcrumbs
Replace legacy ?act=edit_screen with /downloads/edit-screen/{id} admin route.
Add NavChain breadcrumbs to DeleteFileController and EditFileController.
.
refactor(downloads): extract EditFileController with clean URL route
Replace legacy ?act=edit_file with /downloads/edit-file/{id} admin route.
.
refactor(downloads): extract DeleteFileUseCase from DeleteFileController
Move file deletion logic (screens, more files, bookmarks, comments,
category counters) into a dedicated use case accepting file id.