docs(openspec): описать правки редактора, сделанные без спецификаций

Дополнены спеки ui-workspace (сворачивание кривой, живая гистограмма,
точки кривой, навигация в зуме, Space к центру), media-objects (роли edit*,
привязка отредактированной версии, отдельная очередь рендера правок),
photos (рендер по оригиналу) и dev-make-workflow (сборка WASM-модуля).
This commit is contained in:
iu
2026-10-21 20:21:59 +03:00
parent eb2d478275
commit 748143c9d7
4 changed files with 103 additions and 20 deletions
+48 -14
View File
@@ -263,9 +263,9 @@ SHALL выдвигать правую панель поверх содержим
Просмотр SHALL поддерживать зум колесом мыши без прокрутки, с привязкой к указателю и
верхним пределом 200% размеров фото. Клавиши `+` и `-` SHALL менять масштаб на шаг, сохраняя
точку в центре просмотра. `Space` SHALL возвращать изображение из любого зума во
вписанный вид, а из вписанного — в 100%. При зуме SHALL догружаться оригинал изображения.
Стрелки соседних фото SHALL появляться у левой/правой кромки и прятаться в зуме. Зум SHALL
работать и в полноэкранном режиме.
вписанный вид, а из вписанного — в 100% от оригинала с центрированием по центру кадра.
При зуме SHALL догружаться оригинал изображения. Зум SHALL работать и в полноэкранном
режиме.
#### Scenario: Зум колесом к указателю
- **WHEN** пользователь вращает колесо мыши над фото
@@ -278,16 +278,27 @@ SHALL выдвигать правую панель поверх содержим
#### Scenario: Пробел
- **WHEN** пользователь нажимает `Space`
- **THEN** из вписанного вида изображение переходит в 100%, а из любого зума возвращается во вписанный
- **THEN** из вписанного вида изображение переходит в 100% от оригинала по центру кадра, а из
любого зума возвращается во вписанный
#### Scenario: Оригинал в зуме
- **WHEN** пользователь входит в зум
- **THEN** догружается оригинал изображения и подменяется по факту загрузки
### Requirement: Навигация в зуме
Стрелки соседних фото SHALL появляться у левой/правой кромки и прятаться в зуме. Клавиши
со стрелками в зуме SHALL перемещать изображение, а переключение соседних фото SHALL
оставаться за мышью и кнопками у краёв. В зуме пользователь SHALL перемещать изображение
перетаскиванием и прокруткой.
#### Scenario: Стрелки соседних фото
- **WHEN** курсор находится у левой или правой кромки области просмотра
- **THEN** показывается соответствующая стрелка, скрываясь сразу после ухода; в зуме стрелки скрыты
#### Scenario: Стрелки в зуме
- **WHEN** фото увеличено, и пользователь жмёт стрелки клавиатуры
- **THEN** изображение перемещается, а переключение соседних фото не происходит
#### Scenario: Панорамирование
- **WHEN** фото увеличено
- **THEN** пользователь может перемещать изображение перетаскиванием и прокруткой
@@ -779,27 +790,28 @@ SHALL очищаться. При отсутствии сети приложен
### Requirement: Вкладка «Редактирование»
Правая панель фото SHALL содержать вкладку «Редактирование» с инструментом «Свет»:
ползунки экспозиции, контраста, светов, теней, белых и чёрных, а также точечную кривую
с выбором канала. График кривой SHALL показывать гистограмму каналов фото: выбранный
канал — своим цветом, мастер-канал — всеми тремя. Правки SHALL применяться к фото сразу и
отправляться на сервер после десяти секунд без изменений либо при переключении фото.
Переключатель «Сброс» SHALL удалять параметры правок и отредактированную версию фото.
Сетка и просмотр SHALL показывать отредактированную версию фото, когда она отрендерена.
#### Scenario: Отложенная отправка
- **WHEN** пользователь меняет ползунок и не трогает панель десять секунд
- **THEN** правки отправляются на сервер, а сервер рендерит фото в фоне
с выбором канала. Правки SHALL применяться к фото сразу и отправляться на сервер после
десяти секунд без изменений либо при переключении фото. Переключатель «Сброс» SHALL
удалять параметры правок и отредактированную версию фото. Сетка и просмотр SHALL
показывать отредактированную версию фото, когда она отрендерена. Обновление фото SHALL
сохранять открытую вкладку панели.
#### Scenario: Вкладки панели
- **WHEN** открыта правая панель фото
- **THEN** видны вкладки «Сведения» и «Редактирование»
#### Scenario: Отложенная отправка
- **WHEN** пользователь меняет ползунок и не трогает панель десять секунд
- **THEN** правки отправляются на сервер, а сервер рендерит фото в фоне
#### Scenario: Сохранение правок
- **WHEN** пользователь отпускает ползунок
- **THEN** правки сохраняются, а после рендера фото в сетке и просмотре показывается отредактированная версия
#### Scenario: Правки видны сразу
- **WHEN** пользователь меняет ползунок, а сервер ещё не отрендерил фото
- **THEN** видимая область фото в просмотре показывает правки без ожидания рендера
- **THEN** видимая область фото в просмотре показывает правки без ожидания рендера — и во
вписанном виде, и в зуме
#### Scenario: Фильтры считаются в браузере
- **WHEN** браузер рисует предпросмотр правок
@@ -812,3 +824,25 @@ SHALL очищаться. При отсутствии сети приложен
#### Scenario: Зум при правках
- **WHEN** фото отредактировано, и пользователь увеличивает его
- **THEN** браузер рисует видимую область с правками, пока сервер не отрендерил фото, а зум не сбрасывается при обновлении фото
### Requirement: График тональной кривой
График кривой SHALL показывать гистограмму каналов фото: выбранный канал — своим
цветом, мастер-канал — всеми тремя. Гистограмма SHALL пересчитываться с учётом
текущих правок. Точки кривой SHALL добавляться кликом по полю графика, перетаскиваться
и перемещаться стрелками клавиатуры. Блок «Кривая» SHALL сворачиваться и разворачиваться
по клику на заголовок, по умолчанию SHALL быть свёрнут, а кнопки выбора канала SHALL
оставаться доступными.
#### Scenario: Живая гистограмма
- **WHEN** пользователь двигает ползунок или точку кривой
- **THEN** гистограмма на графике пересчитывается с учётом текущих правок
#### Scenario: Точки кривой
- **WHEN** пользователь кликает по полю графика, перетаскивает точку или жмёт стрелки с
фокусом на точке
- **THEN** точка добавляется, перемещается и меняет кривую
#### Scenario: Сворачивание кривой
- **WHEN** пользователь открывает инструмент «Свет»
- **THEN** блок «Кривая» свёрнут, кнопки выбора канала доступны, а по клику на заголовок
график разворачивается и сворачивается обратно