Загрузка данных


# PODOROV AI — создание полноценного Windows-приложения с искусственным интеллектом

## 1. ТВОЯ РОЛЬ

Ты — опытная команда разработчиков, состоящая из senior-разработчика desktop-приложений, UI/UX-дизайнера, frontend-разработчика и специалиста по интеграции AI API.

Твоя задача — не просто написать пример кода или нарисовать макет, а создать полноценное, рабочее, визуально качественное приложение для Windows под названием **Podorov AI**.

Самостоятельно:

- Продумай архитектуру приложения.
- Создай все необходимые файлы проекта.
- Реализуй интерфейс, логику, настройки и интеграции.
- Установи необходимые зависимости.
- Запусти приложение и исправь обнаруженные ошибки.
- Проверь работу основных функций.
- Подготовь понятную инструкцию по запуску.
- Подготовь ZIP-архив проекта и, если среда позволяет, установщик Windows `.exe`.

Не останавливайся на планировании, описании или демонстрационном макете. После краткого анализа переходи к реализации.

Если какой-либо сервис требует API-ключ, создай полноценное поле для его ввода и понятное сообщение о том, как получить ключ. Не подменяй реальные функции фальшивыми кнопками и имитациями.

---

# 2. КОНЦЕПЦИЯ ПРИЛОЖЕНИЯ

**Название:** Podorov AI.

**Тип:** полноценное desktop-приложение для Windows.

**Основная идея:** персональный универсальный AI-ассистент, с которым можно общаться текстом и голосом.

Это не обычный сайт, открытый в браузере, а отдельное приложение со своим окном, настройками, историей диалогов и индивидуальным стилем общения.

Пользователь должен иметь возможность:

- Общаться с ИИ на любые обычные темы.
- Задавать вопросы и получать подробные ответы.
- Выбирать характер и стиль поведения ассистента.
- Самостоятельно менять системный промпт.
- Создавать собственные режимы общения.
- Слушать ответы ИИ с помощью ElevenLabs.
- Настраивать голос, скорость и автоматическое озвучивание.
- Сохранять историю диалогов.
- Создавать новые чаты, переименовывать и удалять старые.
- Копировать ответы.
- Останавливать генерацию и воспроизведение голоса.
- Настраивать внешний вид приложения.
- Хранить настройки локально на компьютере.

Приложение должно ощущаться как современный персональный AI-продукт премиум-класса.

---

# 3. ВИЗУАЛЬНЫЙ СТИЛЬ

## 3.1. Главная идея дизайна

Создай современный интерфейс в направлении:

- Dark Liquid Glass.
- Premium Glassmorphism.
- Современные desktop-интерфейсы AI-продуктов.
- Минимализм с выразительными деталями.
- Тёмная фиолетовая эстетика.
- Полупрозрачные поверхности, мягкие градиенты и глубина.

Интерфейс должен выглядеть дорого, технологично и аккуратно.

Не делай обычный скучный чат с белыми прямоугольниками на чёрном фоне.

При этом не перегружай экран свечением, неоном и декоративными элементами. Красивый интерфейс должен оставаться удобным для ежедневной работы.

Не копируй один в один существующие приложения. Создай собственную визуальную систему Podorov AI.

## 3.2. Цветовая палитра

Основная палитра — глубокие тёмные оттенки с фиолетовыми и сине-лиловыми акцентами.

Используй следующие значения как начальную основу:

- Основной фон: `#090810`.
- Вторичный фон: `#100D1B`.
- Фон боковой панели: `rgba(22, 17, 37, 0.78)`.
- Основная стеклянная поверхность: `rgba(35, 26, 57, 0.56)`.
- Более плотная поверхность: `rgba(25, 20, 42, 0.92)`.
- Полупрозрачная поверхность: `rgba(255, 255, 255, 0.035)`.
- Основной фиолетовый: `#8B5CF6`.
- Светлый фиолетовый: `#A78BFA`.
- Неоновый акцент: `#B78AFF`.
- Сине-фиолетовый акцент: `#6366F1`.
- Дополнительный голубой: `#8B9DFF`.
- Основной текст: `#F5F3FF`.
- Вторичный текст: `#B6AEC9`.
- Приглушённый текст: `#817892`.
- Цвет границ: `rgba(205, 180, 255, 0.13)`.
- Цвет границы при наведении: `rgba(167, 139, 250, 0.38)`.
- Цвет успешного действия: мягкий зелёный.
- Цвет ошибки: мягкий красно-розовый.

Не используй чистый фиолетовый везде. Чередуй тёмные поверхности, приглушённые оттенки и небольшие светящиеся акценты.

