From 327f820c3b035ff7eee4d0e9b8a487ebbd774235 Mon Sep 17 00:00:00 2001 From: Iu Date: Tue, 13 Oct 2026 12:41:04 +0300 Subject: [PATCH] chore(openspec): archive add-mobile-photo-zoom and sync main specs --- .../.openspec.yaml | 0 .../design.md | 0 .../proposal.md | 0 .../specs/android-client/spec.md | 0 .../tasks.md | 0 openspec/specs/android-client/spec.md | 82 ++++++++++++++++++- 6 files changed, 79 insertions(+), 3 deletions(-) rename openspec/changes/{add-mobile-photo-zoom => archive/2026-10-13-add-mobile-photo-zoom}/.openspec.yaml (100%) rename openspec/changes/{add-mobile-photo-zoom => archive/2026-10-13-add-mobile-photo-zoom}/design.md (100%) rename openspec/changes/{add-mobile-photo-zoom => archive/2026-10-13-add-mobile-photo-zoom}/proposal.md (100%) rename openspec/changes/{add-mobile-photo-zoom => archive/2026-10-13-add-mobile-photo-zoom}/specs/android-client/spec.md (100%) rename openspec/changes/{add-mobile-photo-zoom => archive/2026-10-13-add-mobile-photo-zoom}/tasks.md (100%) diff --git a/openspec/changes/add-mobile-photo-zoom/.openspec.yaml b/openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/.openspec.yaml similarity index 100% rename from openspec/changes/add-mobile-photo-zoom/.openspec.yaml rename to openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/.openspec.yaml diff --git a/openspec/changes/add-mobile-photo-zoom/design.md b/openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/design.md similarity index 100% rename from openspec/changes/add-mobile-photo-zoom/design.md rename to openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/design.md diff --git a/openspec/changes/add-mobile-photo-zoom/proposal.md b/openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/proposal.md similarity index 100% rename from openspec/changes/add-mobile-photo-zoom/proposal.md rename to openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/proposal.md diff --git a/openspec/changes/add-mobile-photo-zoom/specs/android-client/spec.md b/openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/specs/android-client/spec.md similarity index 100% rename from openspec/changes/add-mobile-photo-zoom/specs/android-client/spec.md rename to openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/specs/android-client/spec.md diff --git a/openspec/changes/add-mobile-photo-zoom/tasks.md b/openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/tasks.md similarity index 100% rename from openspec/changes/add-mobile-photo-zoom/tasks.md rename to openspec/changes/archive/2026-10-13-add-mobile-photo-zoom/tasks.md diff --git a/openspec/specs/android-client/spec.md b/openspec/specs/android-client/spec.md index 31cf436..a77788d 100644 --- a/openspec/specs/android-client/spec.md +++ b/openspec/specs/android-client/spec.md @@ -109,9 +109,9 @@ SHALL подгружать следующую страницу при дости ### Requirement: Просмотр медиа на весь экран -Полноэкранный просмотр SHALL поддерживать изображение, видео с постером и управлением -воспроизведением, а также панораму 360; навигация между элементами альбома SHALL -выполняться свайпом. +Полноэкранный просмотр SHALL поддерживать изображение с зумом пальцами, видео с постером +и управлением воспроизведением, а также панораму 360; навигация между элементами альбома +SHALL выполняться свайпом. #### Scenario: Свайп между элементами @@ -229,3 +229,79 @@ SHALL подгружать следующую страницу при дости - **WHEN** сервер возвращает ошибку с `code` и `message` - **THEN** приложение показывает сообщение, при необходимости адаптированное под язык интерфейса + +### Requirement: Зум изображения жестами + +Полноэкранный просмотр изображения SHALL поддерживать увеличение и уменьшение щипком +(pinch), а при увеличенном изображении — панорамирование перетаскиванием. + +#### Scenario: Щипок увеличивает изображение + +- **WHEN** пользователь разводит пальцы на изображении +- **THEN** изображение увеличивается относительно вписанного вида + +#### Scenario: Панорамирование при увеличении + +- **WHEN** изображение увеличено, и пользователь перетаскивает его пальцем +- **THEN** видимая область изображения смещается, а границы изображения не отрываются от краёв области просмотра + +### Requirement: Двойной тап переключает вписанный вид и 100% + +Двойной тап по изображению SHALL переключать вписанный вид и масштаб 100% натурального +размера с якорем в точку нажатия. + +#### Scenario: Вход в 100% из вписанного вида + +- **WHEN** изображение показано вписанным, и пользователь делает двойной тап +- **THEN** изображение показывается в масштабе 100% натурального размера с центром в точке нажатия + +#### Scenario: Возврат во вписанный вид + +- **WHEN** изображение увеличено, и пользователь делает двойной тап +- **THEN** изображение возвращается во вписанный вид + +### Requirement: Предел зума по натуральному размеру + +Зум изображения SHALL ограничиваться снизу вписанным видом, а сверху — 200% натурального +размера изображения; при входе в зум SHALL догружаться оригинал изображения. + +#### Scenario: Верхний предел + +- **WHEN** пользователь продолжает увеличивать изображение за 200% натурального размера +- **THEN** масштаб останавливается на 200%, изображение не увеличивается дальше + +#### Scenario: Оригинал при увеличении + +- **WHEN** пользователь входит в зум +- **THEN** догружается оригинал изображения и подменяет превью по факту загрузки + +### Requirement: Навигация и сброс при зуме + +Пока изображение увеличено, горизонтальный свайп SHALL NOT листать альбом, а жест SHALL +отдаваться панорамированию; при переходе на другой элемент просмотра зум SHALL сбрасываться +во вписанный вид. + +#### Scenario: Свайп не листает увеличенное изображение + +- **WHEN** изображение увеличено, и пользователь свайпает по нему +- **THEN** альбом не листается, а изображение панорамируется + +#### Scenario: Сброс при смене фото + +- **WHEN** пользователь переходит на другой элемент и возвращается к увеличенному изображению +- **THEN** изображение показывается во вписанном виде + +### Requirement: Индикатор загрузки оригинала + +Пока оригинал изображения загружается после входа в зум, приложение SHALL показывать индикатор +загрузки в правом верхнем углу области просмотра. + +#### Scenario: Оригинал загружается + +- **WHEN** пользователь входит в зум, и оригинал ещё загружается +- **THEN** в правом верхнем углу показывается индикатор загрузки + +#### Scenario: Загрузка завершена + +- **WHEN** оригинал загружен или недоступен +- **THEN** индикатор загрузки скрыт