# Изменения CapyAgent

## v1.0.13 - подключение подписки Codex держится

Дата выпуска: 10.09.2026. Исправительный выпуск по дефектам, найденным на
боевых установках.

- обновлённый ключ обновления Codex записывается обратно в `auth.json`:
  поставщик меняет его при каждом обновлении, и после перезапуска агент
  предъявлял отработанный ключ, подписка отзывалась с ошибкой 401; запись
  атомарная, права 0600, чужие поля файла целы, два процесса над одним файлом
  не мешают друг другу; если файл не пишется, агент работает в памяти и один
  раз предупреждает в журнале;
- `/connect` доступен владельцу и людям из белого списка канала, отказ называет
  адрес владельца; раньше при заданном владельце клиент, чья подписка и
  подключается, получал отказ;
- ответ хозяина машины на `/connect` опознаётся по времени файла, а не по
  изменению содержимого: повторное подключение поверх лежащего ключа работает;
  по таймауту различаются «хозяин не ответил» и «лежит прежний ответ от даты»;
  на установке без хозяина повторный `/connect` отвечает тем же честным
  «принять некому»;
- слежка за входом сверяет метку запроса и гасится при отмене; отмена и быстрый
  повторный `/connect` не затирают друг друга; запрос ложится на диск целиком;
- длинная генерация больше не обрывается на трёх минутах: общий потолок HTTP-запроса
  к модели снят у всех поставщиков, живость держат ожидание заголовков, ожидание
  следующего куска потока (десять минут, рассуждающая модель может молчать) и срок от
  вызывающего либо настройка `CAPYAGENT_MODEL_REQUEST_MIN` (умолчание 30 минут); обрыв по истёкшему сроку не
  повторяется трижды; раньше «Глубокий анализ» закупки падал через девять минут
  тремя одинаковыми обрывами;
- если поставщик замолчал, агент уходит к запасному вместо того, чтобы ждать
  впустую: раньше зависший поставщик держал ход около получаса и заканчивался
  отказом, теперь ответ приходит от запасного, а отказ основного виден в
  кабинете и в `doctor`; к молчащему стучимся один раз, а не трижды; истёкший
  срок запроса к запасному не уводит, у него времени столько же;
- ответ поставщика, который думает над ним дольше минуты, больше не
  обрывается: ожидание первого признака ответа у непотоковых поставщиков
  поднято до десяти минут, а сообщение об обрыве называет тот срок, который
  стоит у этого поставщика;
- нажатая человеком кнопка у карточки темы (например «Пропустить») исполняется
  агентом сразу, без обращения к модели и без повторного подтверждения; запреты
  и выключенные инструменты в силе; удаление темы по инициативе самой модели
  по-прежнему требует подтверждения.

### Ограничения v1.0.13

- эффект кнопок появляется с новыми карточками (модель помечает кнопку
  действием) и только в Telegram;
- отработанный ключ прежних установок не воскресает: нужен новый вход, дальше
  файл держится свежим;
- `codex` руками против каталога агента запускать нельзя: ключ ротируется, и
  сторонний запуск сожжёт сессию;
- остальное как в v1.0.12: относительные даты и тексты усердия на английском
  виде остаются русскими, терминал печатает цветной вывод команд буквами,
  установщики не подписаны и не notarized, коннекторам нужен уже установленный
  совместимый Python.

## v1.0.12 - панель причёсана: чат как главный экран

Дата выпуска: 09.09.2026.

- чат стал главным экраном: разговор открывается сразу, а разделы панели
  переехали в шапку и в выдвижной ящик;
- знакомство проходит прямо в чате, шаг за шагом, и его ответы помнит агент, а
  не браузер: начали на компьютере, продолжили с телефона;
- файлы прикладываются скрепкой в поле ввода: приложенный файл виден фишкой до
  отправки, остаётся в переписке после неё и называется тем именем, которым его
  назвали вы;
- список файлов относится к текущей беседе, а не ко всему агенту;
- беседы собраны в колонку слева, с группами по дням и поиском; в списке видно
  название и когда был последний ответ;
- карточки систем стали компактными: имя, состояние и действие в одной строке,
  отказ системы говорит человеческой фразой вместо технического следа;
- слово состояния у поставщика модели больше не обещает лишнего: «готова»
  стоит только там, где модель можно выбрать одним нажатием;
- английский вид панели стал английским по-настоящему: имена и описания
  встроенных систем, каталога MCP и наборов инструментов переведены;
  расширения остаются на языке их авторов;
- отказ Telegram при сохранении токена уложен в одну понятную фразу;
- терминал открывается отдельным полноэкранным видом с кнопкой возврата в чат.

### Ограничения v1.0.12

- относительные даты, ответы ассистента и тексты усердия на английском виде
  остаются русскими;
