# Кадр — локальный AI-фоторедактор Веб-приложение редактирует фотографии по текстовому промпту (через локальный Codex CLI) и увеличивает разрешение через домашний сервер ComfyUI. Поддерживаются фотографии JPEG, PNG, WebP и HEIC/HEIF. Файлы HEIC/HEIF преобразуются на сервере в JPEG с помощью `heic-convert` до передачи в ComfyUI или Codex. ## Как это работает - **История версий**: каждая загрузка и каждый результат (редактирование или апскейл) сохраняется в папке `history/` как отдельная версия. Можно вернуться к любой версии кликом по ней в ленте «История версий» и продолжить правки именно с неё — например, отредактировать фото, а затем увеличить разрешение уже отредактированного варианта. История переживает перезапуск сервера и обновление страницы; хранится последние 50 версий. - **Редактирование**: сервер передаёт выбранную версию и промпт агенту Codex CLI (`codex exec`). Агент редактирует изображение и сохраняет результат. Обработка обычно занимает 1–3 минуты. - **Увеличение разрешения**: 4× upscale через ComfyUI моделью `RealESRGAN_x4plus.safetensors` — применяется к выбранной (в том числе отредактированной) версии. ## Требования - Node.js 20 или новее - Локальный Codex CLI (`codex`) с выполненным входом в аккаунт OpenAI - Доступ к ComfyUI: `http://192.168.31.240:8188` - Checkpoint: `sdxl_turbo.safetensors` - Upscale-модель: `RealESRGAN_x4plus.safetensors` - Установленные зависимости проекта, включая `heic-convert` (ставится командой `npm install`) ## Запуск ```powershell npm install npm start ``` ## Docker Образ собирается на базе `node:22-bookworm-slim` (Debian, glibc) — Codex CLI распространяется как бинарник под glibc и не работает на Alpine/musl. ```powershell # сборка и запуск docker compose up -d --build # или вручную: docker build -t kadr-photo-editor . docker run -d --name kadr-photo-editor -p 3000:3000 ^ -v "$env:USERPROFILE\.codex:/root/.codex" ^ -v "${PWD}\history:/app/history" ^ -e COMFY_URL=http://192.168.31.240:8188 ^ kadr-photo-editor ``` Что важно знать: - **Авторизация Codex**: контейнер монтирует `~/.codex` хоста в `/root/.codex` (auth + config + навыки). Альтернатива — переменная окружения `OPENAI_API_KEY`. - **История версий**: каталог `history/` смонтирован томом, версии переживают пересоздание контейнера. - **ComfyUI**: задаётся через `COMFY_URL` (по умолчанию `http://192.168.31.240:8188`); из контейнера адрес доступен как исходящий адрес локальной сети. - **Порт**: по умолчанию 3000, меняется через `PORT`.