# Proposal ## Why Автобложка «первое фото» была специфицирована, но потерялась при рефакторинге media-objects: при загрузке обложка больше не назначается, поэтому большинство альбомов (в т.ч. семенные) остаются без обложки. Дополнительно нужно довести жизненный цикл обложки: снимать её, когда фото-обложка покидает альбом, и сделать явный сброс предсказуемым. ## What Changes - **Обложка по умолчанию при загрузке.** Если у альбома нет обложки, обложкой становится первое загруженное фото; последующие фото её не меняют. - **Снятие обложки при уходе фото-обложки.** Помещение фото-обложки в корзину или перенос её в другой альбом очищает обложку (без перевыбора). - **Явный сброс обложки** (`clear_cover`) обнуляет обложку и не пересчитывает её. - **Frontend.** Пункт «Установить как обложку альбома» в контекстном меню фото сетки и в разделе «Действия» правой панели; доступен только владельцу и админу. - **Без backfill** существующих альбомов без обложки. ## Capabilities ### New Capabilities ### Modified Capabilities - `photos`: обложка по умолчанию назначается при загрузке (первое фото) и снимается, когда фото-обложка покидает альбом. - `albums`: сброс обложки делает её не заданной (без возврата к значению по умолчанию). ## Impact - Backend: `internal/photos/service.go` (`Upload`, `Delete`, `MoveBatch`), `internal/photos/{store,repository,sqlite_store}.go` (метод снятия обложки). - Frontend: контекстное меню фото в сетке (`albums/[id]/+page.svelte`), раздел «Действия» в `PhotoPanel.svelte`; используется существующий `PATCH /albums/:id` через `albums.setCover`. - Данные/миграции: не требуются; backfill не выполняется.