Все цвета должны храниться в CSS-переменных, чтобы впоследствии можно было легко менять тему.

## 3.3. Фон приложения

Фон должен быть глубоким, почти чёрным, с едва заметными фиолетовыми градиентами.

Добавь несколько больших размытых световых пятен:

- Одно в верхнем левом углу.
- Второе в правой части окна.
- Третье небольшое ближе к нижнему краю.

Используй большие radial-gradient, blur и низкую непрозрачность.

Свечение должно быть частью фона, а не мешать чтению текста.

Добавь очень лёгкое медленное движение градиентов, если это не снижает производительность. Предусмотри отключение анимаций в настройках и поддержку системной настройки `prefers-reduced-motion`.

Не используй яркий фон, который постоянно отвлекает пользователя.

## 3.4. Liquid Glass

Liquid Glass — важнейшая часть дизайна.

Используй стеклянный эффект для:

- Боковой панели.
- Верхней панели управления.
- Поля ввода сообщения.
- Всплывающих окон.
- Меню настроек.
- Карточек приветствия.
- Меню выбора режима.
- Небольших контекстных панелей.
- Подсказок и уведомлений.

Принципы оформления стеклянных поверхностей:

1. Полупрозрачный фон.
2. `backdrop-filter: blur(...) saturate(...)`.
3. Тонкая светлая граница.
4. Мягкая внутренняя подсветка.
5. Ненавязчивая тень.
6. Лёгкий градиент на поверхности.
7. Скруглённые углы.
8. Контрастный текст поверх стекла.

Пример направления для CSS:

`background: rgba(28, 22, 45, 0.64);`

`backdrop-filter: blur(24px) saturate(145%);`

`border: 1px solid rgba(220, 200, 255, 0.12);`

`box-shadow: 0 12px 40px rgba(0, 0, 0, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.045);`

Это пример, а не обязательные одинаковые значения для каждого элемента. Подбирай интенсивность стекла отдельно для разных типов поверхностей.

Важно:

- Стекло должно оставаться читаемым.
- Не делай все элементы одинаково прозрачными.
- Для важных настроек используй более плотные поверхности.
- Не применяй blur ко всему окну без необходимости.
- Предусмотри fallback для окружений, где `backdrop-filter` недоступен.
- Избегай тяжёлых эффектов, которые вызывают тормоза.

## 3.5. Скругления и геометрия

Используй единую систему радиусов:

- Маленькие кнопки и элементы: 10–12 px.
- Поля ввода: 16–20 px.
- Карточки: 18–22 px.
- Крупные панели: 22–28 px.
- Основные плавающие контейнеры: до 28 px.

Не превращай все кнопки в огромные капсулы. Форма элементов должна зависеть от их назначения.

Используй свободное пространство, одинаковые отступы и выравнивание по общей сетке.

## 3.6. Шрифты

Шрифт должен быть современным, чистым и хорошо читаемым на русском языке.

Основной выбор — **Inter**. Если доступен качественный вариант с поддержкой кириллицы, используй его. Допустимые альтернативы — Manrope или Geist с полноценной поддержкой русского текста.

Подключай шрифт локально или используй надёжный способ его включения, чтобы приложение не зависело от доступности внешнего сайта при запуске.

Пример:

`font-family: "Inter", "Manrope", system-ui, sans-serif;`

Размеры:

- Основной текст: 14–15 px.
- Подписи: 12–13 px.
- Названия разделов: 14–16 px.
- Заголовок приветствия: 30–38 px.
- Заголовок диалога: 16–18 px.
- Крупный текст на стартовом экране: до 42 px.

Используй нормальную высоту строк, аккуратные интервалы между буквами и несколько весов шрифта.

Не делай весь текст жирным. Выделяй заголовки, названия и важные элементы, сохраняя визуальную иерархию.

Русский текст не должен обрезаться, ломать вёрстку или отображаться неправильными символами.

---

# 4. ОБЩАЯ КОМПОНОВКА ОКНА

Создай приложение с адаптивной компоновкой.

Основные зоны:

1. Боковая панель навигации.
2. Центральная область диалога.
3. Верхняя панель текущего чата.
4. Область сообщений.
5. Закреплённая нижняя панель ввода.
6. Модальные окна и всплывающие меню.

Используй Flexbox и CSS Grid. Центральная часть должна занимать оставшееся пространство без горизонтальной прокрутки.

Не допускай наложения сообщений на поле ввода, обрезанных кнопок, съехавших элементов и выхода компонентов за пределы окна.

При изменении размера окна интерфейс должен перестраиваться корректно.

