Files
ds-galo/openspec/changes/photo-color-editing/proposal.md
T
iu 502f2766d7 docs(openspec): изменение photo-color-editing
Предложение, дельта-спека photos, дизайн и задачи для инструмента «Цвет».
2026-10-23 21:57:51 +03:00

3.5 KiB
Raw Blame History

Proposal

Why

В инструменте правок фото сейчас только раздел «Свет» (экспозиция, контраст, света, тени, белые, чёрные, точечная кривая). Пользователи не могут скорректировать цвет: баланс белого, вибрацию, насыщенность, отдельные оттенки и тонирование. Добавить цветовые правки — востребованное расширение неразрушающего редактирования, которое уже работает в Galo.

What Changes

  • Расширить EditParams новым блоком Color: баланс белого (Темп, Оттенок), Вибрация (Vibrance), Насыщенность, Цветовой микшер (Тон/Насыщенность/Яркость по оттенкам), Точечный цвет и Цветокоррекция.
  • Сервер (Go): рендер цветовых правок на пикселях исходного объекта, порядок операций — свет, затем цвет; результат записывается в те же роли edit, edit_thumb, edit_medium, edit_preview.
  • Клиент (TypeScript): цветовые ползунки и элементы управления в PhotoEditPanel, живой превью через light.wasm с тестом паритета (wasmMatchesReference).
  • WASM (Rust): расширение frontend/wasm/light/ цветовыми операциями и пересборка static/light.wasm.
  • Хранение: photo.edit_params остаётся map[string]any JSON-блоба — старые фото без ключа color рендерятся без цветовых правок, миграций схемы не требуется.

Capabilities

Modified Capabilities

  • photos: требование «Неразрушающее редактирование фотографии» расширяется цветовыми параметрами правок. Потребуется дельта-спека specs/photos/spec.md в рамках этого изменения.

New Capabilities

Нет — цветовое редактирование входит в существующую способность photos.

Impact

  • backend/internal/photos/edit.go — ColorParams, EditParams.Color, Normalized/IsEmpty/JSON.
  • backend/internal/photos/edit_render.go — applyColor / applyColorRows, decodeAndAdjust применяет свет и цвет.
  • backend/internal/photos/edit_service.go — валидация и сохранение без изменений логики (параметр color добавится в JSON).
  • frontend/src/lib/edit.ts — ColorParams, цветовые ползунки, readEditParams/isEmptyEditParams/normalizeEditParams с цветом, applyColorToPixels.
  • frontend/src/lib/light-wasm.ts — вызов WASM для цвета, поддержка паритета.
  • frontend/src/lib/components/PhotoEditPanel.svelte — новый раздел «Цвет».
  • frontend/src/lib/components/Viewer.svelte — превью с цветом.
  • frontend/wasm/light/ (Rust) + static/light.wasm — цветовые операции.
  • Тесты: edit_test.go, edit.test.ts, light-wasm.test.ts.