• 0.2.0 4cc5c0f340

    0.2.0 Stable

    iu released this 2026-10-23 20:09:06 +00:00 | 0 commits to release/0.2.0 since this release

    Описание релиза Galo — 23 октября 2026

    Версия: 0.2.0
    База релиза: 0.1-alpha (723b19b, 21 октября 2026) → develop (9e39e3d, 23 октября 2026)
    Объём: 6 коммитов, 3 спецификации обновлены, 2 изменения реализованы


    Коротко о главном

    1. Инструмент «Цвет». Баланс белого, вибрация и насыщенность, цветовой
      микшер по восьми диапазонам оттенков, цветокоррекция по зонам яркости и
      общая поканальная коррекция. Предпросмотр считает WebGL2, есть WASM/JS-фолбэк.
    2. Пресеты тоновой кривой. Плавная монотонная кривая (PCHIP), подвижные
      крайние точки и плоские полки. Встроенные и пользовательские пресеты всех
      четырёх каналов хранятся в профиле, импортируются и экспортируются JSON-файлом.
    3. Настройки профиля больше не затирают друг друга. Сохранение сведений о фото
      и пресетов кривой мержится на сервере по разделам.
    4. Исправлено переключение фото в редакторе. Вкладка правой панели сохраняется,
      а несохранённые правки уходят тому фото, для которого сделаны.

    Новые возможности

    Инструмент «Цвет»

    • Баланс белого: температура и оттенок, пипетка по нейтральной точке на фото.
    • Вибрация и насыщенность с раздельными ползунками.
    • Цветовой микшер по восьми диапазонам (красный, оранжевый, жёлтый, зелёный,
      бирюзовый, синий, фиолетовый, пурпурный): тон, насыщенность и яркость каждого
      диапазона.
    • Цветокоррекция по зонам: колёса теней, средних тонов и светов, наложение и
      баланс зон.
    • Поканальная коррекция красного, зелёного и синего каналов.
    • Живой предпросмотр на WebGL2: кадр считает GPU, поэтому изменения видны сразу.
      Если WebGL2 недоступен, используется WASM/JS-фолбэк с тем же результатом.
    • Ползунки с градиентами, цветовые колёса и сброс значения двойным кликом.
    • Порядок операций совпадает в Go-рендере, WASM и JS-предпросмотре; паритет
      закреплён тестами.

    Тоновая кривая и пресеты

    • Плавная кривая: монотонная кубическая интерполяция (PCHIP) вместо прямых
      отрезков — и в SVG-графике, и в LUT для предпросмотра и серверного рендера.
    • Крайние точки (0,0) и (1,1) существуют сразу, двигаются по обеим осям;
      вне крайних точек кривая остаётся плоской. Первый клик по полю вставляет точку
      между крайними.
    • Встроенные пресеты: «Линейный», «Средний контраст», «Сильный контраст».
      Контраст задаётся в RGB, каналы R/G/B остаются линейными.
    • Пользовательские пресеты описывают кривые всех четырёх каналов:
      • сохранение, применение, переименование и удаление;
      • хранение в users.preferences.curve_presets в профиле пользователя;
      • приватность: чужие пресеты не видны;
      • импорт и экспорт JSON { "version": 1, "presets": [...] }, upsert по имени;
      • старый формат одного канала конвертируется при чтении.
    • Подпись показывает активный пресет; при ручной правке любого канала —
      «Пользовательский». Сброс возвращает линейную кривую.

    Настройки профиля

    • PATCH /api/auth/me/preferences теперь мержит разделы, а не заменяет весь
      JSON-объект.
    • Сохранение photo_info не стирает curve_presets, и наоборот.
    • Валидация: не больше 100 пресетов, имя 1..64 символа, 2..16 точек на каждый из
      четырёх каналов, x/y в диапазоне 0..1.
    • Неизвестные разделы настроек сохраняются без изменений.

    Исправления

    • Переключение фото в редакторе. Вкладка правой панели больше не сбрасывается
      на «Сведения». Накопленные правки отправляются фото, для которого сделаны, даже
      если пользователь уже перешёл к следующему.
    • Фоновые сохранения не подменяют текущее фото. Устаревшие ответы сохранения и
      загрузки игнорируются; панель показывает только фото текущего маршрута.
    • Копия фото не наследует отредактированную версию. Копия показывает исходник,
      правка принадлежит своему фото (архивная синхронизация спецификации
      media-objects).
    • Устранены ошибки доступа к photo = null при кратковременной смене фото.

    Технические изменения

    API

    • PATCH /api/auth/me/preferences — мерж известных разделов; в ответе возвращается
      полный объединённый объект.
    • PATCH /api/photos/:id/edit — параметры правок теперь включают блок color и
      тоновую кривую; серверный рендер использует те же LUT, что и предпросмотр.
    • DELETE /api/photos/:id/edit — сброс правок без изменений.

    Данные и миграции

    • Схема БД не менялась: новые настройки лежат в JSON-блобе
      users.preferences; параметры правок — в photos.edit_params.
    • Новые роли объектов и миграции не добавлялись.
    • Старые сохранённые кривые начнут интерполироваться плавно — визуальный результат
      может немного измениться без миграции данных.

    Сборка

    • Обновлён WASM-модуль фильтров (frontend/static/light.wasm).
    • make build-release собирает статический бинарник с вшитой версией и сжимает
      его UPX, если UPX доступен.
    • Версия берётся из git describe --tags; релизный тег — 0.2.0.

    Проверка

    • npm run check — 0 ошибок и предупреждений.
    • npm run test — 54 теста.
    • go test ./... — все пакеты зелёные.
    • E2E: сохранение/сброс цветовых правок, приватность и хранение пресетов кривой.
    • Проверено в браузере: WebGL2-предпросмотр, пипетка, меню пресетов, сохранение
      всех каналов, сохранение вкладки и правок при переключении фото.

    Как обновиться

    1. Собрать релизный бинарник: make build-release (или взять готовый
      bin/galo-0.2.0).
    2. Остановить сервис и заменить бинарник. Фронтенд вшит в бинарник.
    3. Запустить сервис: миграции применяются автоматически при старте для выбранного
      бэкенда. Для этого релиза отдельных миграций нет.
    4. Для видео по-прежнему нужны ffmpeg/ffprobe на хосте.
    5. Android-клиент обновляется отдельно через make install-android-app.

    Откат: вернуть предыдущий бинарник. Схема не менялась, данные правок и профиля
    остаются совместимыми; новые ключи настроек старый бинарник просто игнорирует.


    Ограничения

    • Редактирование цвета и кривой доступно только для изображений; видео не
      редактируется.
    • WebGL2-предпросмотр ускоряет отрисовку, но при его отсутствии используется
      WASM/JS-фолбэк.
    • Пресеты не синхронизируются между пользователями: перенос возможен только через
      экспорт/импорт JSON.
    • Правки не создают отдельной записи в истории: параметры хранятся в метаданных
      фото, отредактированная версия — отдельный объект.
    Downloads