## 4.1. Размеры

Предусмотри нормальную работу при разрешениях:

- 1920 × 1080.
- 1600 × 900.
- 1366 × 768.
- 1280 × 720.
- 1024 × 768.
- Компактное окно около 800 × 600.

Для больших экранов не растягивай текст сообщений на всю ширину. Ограничивай ширину основной области чтения примерно 800–900 px, но позволяй менять её при необходимости.

На маленьких размерах боковая панель должна сворачиваться или превращаться в компактную панель.

---

# 5. ЗАГОЛОВОК И БРЕНДИНГ

Название приложения — **Podorov AI**.

Создай собственный минималистичный логотип.

Направление логотипа:

- Абстрактная геометрическая форма.
- Связь с искусственным интеллектом.
- Лёгкий фиолетовый градиент.
- Возможность использовать иконку отдельно от текста.
- Хорошая читаемость на маленьком размере.

Не используй случайные стандартные эмодзи в качестве логотипа.

В верхней части боковой панели размести:

- Иконку Podorov AI.
- Название `Podorov AI`.
- Небольшой индикатор состояния, если это действительно полезно.

Не делай огромный логотип, занимающий четверть экрана.

Создай иконку приложения для Windows, favicon для внутренних ресурсов и подходящий вариант для установщика, если сборка это позволяет.

---

# 6. БОКОВАЯ ПАНЕЛЬ

Боковая панель — отдельная стеклянная поверхность с тёмным фоном.

Она должна быть визуально отделена от центрального окна, но не выглядеть тяжёлой рамкой.

Примерная ширина на обычном экране: 245–275 px.

В верхней части:

- Логотип.
- Название Podorov AI.
- Кнопка сворачивания панели.

Ниже — заметная кнопка `+ Новый чат`.

Кнопка должна:

- Иметь лёгкий фиолетовый градиент.
- Показывать иконку плюса.
- Реагировать на наведение.
- Создавать новый диалог по нажатию.
- Иметь понятное состояние нажатия.

Следующий раздел — `ЧАТЫ`.

Показывай историю диалогов:

- Название чата.
- Небольшую иконку.
- Активный чат с подсветкой.
- Кнопку дополнительного меню при наведении.

Для чатов реализуй:

- Создание.
- Открытие.
- Переименование.
- Удаление с подтверждением.
- Сортировку по времени последнего сообщения.

Если диалогов много, добавь прокрутку внутри списка.

Внизу панели:

- Настройки.
- Информация о текущем AI-провайдере.
- Небольшой индикатор подключения, если он проверяется реальным запросом.
- Версия приложения.

Не показывай ложный статус «Подключено», если соединение не проверялось.

---

# 7. ГЛАВНЫЙ ЭКРАН

Когда пользователь открывает новый пустой чат, покажи приветственный экран.

В центре:

- Небольшой светящийся логотип.
- Заголовок: `Привет! Я Podorov AI`
- Подзаголовок: `Твой ИИ. Твои правила. Твой стиль.`
- Поле ввода сообщения.
- Несколько карточек с примерами запросов.

Примеры карточек:

- `Объясни сложную тему простыми словами`.
- `Помоги придумать идею`.
- `Разбери задачу по шагам`.
- `Напиши или улучши текст`.

Карточки должны быть интерактивными: по нажатию пример вставляется в поле ввода либо сразу отправляется — выбери наиболее удобное и предсказуемое поведение.

Не используй шаблонные огромные иллюстрации и случайные изображения.

Пусть главный экран выглядит минималистично, технологично и свободно.

После отправки первого сообщения приветственный экран исчезает, и открывается обычный чат.

---

# 8. ЧАТ

Чат — центральная функция приложения.

## 8.1. Сообщения пользователя

Сообщения пользователя должны быть визуально отличимы от сообщений ИИ.

Оформи их аккуратными карточками с умеренным фиолетовым оттенком, достаточными внутренними отступами и скруглениями.

Не растягивай каждое сообщение на всю ширину экрана, если текст короткий.

Длинные сообщения должны переноситься корректно.

## 8.2. Сообщения ИИ

Ответы ИИ должны выглядеть чисто и читабельно.

Предпочтительно:

- Без огромных цветных карточек вокруг каждого ответа.
- С хорошей типографикой.
- С нормальными интервалами между абзацами.
- С поддержкой маркированных и нумерованных списков.
- С поддержкой Markdown.
- С аккуратным отображением кода.
- С поддержкой таблиц.
- С правильным отображением формул, если реализована соответствующая библиотека.

Код должен отображаться в отдельном блоке с кнопкой копирования.

