Files
ds-galo/openspec/changes/archive/2026-10-13-add-mobile-album-photo-actions/proposal.md
T
iu fa210e6c7f feat(android): album/photo attribute-actions and device gallery sync fixes
Album panel and photo sheet with attributes/actions for every album (server and
device), local album rename/cover/delete, EXIF attribute settings, and a unified
device-gallery sync check:

- add repository "Атрибуты и действия" panel (swipe left) on server and device
  albums: cover, info, navigation, rename/delete; album settings screen; photo
  sheet (swipe up) with info, tags and actions; EXIF attribute settings backed by
  profile preferences
- local albums use local metadata and actions: app-only display name and cover
  (new device_album_meta table), delete removes photos from the phone via the
  system delete consent
- unified mode x state policy (GallerySyncPolicy/SyncCheck) runs on start and on
  album open: upload/offload in move, restore originals in copy/off
- fix move->copy restore, offload of any linked-but-local original, provenance
  recovery that no longer overwrites the album mode, serialized reconcile and
  duplicate-upload suppression; prompt for "all files" access on start
- album card caption: name (with linked server name when different) and storage
  icons (memory card / cloud) with item count

Sync delta specs into android-client and archive the change
add-mobile-album-photo-actions.

Verified: unit/Robolectric suite green, :app:assembleDebug, :app:lint, and the
DeviceSyncE2ETest instrumented suite on the emulator (7/7).
2026-10-13 21:49:12 +03:00

4.4 KiB

Proposal

Why

В web у альбомов и фото есть полноценное управление атрибутами и действиями (панель обложки/информации/навигации, разделы «Действия», «Метки», «Информация» с настройками EXIF-атрибутов). В Android-клиенте этого нет: экран альбома — только сетка, просмотр — только изображение с навигацией, а GaloApi умеет лишь переименовать/удалить/переместить. С телефона нельзя ни посмотреть свойства, ни выполнить действия «как в web».

What Changes

  • Новый экранный жест: свайп справа налево в любом альбоме (серверном и локальном) открывает панель «Атрибуты и действия» (drawer справа).
  • Панель альбома повторяет структуру web (AlbumPanel + экран настроек):
    • Атрибуты: «Обложка» (превью, выбрать/сбросить), «Информация» (название, описание, счётчики), «Навигация» (участники, настройки, ссылки для просмотра).
    • Действия: «Переименовать», «Удалить».
    • Источник данных: серверный альбом — данные сервера; локальный, связанный с серверным — реальные атрибуты связанного серверного альбома; локальный без связи — локальные значения (обложка/имя/счётчик), без раздела «Навигация».
  • Новый жест просмотра: свайп вверх в полноэкранном просмотре (серверном и device) открывает лист «Атрибуты и действия», повторяющий web PhotoPanel:
    • Атрибуты: «Информация» (автор, файл, тип, разрешение, EXIF, снято, координаты, загружено) с настройками списка EXIF-атрибутов; «Метки».
    • Действия: «Открыть (просмотр)» (из сетки), «Скачать», «Переместить», «Копировать», «Установить как обложку альбома», «Удалить»; переименование по тапу на имя.
    • Для device-медиа: если элемент сопоставлен серверному фото — реальные серверные атрибуты и действия; иначе локальные атрибуты и локальные действия.
  • Расширение клиентского слоя Android: GaloApi + DTO получают операции альбома (обновление/обложка/удаление/участники/share), копирование, метки, скачивание, exif и preferences; новый экран «Настройки атрибутов» (видимость + подписи, в профиль).
  • Бэкенд не меняется: все нужные endpoints уже есть.

Capabilities

New Capabilities

Modified Capabilities

  • android-client: добавляются требования к панели «Атрибуты и действия» на экранах альбомов, к листу «Атрибуты и действия» в полноэкранном просмотре, к выбору источника атрибутов для локальных альбомов/медиа и к поддерживающим операциям API/настройкам атрибутов в профиле.

Impact

  • android/app/src/main/java/com/galo/android/: data/network/GaloApi.kt, .../dto/Dtos.kt, domain/model/, ui/album/, ui/viewer/, ui/devicealbum/, новые экраны настроек.
  • Тесты Android (android/app/src/androidTest, test).
  • Бэкенд, web и схема spec-ов не затрагиваются (кроме новой delta для android-client).