# 📦 @goodandready/dsh-image-gen

<div align="center">

<h3>Комплексный графический комбайн и генератор изображений для DeepSeek Harness</h3>

<p align="center">
  <a href="https://www.npmjs.com/package/@goodandready/dsh-image-gen"><img src="https://img.shields.io/npm/v/@goodandready/dsh-image-gen.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
  <a href="LICENSE"><img src="https://img.shields.io/github/license/GooDAnDReaDY/dsh-image-gen.svg?style=for-the-badge&color=10b981&labelColor=064e3b" alt="license"></a>
  <a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
  <a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
</p>

<p align="center">
  <a href="https://goodandready.app/"><img src="https://img.shields.io/badge/Все_проекты_автора-goodandready.app-ff4500.svg?style=for-the-badge&logo=rocket&logoColor=white&labelColor=1a1a2e" alt="Все проекты автора"></a>
</p>

<p align="center">
  <a href="README.md"><b>🇬🇧 English</b></a> •
  <a href="README.ru.md"><b>🇷🇺 Русский</b></a> •
  <a href="README.zh.md"><b>🇨🇳 中文说明</b></a>
</p>

<table align="center">
  <tr>
    <td align="center">
      ⭐ <strong>Если вам нравится этот плагин, поставьте ему звезду на GitHub</strong> — это покажет мне, что плагин вам полезен, и будет мотивировать меня развивать его дальше.
      <br><br>
      🐛 <strong>Если вы нашли баг или хотите предложить новый функционал</strong>, создайте issue на GitHub на любом языке — я рассмотрю ваше предложение и реализую полезные идеи в одной из следующих версий плагина.
    </td>
  </tr>
</table>

</div>