- терминал показывает цветной вывод команд (например `ls`) с управляющими
  последовательностями буквами; терминал по умолчанию выключен;
- коннекторам по-прежнему нужен уже установленный совместимый Python;
- установщики не подписаны сертификатом и не notarized: Gatekeeper и
  SmartScreen могут показать предупреждение.

## v1.0.11 - установка на macOS, честный фон и закрытые ходы

Дата выпуска: при выкладке (в собранном выпуске она стоит полем `released`
в `manifest.json`).

- macOS-сборка подписывается при сборке ad-hoc, без сертификата: скачанное
  приложение больше не объявляется повреждённым, система показывает обычное
  окно «незаверено», и запуск проходит через «Все равно открыть»;
- страница установки описывает первый запуск на macOS по шагам, мышью;
- задание по расписанию не оставляет висящий вопрос: опасное действие в
  фоновом прогоне получает отказ, а отказ записывается в журнал задания, в его
  последнюю ошибку и в журнал службы;
- окружение установленной службы читают только команды, которые её
  обслуживают; свой второй экземпляр поднимается рядом ключом
  `--без-окружения-службы`;
- один каталог данных занимает один процесс: второй получает отказ с внятной
  причиной, а не тихо делит с первым бота и данные;
- ожидающее подтверждения действие сохраняется на диск до публикации,
  загружается строго и не остаётся только в памяти после ошибки записи;
- список ожидающих подтверждений отличает здоровый пустой список от
  недоступного хранилища и во втором случае отвечает HTTP 503;
- ошибка загрузки профиля команды или её правил закрывает доступ, а правила
  проверяются повторно перед завершением хода;
- каталог профилей команды публикует только целую ревизию, защищается от
  устаревшего писателя и сохраняет последнюю корректную версию при ошибке;
- HTTP-вызов передаёт сторожу и коннектору отдельные неизменяемые снимки
  точных аргументов, отклоняет неоднозначный JSON и закрывается до эффекта;
- дочерний исполнитель получает свежий снимок прав и общий родительский счёт,
  но не получает родительские правила, разговор и хранилища памяти;
- привилегированный мост desktop принимается только от ожидаемого главного
  окна и доверенного локального документа; вторичные окна его не получают;
- явно выбранный файл учётных данных Codex остаётся единственным источником:
  при его отсутствии адаптер не переключается молча на другой аккаунт;
- открытый навык удерживается в контексте между ходами: тело подаётся заново
  в каждом ходу, с пределами в двенадцать ходов, полчаса и два навыка на
  разговор, а имя и остаток ходов видны в `/статус` и `/навыки`;
- модели и ключи собраны в разделе «Настройки»;
- кеш запроса к модели включён по умолчанию там, где он даёт выгоду.

### Ограничения v1.0.11

- коннекторам по-прежнему нужен уже установленный совместимый Python;
  свой Python в комплекте и настольный набор коннекторов ещё впереди;
- установщики не подписаны сертификатом и не notarized: Gatekeeper и
  SmartScreen могут показать предупреждение.

## v1.0.10 - desktop без лишних кругов

- настроенный пользователь при запуске приложения попадает сразу в чат, а
  первый запуск без модели остаётся в безопасном мастере;
- встроенный чат больше не дублирует боковую панель, не просит уже переданный
  токен и показывает понятное состояние загрузки;
- поправлены размеры интерактивных элементов, клавиатурный фокус,
  переполнение вкладок и режим уменьшенного движения;
- найденный домашний путь показывается через `~`, но при выборе сверяется с
  заново найденным источником;
- выбранный preview памяти корректно добавляется и в уже заполненный черновик,
  после чего пользователь проверяет и сохраняет текст сам;
- нативная release-матрица теперь запускает распакованное desktop-приложение
  и проверяет его ядро авторизованным запросом;
- инструкции установки переведены на реальные файлы GitHub Release, исправлены
  имена macOS-артефактов и порядок проверки серверного архива.

## v1.0.9 - подготовка публичного выпуска

- добавлен безопасный экран первого запуска: характеристики устройства,
  найденные локальные способы отвечать и известные источники памяти;
- найденный вход ChatGPT через Codex можно выбрать отдельной кнопкой;
  токены не показываются, а применение явно сообщает о необходимости
  перезапуска;
- превью правил и заметок можно добавить только в редактируемый черновик
  портрета. Исходные файлы не меняются и ничего не импортируется молча;
- desktop-приложение получило минимальный защищённый мост для перезапуска
  после выбора провайдера;
- релизные проверки отделяют публичные материалы от внутренних документов.

## v1.0.8

- улучшены локальная панель, диагностика, память, коннекторы и обновление;
- установочные архивы содержат контрольные суммы, манифест и SBOM;
- добавлены проверки комплектности desktop-артефактов.

## Ограничения выпуска

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