Ссылки должны визуально отличаться от обычного текста.

Внешний контент нельзя автоматически исполнять как HTML. Используй безопасный Markdown-рендерер и очищай недоверенную разметку.

## 8.3. Кнопки у ответа

Добавь компактные кнопки действий:

- Копировать ответ.
- Озвучить.
- Остановить озвучивание, когда оно активно.
- Повторить генерацию.
- При необходимости — остановить генерацию.

Показывай дополнительные кнопки при наведении на сообщение, но оставляй их доступными с клавиатуры.

После копирования показывай небольшое уведомление `Скопировано`.

Не создавай кнопки без работающего действия.

## 8.4. Генерация ответа

Показывай состояние генерации:

- Ненавязчивую анимацию.
- Текст `Podorov AI думает...` или аналогичный.
- Возможность отменить запрос.

Если выбранный API поддерживает потоковую генерацию, показывай ответ по мере поступления текста.

Если запрос завершился ошибкой, сохрани введённое сообщение и покажи понятное объяснение с возможностью повторить попытку.

Не очищай поле ввода до успешной отправки сообщения в обработчик.

## 8.5. История и прокрутка

Реализуй:

- Автоматическую прокрутку вниз во время ответа, если пользователь находится внизу.
- Отсутствие принудительной прокрутки, если пользователь читает старые сообщения.
- Удобное возвращение к последнему сообщению.
- Сохранение сообщений после перезапуска приложения.
- Корректное отображение длинных диалогов.

История должна храниться отдельно для каждого чата.

---

# 9. ПОЛЕ ВВОДА

Поле ввода — одна из самых важных частей интерфейса.

Оно должно быть закреплено внизу центральной области и выглядеть как большая плавающая стеклянная панель.

Визуально:

- Тёмная полупрозрачная поверхность.
- Blur.
- Тонкая граница.
- Мягкое фиолетовое свечение при фокусе.
- Радиус около 20 px.
- Достаточные внутренние отступы.
- Плавное увеличение высоты при наборе длинного текста.

Внутри:

- Многострочное поле ввода.
- Кнопка отправки.
- Кнопка озвучивания ответа не должна путаться с отправкой.
- Кнопка остановки генерации, когда она активна.

Плейсхолдер: `Напиши что-нибудь...`

Поведение:

- Enter отправляет сообщение.
- Shift + Enter добавляет новую строку.
- Пустое сообщение отправить нельзя.
- При генерации можно остановить запрос.
- После отправки фокус возвращается в поле ввода, если это удобно и не мешает пользователю.

Кнопка отправки:

- Фиолетовый акцент.
- Понятная иконка.
- Hover-эффект.
- Состояние нажатия.
- Отключённое состояние, когда отправка невозможна.

Поддержи базовые сочетания клавиш и не перехватывай сочетания, которые пользователь ожидает от системы.

---

# 10. ИНТЕГРАЦИЯ С ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ

В качестве основного AI-провайдера используй **Gemini API от Google**.

