# 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`.