---
## 🚀 Обновления v0.10.26: Архитектурная декомпозиция и чистота репозитория (#235, #238, #239)
* **Архитектурная декомпозиция модулей (#239)**: Все серверные модули в `lib/` приведены к проектному стандарту <= 600 строк: генерация пакетов вынесена в `lib/tools/generation-pack.js` (74 строки, `generation.js` снижен до 547 строк), кэш и история — в `lib/history.js` (93 строки), вложения и сайдкары — в `lib/attachment-helper.js` (82 строки, `index.js` снижен до 557 строк). Клиентский код полностью разбит на 15 модулей в `src/client/*` (каждый <= 337 строк).
* **Чистота репозитория (#235)**: Служебные файлы агентов (`AGENTS.md`, `index.md`) сняты с git-отслеживания и защищены правилами в `.gitignore` и `.gitattributes`.
* **Паритет тем оформления (#238)**: Полная верификация и закрытие правила нулевого хардкода цветов для всех поверхностей UI через системные токены `--dsw-alias-*` и `color-mix(...)`.
* **Целостность пакета**: Манифест `files` в `package.json` расширен языковыми файлами `README.ru.md` и `README.zh.md`.

## 🚀 Обновления v0.10.25: Чистота темы DSH, адаптивные мокапы, бесшовные паттерны и спрайтшиты (#173, #177, #178, #238)
* **100% адаптация под переменные темы DSH (#238)**: Полностью устранены все захардкоженные литералы `rgba(...)` и hex-цветов в клиентской части (`src/client/10-css.js`, `src/client/80-gallery.js`). Полупрозрачные статусные фоны бейджей, алертов и модальных оверлеев переведены на динамическое смешивание токенов темы через `color-mix(...)`.
* **Генератор адаптивных интерфейсных мокапов (`generate_responsive_mockups`, #173)**: Генерация согласованного набора экранов Mobile (9:16), Tablet (3:4) и Desktop (16:9) по единому промпту с параллельным выполнением через `asyncPool` (concurrency 3) и интерактивным таб-интерфейсом в карточке чата.
* **Генератор бесшовных текстур и паттернов (`generate_seamless_pattern`, #178)**: Создание тайлящихся фоновых текстур со встроенным контролем швов и готовым CSS-предпросмотром.
* **Генератор 2D-спрайтшитов (`generate_spritesheet`, #177)**: Формирование горизонтальных раскадровок анимации персонажей и UI с автогенерацией CSS `@keyframes` и SVG-превью полосы кадров.
* **Модульная сборка клиента (#244)**: Клиентская часть разнесена на 15 структурированных модулей в `src/client/*` со скриптом сборки `scripts/build-client.mjs`. Preflight-проверка `FAIL=0`, 179 из 179 тестов успешно пройдены.

## 🚀 Обновления v0.10.24: Блок качества — публикационная граница, статусы настроек, цвета темы и разбиение модулей (#235–#242)
* **Публикационная граница**: добавлен `.gitattributes` c `export-ignore` для `AGENTS.md`, `index.md`, `docs/` и `.gitea/` — архивы GitHub source и `git archive` больше не содержат внутренние файлы workflow.
* **Статусы настроек**: исправлен fallback статуса провайдера/конфигурации в карточке настроек — промежуточные/неизвестные состояния больше не показываются ложным «unavailable».
* **Выравнивание с дизайн-системой**: остаточные CSS-классы `fal-` переименованы в префикс `ig-`; цвета привязаны к переменным темы DSH через `var(--dsw-alias-*, <fallback>)`.
* **Защита чувствительных файлов**: запись history, cache meta/data и spend-meter после записи получает права `0600`.
* **Удаление мёртвого кода и разбиение модулей**: удалён неиспользуемый `listCuratedStyles`; укрупнённые server-модули разнесены — утилиты `providers.js` → `provider-utils.js`, `processing.js` → `processing-basic.js` + `processing-advanced.js`. Разбиение client отложено в #244.

## 🚀 Обновления v0.10.23: Встроенное автообновление, синхронизация настроек, диагностические пробы и чистота языка (#232)
* **Встроенное обновление в 1 клик**: Прямая проверка и обновление плагина прямо из карточки настроек (`UpdaterSection`) через эндпоинт `/api/dsh-image-gen/update`. Опрашивает реестр npm, сравнивает semver-версии и безопасно запускает установку через `dsh plugin add` с защитой по loopback и доверенной локальной сети (RFC 1918).
* **Синхронизация настроек 1:1**: Полное выравнивание схемы хоста `Config` в `lib/index.js` и полей UI `FIELDS` в `lib/client.js` — во вкладку «✨ Промпт и стили» добавлены тумблеры `autoEnhancePrompt` и выпадающий список `defaultStylePreset`.
* **Активные диагностические пробы**: Добавлены реальные сетевые проверки в `testProviderConnection` для Replicate (`/v1/models`), Google Gemini (`/v1beta/models`) и ByteDance Seedream с защитой по тайм-ауту и замером сетевой задержки.
* **Строгое соответствие стандарту мультиязычности**: Чистые стандартные словари `en` и `zh` в ядре плагина; русские переводы модульно вынесены в `goodandready/dsh-russian-lang` в соответствии с правилами DSH. Ровно 0 символов кириллицы в исходном коде (`lib/`).
* **Доступность интерфейса (WAI-ARIA A11y)**: Реализована разметка вкладок и валидации форм с атрибутами `role="tablist"`, `role="tab"`, `aria-selected`, `aria-controls`, `role="tabpanel"`, `aria-describedby` и `role="alert"`.

## 🚀 Обновления v0.10.22: Стабилизация состояния карточки настроек и устранение React Error #185 (#230)
* **Референциальная стабильность карточки настроек**: Устранена критическая ошибка React #185 (`Maximum update depth exceeded`) в `FalSettingsCardController` и `CardForm.prototype.bind`. Снимки состояния кэшируются по ссылке (`Object.is(prev, next) === true`) во время циклов рендера, полностью предотвращая бесконечные циклы перерисовки в React 18 / `useSyncExternalStore`.
* **Глубокая интеграция со стором DSH**: Добавлена бесшовная поддержка официального `@deepseek-ai/dsh-client-store` (`runtime.createSnapshotStore`) с автономным отказоустойчивым кэширующим fallback-режимом.
* **Автоматические регрессионные тесты**: Добавлен специализированный тест стабильности ссылок в `test/client-syntax.test.mjs`, контролирующий идентичность снимков при последовательных чтениях, атомарность уведомлений и корректную отписку.

## 🚀 Обновления v0.10.21: Верстак вариаций, умный кроппер и экспорт бренд-ассетов (#228)
* **Интерактивный верстак вариаций и ремиксов (Remix Workbench)**: Встроенная панель в `FalImageCard` и галерее генераций. Настройка силы вариаций ползунком креативности (0.05–0.95), быстрые пресеты («Тонкие правки 0.25», «Креатив 0.65») и текстовое до-руливание стилем.
* **Умное кадрирование под стандарты пропорций (`smart_crop_image`)**: Мгновенный пересчет и кадрирование под соцсети и баннеры (`1:1`, `16:9`, `9:16`, `4:3`, `3:2`, `2:3`) с режимами центрирования, третей (`rule_of_thirds`), умного фокуса и рамки (`letterbox`) на чистом SVG без внешних бинарников.
* **Экспорт полного пакета веб-ассетов (`export_asset_pack`)**: Автоматическая сборка фавиконок (`favicon.svg`), PWA-иконок (`icon-192.svg`, `icon-512.svg`), `manifest.webmanifest`, карточки соцсетей OpenGraph (`og-card.svg` 1200×630) и `catalog.json`.
* **Нативные карточки-тулвью для 12 визуальных инструментов**: Быстрые действия ремикса, апскейла, кропа и компоновки прямо из чата DSH.
* **Строгая интернационализация**: Полные словари `zh` и `en`; регистрация строк русского перевода через `goodandready/dsh-russian-lang`.

## 🚀 Обновления v0.10.19: Встроенная галерея в сайдбаре, диагностика и движок стилей (#224)
* **Нативная галерея генераций в сайдбаре**: Прямая интеграция в правый сайдбар DSH (`sidebarRightTabs`, слот `sidebar.right.pane.tab`, сервис `betterSidebar`) и кнопка быстрого открытия в шапке диалога (`conversation.session.header.utilities`). Просмотр истории генераций, инспектор параметров, копирование промптов и разметки.
* **Интерактивная диагностика провайдеров**: Кнопка «Проверить связь» в карточке настроек плагина во вкладке «Провайдеры». Измерение задержки сети и проверка доступности Fal.ai, ComfyUI, Automatic1111 и Custom API со статусными бейджами.
* **Движок стилей и улучшайзер промптов**: Встроенный каталог из 10 стилей (`cinematic`, `photorealistic`, `anime`, `minimalist_vector`, `isometric_3d`, `analog_film`, `cyberpunk`, `pixel_art`, `oil_painting`, `claymation`), настройка `autoEnhancePrompt` и аргумент `style_preset` в `generate_image`.
* **Сборка коллажей и сеток сравнения (`assemble_image_grid`)**: Объединение 2–4 изображений в компактный коллаж (side-by-side, 2x2, vertical) на чистом SVG без внешних тяжелых библиотек (размер пакета строго < 250 КБ).
* **Генерация под цветовую палитру бренда**: Параметр `palette_colors` (массив hex-цветов) в `generate_image` для точного выдерживания цветовой гаммы в промпте с проверкой контраста WCAG.
* **Inpainting и редактирование по маске в `edit_image`**: Поддержка `mask_image` и параметра `strength` (0.0–1.0) для точечной замены объектов и фона.
* **Полная поддержка английской и китайской локализаций**: Словари `zh` и `en` в Web UI; регистрация строк для русского интерфейса через `goodandready/dsh-russian-lang`.

## 🚀 Обновления v0.10.18: Ускорение генерации и отказоустойчивость (#222)
* **Параллельная генерация вариаций и паков**: Запросы с `count > 1`, пакетные промпты `prompts` и инструмент `generate_image_pack` теперь выполняются параллельно с пулом задач (`concurrency: 3`), сокращая время ожидания пользователя до **3 раз**.
* **Мгновенный первый опрос очереди (Zero-Delay Initial Poll)**: Устранена искусственная задержка перед первым запросом статуса в `pollStatus` (Fal.ai, ComfyUI), экономя 1–1.5 с на быстрых генерациях.
* **Субмиллисекундный L1-кэш в памяти**: 32-позиционный оперативный LRU-кэш поверх дискового L2 обеспечивает мгновенную отдачу кэшированных генераций (< 0.1 мс) без синхронного чтения с диска.
* **Fast-Fail при исчерпании квоты**: Добавлено распознавание HTTP 402 (Payment Required) и ошибок баланса/кредитов в `isFatalClientError` для чистого и мгновенного переключения на запасного провайдера.
* **Расширение тестов**: Добавлен набор `test/batch5-speed-quality.test.mjs`, общее покрытие выросло до **136 юнит-тестов (100% pass)**.

## 🚀 Обновления v0.10.17: модульный жизненный цикл тулов (#216, #217)
* **Тулы вынесены из `apply()`**: host `lib/index.js` — тонкая cordis-точка входа. Определения тулов — в `lib/tools/*` через `lib/register-tools.js`.
* **Свой labeled `ctx.effect` на каждый tool** (`dsh-image-gen: tool <name>`) для корректной выгрузки.
* **Meta-файлы проекта**: `AGENTS.md` и `index.md` (не попадают в npm-пакет).
* **DESIGN.md** больше не упоминает удалённую HistoryGallery (#203).
* **Тесты**: `lifecycle-structure` + полный suite — **132 unit tests**.

## ⚡ Обзор возможностей

**`@goodandready/dsh-image-gen`** — флагманский графический плагин для экосистемы DeepSeek Harness, превращающий агента в полноценную творческую студию. Плагин предоставляет богатый набор инструментов для генерации, трансформации, апскейла, векторизации и анализа изображений с поддержкой 8 провайдеров генерации, интеллектуальным кэшированием и интерактивной карточкой в чате.

```mermaid
graph LR
    subgraph Input [🤖 Агент и Пользователь]
        Agent[Промпт / Задача агента]
        UserUI[Интерактивные кнопки / Чат]
    end

    subgraph Tools [🛠️ Пакет инструментов]
        T1[generate_image]
        T2[remove_background]
        T3[upscale_image]
        T4[vectorize_image]
        T5[blend_images]
        T6[generate_image_pack]
        T7[compare_images]
        T8[inspect_image_quality]
        T9[edit_image]
        T10[vary_image]
    end

    subgraph Core [🛡️ Ядро надежности и кэша]
        Cache[Детерминированный sha256 Hash Cache]
        Backoff[Exponential Backoff + Jitter]
        Classifier[Классификатор фатальных ошибок 400]
        Snap64[VAE 64-Multiple Dimension Snapping]
    end

    subgraph Engine [⚙️ Диспетчер бэкендов]
        P_FAL[FAL.ai Queue]
        P_REP[Replicate API]
        P_CUST[OpenAI / SiliconFlow]
        P_COD[ChatGPT Plus/Pro OAuth]
        P_GROK[Grok Imagine OAuth]
        P_LOC[ComfyUI / A1111]
        P_SEA[ByteDance SeaDream]
        P_GEM[Google Imagen 3]
    end

    subgraph Store [💾 Хранение и UI]
        Sidecar[.json Sidecar + Parameters tEXt]
        A1111[Drag-and-Drop в ComfyUI / WebUI]
        Card[🖼️ Карточка в чате с Re-roll, Правкой, NoBG]
    end

    Input --> Tools
    Tools --> Core
    Core --> Engine
    Engine --> Store

    style Input fill:#1e1e2e,stroke:#89b4fa,stroke-width:2px,color:#cdd6f4
    style Tools fill:#181825,stroke:#cba6f7,stroke-width:2px,color:#cdd6f4
    style Core fill:#11111b,stroke:#fab387,stroke-width:2px,color:#cdd6f4
    style Engine fill:#11111b,stroke:#a6e3a1,stroke-width:2px,color:#cdd6f4
    style Store fill:#1e1e2e,stroke:#f38ba8,stroke-width:2px,color:#cdd6f4
```

---

## 🛠️ Полный реестр инструментов

| Инструмент | Назначение | Ключевые параметры |
|---|---|---|
| **`generate_image`** | Генерация изображения по тексту | `prompt`, `image_size`, `seed`, `style`, `negative_prompt`, `count` |
| **`edit_image`** | Направленное редактирование / inpainting с авто-поиском оригинала (#142, #144, #145) | `prompt`, `image` (по умолч. `latest`), `mask`, `strength` |
| **`vary_image`** | Генерация вариаций существующей картинки (#143, #144) | `image` (по умолч. `latest`), `prompt`, `variation_strength` (0.1–0.9), `count` |
| **`remove_background`** | Удаление фона с сохранением прозрачного PNG | `image`, `model`, `output_name` |
| **`upscale_image`** | Увеличение разрешения в 2x / 4x с детализацией | `image`, `scale` (2/4), `prompt`, `creativity` |
| **`vectorize_image`** | Векторизация растра в чистый SVG с квантованием палитры | `image`, `color_mode`, `paletteSize` |
| **`blend_images`** | Смешивание нескольких изображений в единую композицию | `images`, `weights`, `prompt` |
| **`generate_image_pack`** | Пакетный рендеринг форматов 1:1, 16:9, 9:16 с сохранением частичных результатов | `prompt`, `aspect_ratios` |
| **`generate_responsive_mockups`** | Пакетная адаптивная генерация UI-mockup под Mobile 9:16, Tablet 3:4 и Desktop 16:9 с единой палитрой/стилем; табы в toolview (#173) | `prompt`, `devices`, `style_preset`, `palette_colors`, `seed` |
| **`compare_images`** | Сравнение двух картинок (доля различий пикселей) | `image_a`, `image_b` |
| **`inspect_image_quality`** | Аудит качества, расчет резкости и проверка дефектов | `image`, `expected_elements` |

---

## 🛡️ Отказоустойчивость, производительность и качество (v0.10.0)

* **Экспоненциальный Backoff с Jitter**: опрос очередей генерации (FAL, Replicate, ComfyUI) автоматически адаптирует задержки, исключая ошибки `429 Too Many Requests`.
* **Классификатор ошибок в Fallback Cascade**: клиентские ошибки (Content Policy, 400 Bad Request, NSFW) отсекаются немедленно, предотвращая пустую трату денег на резервных провайдерах.
* **Детерминированный хэш-кэш**: повторные генерации с тем же промптом, моделью и сидом отдаются мгновенно из локального кэша с нулевой стоимостью API.
* **Совместимость с ComfyUI / Automatic1111**: метаданные вшиваются в PNG `tEXt` чанки в стандартном формате `Parameters: Prompt\nNegative prompt: ...\nSteps: ... Seed: ...`, обеспечивая нативный Drag-and-Drop.
* **Кратность 64**: все пользовательские и адаптивные размеры автоматически округляются до кратных 64 для исключения искажений VAE.
* **Обогащенные пресеты стилей**: каждый стиль в `STYLE_PRESETS` содержит индивидуальный `negative_prompt` и рекомендуемый `guidance_scale`.

---

## 🚀 Обновления v0.10.8: унификация Lossless JSON, Dual-Output и строгая валидация (#199)
- **Унификация Lossless JSON и Dual-Output**: Инструменты `upscale_image`, `remove_background`, `blend_images`, `vectorize_image` теперь гарантированно возвращают валидный `toLosslessJson` и генерируют структурированный `summary` с превью для текстовых LLM.
- **Строгая валидация входных изображений**: В инструментах `extract_design_tokens`, `image_to_css_gradient` и `check_image_contrast` добавлена явная проверка существования файла с информативной ошибкой (`Image not found or unreadable: <path>`).
- **Сквозное модульное тестирование**: Добавлен тест-сьют `test/tool-consistency.test.mjs` для проверки отказоустойчивости дизайн- и PWA-инструментов.

## 🚀 Обновления v0.10.4: жизненный цикл Cordis, полнота настроек и интернационализация
- **Жизненный цикл Cordis (#136)**: регистрация всех 7 инструментов обёрнута в `ctx.effect` для штатной отписки при перезагрузке плагина.
- **Полнота настроек в GUI (#137)**: в карточку настроек добавлены поля для Replicate, SeaDream, Gemini, Local ComfyUI/A1111, пресетов стилей и LLM-улучшителя.
- **Манифест зависимостей (#138)**: в `peerDependencies` задекларированы все используемые службы ядра (`host-webserver`, `settings`, `llm`, `system-prompt`).
- **Оптимизация компонентов (#139)**: из `FalImageCard` удалён неиспользуемый мёртвый стейт.
- **100% интернационализация (#140)**: устранены захардкоженные русские строки, добавлены переводы на русский, английский и китайский языки.

### 🚀 Что нового в v0.10.16
* **Безопасный Fallback сервиса вложений (#214)**: Реализована функция `saveAttachmentSafe` во всех 8 визуальных инструментах (`generate_image`, вариации, `remove_background`, `upscale_image`, `blend_images` и др.). При запуске в автономном режиме без сервиса вложений или при сбое хранилища инструмент гарантированно сохраняет файл на диск и отдает пути без падения.
* **Строгая валидация HTTP-эндпоинта картинок**: В обработчике `/dsh-image-gen/image` усилена проверка query-параметров (`b`, `w`, `h`), защищающая от `NaN` и отрицательных чисел, а также исключающая утечку внутренних трассировок при 404/500 ошибках.
* **Диагностика ошибок нод ComfyUI**: Добавлена функция `extractComfyNodeErrors`, мгновенно извлекающая сообщения об ошибках нод из `/history/{pid}` при сбое генерации вместо бесконечного ожидания таймаута.
* **Нормализация ошибок Custom/OpenAI API**: Ошибки сторонних шлюзов и API провайдеров единообразно форматируются через `formatErrorMessage`, предотвращая появление `[object Object]` или громоздких дампов JSON.
* **Согласованность истории и дискового кэша**: Попадания в кэш корректно поддерживают актуальность метаданных sidecar и истории генераций.
* **Расширение тестов**: Добавлен тестовый набор `test/batch4-hardening.test.mjs`, общее количество тестов выросло до **128 (100% pass)**.

### 🚀 Что нового в v0.10.15
* **Обход Loop Guard при нулевом лимите (#212)**: Исправлена ошибка, когда при значении `loopGuardLimit: 0` (отключение защиты) срабатывал `Math.max(1, 0) = 1` и блокировал вызовы на 2-й итерации. При значении 0 лимит теперь полностью отключается.
* **Усиление безопасности токенов**: В `sanitizeErrorAndLogs` добавлено маскирование токенов Replicate (`r8_...`) и ключей Google Gemini (`AIza...`).
* **Устойчивость дискового кэша**: Изолировано обновление метаданных LRU при чтении из кэша — ошибки записи метаданных больше не приводят к сбросу валидных байтов кэша.
* **Безопасность загрузки файлов**: В `resolveConversationImage` добавлены проверки существования файла, запрет 0-байтных файлов и ограничение 50 МБ для предотвращения переполнения памяти.
* **Вложения и Toolview для векторизации**: Инструмент `vectorize_image` теперь сохраняет SVG во вложения `ctx.attachments` и возвращает `url`, что активирует карточку интерактивного предпросмотра в чате.
* **Валидация SVG-разметки**: `optimizeSvgContent` теперь строго проверяет наличие корневого тега `<svg>` и выдает понятную ошибку при передаче не-SVG текста.
* **Безопасная обработка бюджета**: `assertBudgetAvailable` защищен от `NaN`, нечисловых и неопределенных значений стоимости.
* **Расширенное тестирование**: Добавлен набор тестов `test/batch3-quality.test.mjs`, общее число тестов выросло до **126 (100% pass)**.

### 🚀 Что нового в v0.10.14
* **Единый дизайн в стиле dsh-clinebot (#210)**: Интерфейс настроек переработан в соответствии со стандартами `dsh-clinebot`. Добавлен верхний дашборд быстрой статистики (`.ig-grid-4`, `.ig-stat-box`), отображающий активного провайдера, формат и размер, статус Quality Gate и лимит Loop Guard, дневной бюджет и состояние кэша.
* **5 категорий настроек (табы)**: Поля сгруппированы по вкладкам: ⚙️ Основные, 🔌 Провайдер, ✨ Промпт и стили, 🛡️ Безопасность и бюджет, ⚡ Кэш и хранение.
* **Защита интерфейса через ErrorBoundary**: Все формы настроек и тулвью обёрнуты в компонент `ErrorBoundary` с возможностью повтора (Retry), что изолирует возможные ошибки отрисовки от основного интерфейса DSH.
* **Полная синхронизация Config ↔ Client FIELDS ↔ Словари**: Синхронизированы все 40 параметров конфигурации. В интерфейс выведены управление `qualityGate`, `dailyBudgetUsd`, `loopGuardLimit`, `diskCache`, `subscriptionQuality`, `cacheBySeed`, `cacheByPrompt`.
* **Регистрация Toolview для всех 8 визуальных инструментов**: Карточка `tool.call.toolview` теперь регистрируется для `generate_image`, `edit_image`, `vary_image`, `blend_images`, `generate_image_pack`, `remove_background`, `upscale_image`, `vectorize_image`.
* **Комплексная защита от циклов и утечек API-ключей**: Расширено действие `trackAndAssertLoopGuard`, проверки бюджета `assertBudgetAvailable` и санитизации ошибок `sanitizeErrorAndLogs` на инструменты `edit_image`, `vary_image`, `blend_images`, `remove_background`, `upscale_image`. Добавлен параметр `seedreamBaseURL`.

### 🚀 Что нового в v0.10.13
* **Размещение карточки настроек (#208)**: Карточка настроек плагина перенесена строго в стандартную вкладку «Настройки → Плагины → Настройки плагинов» (слот `settings.plugin.item`). Удалён устаревший запасной путь `settings.section`, из-за которого настройки отображались отдельным пунктом в общем корневом меню настроек.
* **Безопасная отложенная регистрация слота (`registerSlotWhenReady`)**: Регистрация через `ctx.slots.inject` гарантирует корректную загрузку и монтирование формы настроек при открытии страницы в DSH UI без ошибок синхронизации.

### 🚀 Что нового в v0.10.12
* **Исправление синтаксической ошибки (#208)**: Устранено повторное объявление переменной (`const hPrompt`) в функции `checkCache` внутри `lib/index.js`. Добавлена автоматическая проверка синтаксиса всех модулей в набор юнит-тестов.

### 🚀 Что нового в v0.10.11 (#165, #166, #167, #168, #169, #170)
* **Negative Prompt Sanitizer (#165)**: Автоматическая санитизация и дедупликация негативных промптов для диффузионных моделей (SDXL, ComfyUI, Seedream, Local) с защитой от конфликта стилей (сохраняет намеренно запрошенную зернистость, винтажность или тени).
* **Quality Gate и Silent Re-roll (#166)**: Экспресс-контроль резкости/энтропии кадра и интеграция с `dsh-vision-bridge` с автоматическим тихим ре-роллом дефектных, пустых или черных кадров (до 2 попыток).
* **Интеграция с dsh-cost-meter и суточный бюджет (#167)**: Тарифная сетка по провайдерам и разрешениям, фиксация расходов в `~/.dsh/storages/dsh-image-gen-spend.json` и защита от перерасхода суточного бюджета (`dailyBudgetUsd`).
* **Fail-Fast Loop Guard (#168)**: Защита от бесконечного зацикливания агента в рамках сессии (максимум 3 последовательные генерации подряд без ответа пользователя).
* **Маскирование ключей и безопасность (#169)**: Полная санитизация токенов в логах, ошибках и URL (`Bearer sk-...abcd`) и права доступа `0600` на файлы конфигурации.
* **Контентно-адресуемый дисковый кэш (#170)**: Мгновенная отдача (<50мс, нулевая стоимость) повторных идентичных генераций по SHA-256 хэшу параметров с автоочисткой по LRU (лимит 500 МБ) и опцией принудительного обхода `force: true`.

### 🚀 Что нового в v0.10.10 (#201, #203)
* **Стабилизация окна настроек GUI (#201)**: Исправлена спецификация `booleanField` в клиентском коде, вызывавшая падение рендера карточки настроек плагина в DSH Web UI. Форма настроек теперь открывается штатно со всеми полями, селекторами провайдеров, моделями, ссылками на ключи и пресетами.
* **Очистка интерфейса настроек (#203)**: Из окна настроек убрана встроенная галерея истории генераций, загромождавшая карточку настроек.
* **Полная локализация (#201)**: Добавлены все недостающие строки переводов и подсказок на русском и английском языках для всех поддерживаемых провайдеров.
* **Надёжная регистрация слотов**: Реализован `registerFirst` с плавным откатом между `settings.plugin.item` и `settings.section`.

## 🎨 Поддерживаемые провайдеры генерации

* **`fal`** *(дефолт)*: Сверхбыстрая очередь FAL.ai (`FLUX.1-schnell`, `FLUX-dev`, `SDXL`, BiRefNet, Clarity Upscaler).
* **`replicate`**: Модели сообщества через Replicate API.
* **`custom`**: Любой OpenAI-совместимый эндпоинт (DALL-E 3, SiliconFlow, Together AI, локальный шлюз).
* **`codex`**: Генерация через ChatGPT Plus/Pro подписку (`dsh-subscriptions` OAuth без оплаты токенов).
* **`grok`**: Генерация через Grok Imagine подписку (`dsh-subscriptions` OAuth).
* **`local`**: Локальный ComfyUI (граф нод) или Automatic1111 (SD WebUI).
* **`seedream`**: ByteDance Doubao / SeaDream API.
* **`gemini`**: Google Imagen 3 через GenAI API.

---

## 📦 Быстрая установка

```bash
dsh plugin --profile web add @goodandready/dsh-image-gen
```

---

## ⚙️ Пример конфигурации (`settings.yaml`)

```yaml
dsh-image-gen:
  provider: fal                          # fal | replicate | custom | codex | grok | local | seedream | gemini
  model: fal-ai/flux-2/klein/9b          # Модель по умолчанию
  apiKeyEnv: FAL_API_KEY                 # Переменная окружения для ключа
  defaultSize: landscape_4_3             # square_hd | landscape_4_3 | landscape_16_9 | portrait_4_3 | portrait_16_9
  defaultFormat: png                     # png | jpeg | webp
  cacheBySeed: true                      # Детерминированное кэширование повторных запросов
  pruneDays: 30                          # Автоочистка файлов и sidecar старше 30 дней
  outputDir: generated/images            # Каталог сохранения готовых изображений
```

---

## 📄 Лицензия

MIT © [GooDAnDReaDY](https://github.com/GooDAnDReaDY)