Сайт для получения ключа:\
[https://aistudio.google.com/apikey](https://aistudio.google.com/apikey)

Выбирай доступную модель Gemini, которая подходит для текстового общения и имеет бесплатный уровень использования на момент настройки проекта.

Не зашивай название модели в разные участки кода. Храни его в конфигурации и позволяй менять модель в настройках, если выбранный API это поддерживает.

Не утверждай, что любой API полностью бесплатен. Учитывай актуальные лимиты, доступность моделей и возможные ограничения аккаунта.

Реализуй:

- Отправку сообщений.
- Получение ответов.
- Контекст предыдущих сообщений текущего чата.
- Настраиваемый системный промпт.
- Настройки генерации, если они поддерживаются выбранной моделью.
- Обработку сетевых ошибок.
- Обработку ошибок авторизации.
- Обработку ограничений частоты запросов.
- Отмену генерации, насколько это позволяет используемый API.
- Возможность сменить модель без изменения кода.

Не отправляй в API всю историю всех чатов. Передавай только необходимый контекст текущего диалога.

Предусмотри ограничение длины контекста и разумную обработку длинных разговоров.

API-ключ должен вводиться пользователем в настройках. Если ключ отсутствует, покажи понятное окно настройки вместо непонятной ошибки.

Не придумывай ответы, когда API недоступен. Показывай реальную ошибку соединения.

---

# 11. СИСТЕМНЫЙ ПРОМПТ И ХАРАКТЕР ИИ

Это одна из ключевых особенностей Podorov AI.

Пользователь должен иметь возможность полностью менять то, как ведёт себя ассистент.

Создай раздел `Личность ИИ`.

В нём:

- Большое многострочное поле системного промпта.
- Кнопка сохранения.
- Кнопка сброса к стандартному промпту.
- Кнопка предварительного просмотра текущих настроек.
- Список готовых личностей.
- Возможность создавать собственные личности.
- Возможность переименовывать, дублировать и удалять пользовательские личности.

Встроенные личности:

### 1. Универсальный помощник

Спокойный, умный, понятный ассистент для повседневных задач.

### 2. Друг

Неформальный, живой, с естественным языком и лёгким юмором. Не должен звучать как безликий робот.

### 3. Строгий преподаватель

Объясняет по существу, исправляет ошибки, помогает разобраться в сложных темах.

### 4. Сократ

Вместо немедленного ответа задаёт наводящие вопросы и помогает самостоятельно прийти к выводу.

### 5. Помощник в учёбе

Разбирает задания по шагам, объясняет причины ошибок и помогает учиться.

### 6. Полностью пользовательский режим

Поведение определяется текстом, который пользователь сам написал в системном промпте.

Пользовательская личность должна иметь:

- Название.
- Описание.
- Собственный системный промпт.
- Возможность выбора по умолчанию.

Важно: смена личности должна реально изменять системную инструкцию, передаваемую AI API. Недостаточно изменить только название или цвет кнопки.

При переключении режима чётко определяй, применяется ли он только к новым сообщениям или ко всему текущему диалогу. Отображай это поведение понятно и предсказуемо.

Не допускай, чтобы случайное содержимое обычного сообщения пользователя автоматически перезаписывало системные настройки приложения.

---

# 12. ГОЛОС ЧЕРЕЗ ELEVENLABS

Интегрируй ElevenLabs для преобразования текста ответов ИИ в речь.

Сайт:\
[https://elevenlabs.io/](https://elevenlabs.io/)

Настройки API:\
[https://elevenlabs.io/app/settings/api-keys](https://elevenlabs.io/app/settings/api-keys)

Пользователь должен иметь возможность ввести:

- ElevenLabs API Key.
- Voice ID.
- Модель синтеза речи, если она доступна в выбранном API.
- Скорость речи, если её поддерживает используемый endpoint.

Создай раздел настроек `Голос`.

## 12.1. Функции голоса

Реализуй:

- Озвучивание конкретного ответа.
- Остановку озвучивания.
- Повторное воспроизведение.
- Переключение голоса.
- Тестовое озвучивание.
- Автоматическое озвучивание новых ответов.
- Сохранение настроек голоса.

Кнопка озвучивания должна находиться рядом с ответом ИИ.

Во время воспроизведения:

- Показывай активное состояние.
- Позволяй остановить аудио.
- Не запускай несколько потоков одновременно без необходимости.

Если пользователь нажал «Стоп», воспроизведение должно остановиться, а не просто скрыть визуальный индикатор.

## 12.2. Автоматический голосовой режим

Добавь переключатель:

`Автоматически озвучивать ответы`

Когда переключатель включён, новые ответы ИИ автоматически отправляются на синтез речи.

Когда выключен, озвучивание запускается вручную.

Не запускай озвучивание до того, как текст ответа действительно получен.

Если запрос синтеза речи завершился ошибкой, сам текстовый ответ должен остаться доступным.

## 12.3. Ошибки и лимиты

Если отсутствует API-ключ, покажи инструкцию по настройке.

Если API вернул ошибку, покажи её в понятной форме.

Учитывай ограничения тарифа и не запускай бесконечные повторные запросы.

Не отправляй повторно уже синтезированный текст без необходимости.

Сохраняй аудио во временной области приложения и удаляй временные файлы, когда они больше не нужны.

Не сохраняй голосовые данные бесконечно без согласованного с пользователем поведения.

---

# 13. НАСТРОЙКИ ПРИЛОЖЕНИЯ

Создай отдельное окно или полноценную страницу настроек.

Визуально оно должно соответствовать общей стеклянной теме.

Разделы:

1. Основные.
2. Внешний вид.
3. Искусственный интеллект.
4. Личность ИИ.
5. Голос.
6. История и данные.
7. О приложении.

## Основные

- Запускать приложение с последними настройками.
- Поведение Enter и Shift + Enter.
- Автопрокрутка чата.
- Подтверждение удаления диалогов.
- Сброс настроек.

## Искусственный интеллект

- Поле API-ключа.
- Скрытие ключа по умолчанию.
- Кнопка показать/скрыть.
- Кнопка проверки соединения.
- Выбор модели.
- Настройки генерации, если поддерживаются.
- Информация о возможных лимитах.

## Голос

- API-ключ ElevenLabs.
- Voice ID.
- Выбор доступной модели.
- Скорость речи, если поддерживается.
- Автоозвучивание.
- Кнопка тестирования голоса.
- Кнопка остановки воспроизведения.

## История и данные

- Экспорт истории чатов.
- Импорт истории с проверкой формата.
- Удаление одного чата.
- Очистка всей истории с подтверждением.
- Экспорт пользовательских личностей.
- Импорт настроек.
- Сброс настроек.

При экспорте настроек по умолчанию исключай API-ключи.

Не импортируй произвольные данные без проверки структуры и размера файла.

---

# 14. ДИЗАЙН ОКНА НАСТРОЕК

Не используй обычный браузерный вид с серыми полями и стандартными кнопками.

Сделай:

- Боковую навигацию по категориям.
- Центральную область с содержимым.
- Заголовок текущего раздела.
- Краткое описание параметров.
- Поля с единым оформлением.
- Современные переключатели.
- Аккуратные выпадающие списки.
- Кнопки сохранения и сброса.
- Уведомления о сохранении.

Настройки должны быть сгруппированы в отдельные карточки.

Каждая настройка должна иметь понятное название и, когда необходимо, короткое объяснение.

Не показывай пользователю внутренние технические названия переменных и функций.

Сохранение должно происходить предсказуемо: либо автоматически с небольшим индикатором, либо через кнопку сохранения для крупных форм. Не смешивай эти два поведения хаотично.

---

# 15. МИКРОАНИМАЦИИ И СОСТОЯНИЯ

Анимации должны быть плавными и короткими.

Ориентиры:

- Hover: 120–180 мс.
- Нажатие кнопки: 80–140 мс.
- Открытие меню: 160–220 мс.
- Появление модального окна: 180–240 мс.
- Переключение вкладок: 140–200 мс.

Используй мягкие переходы и естественные easing-кривые.

Добавь:

- Лёгкое появление сообщений.
- Подсветку активного чата.
- Мягкое свечение кнопок при наведении.
- Состояние фокуса у полей.
- Анимацию индикатора генерации.
- Плавное открытие боковой панели.
- Ненавязчивое появление уведомлений.
- Состояния загрузки у кнопок.

Не используй:

- Постоянное сильное мигание.
- Резкие скачки размеров.
- Длительные анимации каждого сообщения.
- Бесконечные тяжёлые эффекты.
- Анимации, мешающие чтению.

При отключении анимаций приложение должно оставаться полностью функциональным.

---

# 16. КНОПКИ И ИНТЕРАКТИВНОСТЬ

У каждой кнопки должны быть:

- Обычное состояние.
- Hover.
- Active.
- Focus-visible.
- Disabled, если действие временно недоступно.
- Loading, если выполняется запрос.

Иконки должны быть из единого набора, например Lucide.

Не смешивай эмодзи, разноцветные SVG и случайные иконки разных стилей.

Поддержи:

- Навигацию клавиатурой.
- Видимый фокус.
- Достаточную контрастность.
- Понятные названия кнопок для вспомогательных технологий.
- Всплывающие подсказки для иконок без текста.

Не делай интерактивные элементы настолько маленькими, чтобы по ним было трудно попасть мышью.

---

# 17. СОХРАНЕНИЕ ДАННЫХ

Используй локальное хранение для:

- Настроек.
- Истории чатов.
- Пользовательских личностей.
- Выбранной темы.
- Настроек голоса.
- Последнего открытого чата.

Для небольшого приложения можно использовать подходящее локальное хранилище или SQLite.

Выбери решение, которое обеспечивает надёжное сохранение данных и не усложняет проект без необходимости.

Требования:

- Данные не исчезают после перезапуска.
- Ошибочные данные не ломают запуск.
- Миграции схемы выполняются аккуратно.
- Удаление данных требует подтверждения, если действие необратимо.
- Экспорт и импорт проверяют структуру.
- Временные файлы очищаются.
- В консоль не выводятся секреты.

Не создавай несколько конкурирующих систем хранения. Используй одну понятную архитектуру.

---

# 18. ТЕХНОЛОГИИ

Предпочтительный стек:

- Electron.
- HTML.
- CSS.
- JavaScript с понятной модульной структурой.
- Gemini API.
- ElevenLabs API.
- Lucide Icons.
- Подходящее локальное хранилище.
- Инструменты сборки Windows-приложения, например electron-builder.

Не усложняй проект большим количеством фреймворков без причины.

Если выберешь React или другой UI-фреймворк, реализуй его последовательно и полностью. Не смешивай несколько несовместимых подходов.

Приложение должно запускаться как отдельное Windows-окно.

## Безопасность Electron

Обязательно:

- `contextIsolation: true`.
- `nodeIntegration: false`.
- Использовать preload для безопасного обмена между интерфейсом и системной частью.
- Предоставлять только необходимые IPC-методы.
- Проверять аргументы IPC.
- Не открывать произвольный исполняемый код из сообщений ИИ.
- Не разрешать недоверенному HTML выполнять JavaScript.
- Ограничивать открытие внешних ссылок.
- Не отключать веб-безопасность ради простоты.

Не помещай секретные API-ключи в публичный frontend-код и не публикуй их в репозитории.

Учитывай, что локальное хранение ключей в desktop-приложении не гарантирует абсолютную защиту от доступа владельца компьютера или вредоносных программ. По возможности используй безопасное хранилище ОС либо другое обоснованное решение.

Не записывай ключи в логи, экспортированные настройки и сообщения об ошибках.

---

# 19. СТРУКТУРА ПРОЕКТА

Создай логичную структуру папок.

Например:

- `package.json`
- `main.js`
- `preload.js`
- `src/`
- `src/index.html`
- `src/styles/`
- `src/styles/base.css`
- `src/styles/theme.css`
- `src/styles/components.css`
- `src/scripts/`
- `src/scripts/app.js`
- `src/scripts/chat.js`
- `src/scripts/settings.js`
- `src/scripts/storage.js`
- `src/scripts/ai-provider.js`
- `src/scripts/voice-provider.js`
- `src/scripts/personas.js`
- `assets/`
- `README.md`
- `.gitignore`

Это ориентировочный пример. Адаптируй структуру под выбранный стек.

Не создавай десятки файлов, которые дублируют одну и ту же логику.

Код должен быть понятным, разделённым по ответственности и пригодным для дальнейшего развития.

---

# 20. ПРОИЗВОДИТЕЛЬНОСТЬ

Приложение должно работать плавно на обычном компьютере с Windows.

Избегай:

- Бесконечных циклов обновления интерфейса.
- Неограниченного роста DOM.
- Одновременного запуска нескольких ненужных анимаций.
- Многократной отправки одного запроса.
- Утечек временных аудиоресурсов.
- Повторной инициализации обработчиков событий.
- Неограниченного накопления временных файлов.

При больших историях чатов не загружай всё лишнее в интерфейс без необходимости.

Если пользователь закрыл окно во время запроса, корректно обработай завершение процесса и временные ресурсы.

---

# 21. ОБРАБОТКА ОШИБОК

Любая ошибка должна быть понятной обычному пользователю.

Примеры сообщений:

- `Не удалось подключиться к ИИ. Проверь интернет и попробуй ещё раз.`
- `Не указан API-ключ Gemini. Добавь его в настройках.`
- `Сервис временно ограничил количество запросов. Попробуй немного позже.`
- `Не удалось озвучить ответ. Проверь настройки ElevenLabs.`
- `Не удалось сохранить настройки. Попробуй ещё раз.`

Технические подробности можно записывать в локальный журнал, но не включай в него секреты и личное содержимое чатов без необходимости.

Не показывай пользователю огромные необработанные JSON-ошибки.

Если действие не выполнено, не показывай сообщение об успешном завершении.

---

# 22. ДОСТУПНОСТЬ И УДОБСТВО

Приложение должно быть удобно при ежедневном использовании.

Обязательно:

- Читаемый русский текст.
- Достаточная контрастность.
- Удобные отступы.
- Предсказуемое поведение клавиш.
- Доступные с клавиатуры элементы.
- Видимые состояния фокуса.
- Понятные сообщения об ошибках.
- Подтверждение опасных действий.
- Отсутствие горизонтальной прокрутки в обычном режиме.
- Корректная работа с длинными текстами.
- Поддержка изменения размера окна.

Liquid Glass не должен ухудшать читаемость.

---

# 23. ПОДГОТОВКА К ЗАПУСКУ

Пользователь не должен разбираться в сложной настройке проекта.

Создай README на русском языке.

В README опиши:

1. Что такое Podorov AI.
2. Какие функции реализованы.
3. Какие программы нужны для запуска.
4. Как установить Node.js LTS.
5. Как установить зависимости.
6. Как запустить приложение.
7. Где получить Gemini API Key.
8. Как добавить ключ Gemini.
9. Как настроить ElevenLabs.
10. Как получить Voice ID.
11. Как собрать приложение в `.exe`.
12. Где находятся локальные настройки и история.
13. Какие ограничения существуют у бесплатных тарифов.

Если возможно, добавь команды для установки зависимостей, запуска и сборки в отдельные блоки, чтобы их было удобно копировать.

Не требуй от пользователя редактировать исходный код ради добавления API-ключа.

Создай понятный `.gitignore`, исключающий секреты, локальные конфигурации и временные файлы.

---

# 24. СБОРКА WINDOWS-ПРИЛОЖЕНИЯ

Подготовь конфигурацию сборки.

Цель:

- Запуск через `npm start`.
- Сборка через понятную команду, например `npm run dist`.
- Создание установщика Windows, если используемый инструмент и среда позволяют.
- Корректное название продукта: Podorov AI.
- Подходящая иконка.
- Правильные пути к ресурсам после сборки.
- Сохранение настроек в пользовательской директории, а не внутри папки установки.

Проверь, что пути к CSS, JavaScript, изображениям и другим ресурсам работают не только в режиме разработки, но и после сборки.

Не утверждай, что созданный `.exe` проверен, если сборка реально не выполнялась.

Если среда не позволяет собрать установщик, подготовь весь исходный проект и напиши точные команды для сборки на Windows.

---

# 25. ПОРЯДОК РЕАЛИЗАЦИИ

Работай поэтапно.

Этап 1. Создай базовую структуру приложения и безопасное окно Electron.

Этап 2. Реализуй дизайн-систему: цвета, шрифты, стеклянные поверхности, кнопки, поля, карточки, модальные окна и анимации.

Этап 3. Реализуй боковую панель, создание чатов, историю и главный экран.

Этап 4. Реализуй полноценный чат с отправкой и отображением сообщений.

Этап 5. Подключи Gemini API и обработку ошибок.

Этап 6. Реализуй системный промпт, личности и пользовательские режимы.

Этап 7. Подключи ElevenLabs и все функции озвучивания.

Этап 8. Реализуй настройки, локальное хранение, экспорт и импорт.

Этап 9. Проверь адаптивность и исправь визуальные ошибки.

Этап 10. Запусти приложение, проверь его работу и исправь ошибки.

Этап 11. Подготовь README, архив проекта и сборку Windows, если это возможно.

После каждого этапа проверяй, что существующая функциональность продолжает работать.

---

# 26. КРИТЕРИИ ГОТОВНОСТИ

Проект нельзя считать завершённым, пока не выполнены следующие требования:

- Приложение действительно запускается.
- Интерфейс не является статичным макетом.
- Новый чат создаётся и сохраняется.
- История чатов сохраняется после перезапуска.
- Сообщения действительно отправляются в Gemini API.
- Ответы ИИ отображаются корректно.
- Системный промпт реально влияет на ответы.
- Личности можно выбирать и настраивать.
- ElevenLabs действительно озвучивает текст при наличии корректных настроек.
- Озвучивание можно остановить.
- Настройки сохраняются.
- API-ключи не попадают в экспорт по умолчанию.
- Основные ошибки обрабатываются.
- Кнопки выполняют свои заявленные действия.
- Нет критических ошибок в консоли.
- Интерфейс корректно выглядит на разных размерах окна.
- Инструкция по запуску написана на русском.
- Название Podorov AI используется во всём проекте.

Если какая-то функция не реализована, честно укажи это в итоговом отчёте.

Не заменяй отсутствующую интеграцию искусственной демонстрацией.

---

# 27. ФИНАЛЬНЫЙ РЕЗУЛЬТАТ

В результате я хочу получить:

1. Полностью готовый исходный проект Podorov AI.
2. Красивый современный интерфейс в тёмно-фиолетовом Liquid Glass стиле.
3. Рабочий чат с AI через Gemini API.
4. Голосовую интеграцию через ElevenLabs.
5. Системный промпт и настраиваемые личности.
6. Историю чатов и локальные настройки.
7. Понятный README на русском языке.
8. ZIP-архив проекта.
9. Windows-установщик `.exe`, если среда позволяет его собрать.
10. Краткий отчёт о выполненных проверках и известных ограничениях.

**Главный приоритет:** создать не просто красивую картинку, а реально работающий, аккуратный и удобный Windows-продукт.

Дизайн должен ощущаться премиальным: тёмный фон, глубокие фиолетовые оттенки, полупрозрачные стеклянные панели, мягкое свечение, современная типографика и плавные анимации.

Функциональность должна быть настоящей. Все основные кнопки, настройки, чаты и интеграции должны работать.

Начинай реализацию проекта прямо сейчас. Не ограничивайся объяснением того, как его можно сделать.