# Обновления ## Выбор канала релизов {#feed} 1. Откройте **Настройки → Информация → Обновления**. 2. Установите **Канал обновлений** в **Стабильные релизы** или **Предварительные и стабильные релизы**. 3. Обновите/проверьте обновления и изучите предложенный релиз перед согласием на установку. Канал сохраняется в конфигурации сервера CodeNomad и меняет только предлагаемые релизы. Не меняет профили настольных данных, черновики, окна, сессии OpenCode или конфигурацию службы. Без явного выбора сборки с предварительной меткой используют предварительные релизы, остальные — стабильные. Стабильный канал выбирает последний финальный релиз. Предварительный следует порядку публикации, поскольку сборки разработки могут иметь один базовый номер; не сравнивайте только числовые версии. Предварительный релиз предлагается только после публикации всех его сборок. Предварительные пакеты — для готовых тестировать поведение до выпуска; изучите примечания и сохраните важные черновики перед перезапуском. ## Обновление настольной установки {#desktop-update} 1. Используйте **Справка → Проверить обновления…**, уведомление обновления или кнопку в **Настройки → Информация → Обновления**. 2. В Electron перейдите на страницу релиза и получите архив/пакет нужного хоста/платформы. 3. На подходящих локальных установках Tauri изучите нативное предложение и явно выберите **Установить и перезапустить**. 4. Сохраните важную работу во всех окнах перед установкой/перезапуском, затем проверьте **Информация** после запуска. | Установка Tauri | Возможность установки внутри приложения | | --- | --- | | Windows x64 NSIS | Поддерживается со встроенным ключом обновления и подписанной полезной нагрузкой релиза. | | Приложение macOS x64 / arm64 | Поддерживается со встроенным ключом и подписанной полезной нагрузкой `.app.tar.gz`. | | Linux x64 AppImage | Требует маркер пакета AppImage, непустой путь `APPIMAGE` и поддержку подписанного обновления. Одного `APPRUN` недостаточно. | | Debian/RPM, отдельный Windows executable, неподписанная/безключевая сборка | Открывает страницу релиза вместо установки внутри приложения. | В окнах приложения Tauri и нативных окнах **Настройки** карточка «Обновления» показывает **Установить обновление**, когда предлагается релиз. Она проверяет выбранный канал и предлагает **Установить и перезапустить**, если доступно обновление внутри приложения; иначе открывает страницу релиза, указанную в карточке. Окна Electron, веб-версии и удалённые окна вместо этого показывают ссылку **Скачать обновление**, без проверки нативным механизмом обновления. Меню Tauri **Справка → Проверить обновления…** запускает обновление в окне приложения, находящемся в фокусе. Из окна настроек или удалённого окна оно выводит на передний план последнее использованное окно приложения для проверки; установка через удалённое окно не выполняется. Если ни одно окно приложения не может принять действие, в том числе когда целевое окно показывает экран загрузки, входа или сопряжения, меню вместо этого открывает страницу релиза. Tauri устанавливает только релизы с опубликованным манифестом обновления выбранного канала/цели. Если объявленный релиз ещё нельзя установить, уведомление вместо этого открывает его страницу релиза. Перед установкой требуется нативная проверка подписи. Подписи обновления отличаются от гарантий нотарификации/подписи кода ОС. Установка сохраняет отложенное состояние всех окон приложения и останавливает принадлежащую ему серверную часть CodeNomad перед заменой/перезапуском приложения. Независимый демон OpenCode не входит в завершение. Закрытие CodeNomad всё равно убирает зависимые функции до возврата; продолжающаяся сессия OpenCode не означает непрерывные услуги интерфейса. Если проверка занята, дождитесь операции другого окна. При ошибках загрузки, проверки или завершения прочитайте ошибку и выполните новую проверку; старое уведомление не разрешает повторно устанавливать устаревшие байты. Неудачная установка может восстановить серверную часть и перезагрузить окна, но не повторяет установку автоматически. Если нативная установка недоступна, используйте страницу релиза и подходящий пакет; см. [установку](install.md). ## Обновление отдельного сервера {#standalone-update} 1. Определите способ запуска CodeNomad и сохраните работу, зависящую от серверной части. 2. Остановите процесс сервера CodeNomad обычным управлением процессом/службой. 3. Обновите ту же установку пакета, затем запустите с нужной конфигурацией и флагами. | Способ запуска/установки | Команда обновления | | --- | --- | | Разовый стабильный запуск npm | `npx @neuralnomads/codenomad@latest` с обычными флагами | | Глобальная стабильная установка | `npm install -g @neuralnomads/codenomad@latest` | | Локальная стабильная установка | `npm install @neuralnomads/codenomad@latest` в каталоге пакета | | Разовый предварительный запуск | `npx @neuralnomads/codenomad-dev@latest` с обычными флагами | | Глобальная/локальная предварительная установка | Установите `@neuralnomads/codenomad-dev@latest` той же глобальной/локальной формой npm | Работающий процесс не получает новый код лишь от установки npm. Намеренно сохраняйте тот же путь конфигурации; выбор канала в настройках не заменяет npm-пакет и не переключает автоматически имена стабильного/предварительного пакета. Сохраните флаги аутентификации/TLS при запуске; см. [сервер](server.md). ## Отдельное обслуживание OpenCode {#opencode-separate} Обновление CodeNomad не обновляет выбранный OpenCode CLI. Обновление CLI не перезапускает работающий общий демон. Перезагрузка нативной конфигурации — ещё одна явная операция со своими последствиями для загруженных Location и запросов. Ресурсы Node/npm настольного приложения поставляются с ним; релиз приложения обновляет их. Это не заменяет системные Node/npm, внутреннюю среду Electron, webview платформы или независимо управляемую службу OpenCode. Используйте **Настройки → OpenCode** для выбора среды, установки/обновления и явного управления службой. Прочитайте [настройку OpenCode](opencode.md) перед перезапуском или перезагрузкой, особенно если демон общий с окнами/пользователями или миссиями. Никогда не повторяйте неопределённый запрос или изменение лишь из-за завершённого обновления/переподключения.