y83 code / инструмент

Установка

Экран «Установка» — проверка готовности окружения: Termux установлен, backend жив, есть доступ к файлам, разрешения выданы, и система не душит приложение оптимизацией батареи.

раздел реестра
Система
код
1 328 строк в 4 файлах
документ
27-setup.md
Раздел: System
Идентификатор: setup · Экран: ui/setup/ (4 файла, ~1300 строк)
Снимок: 2026-10-11

1. Зачем и что это

Это не установщик, а диагностика с починкой: экран показывает, что не так, и даёт кнопки, которые это исправляют. Сам починкой занимается setup.sh с agent.y83.ru, запускаемый в Termux.

2. Как попасть

Хаб инструментов → секция System → карточка «Установка» (hub_setup_title).

Откуда ещёПуть
Мостapp_navigate с screen: "setup"

Маршрут: Screen.kt → MainRouter (SetupScreen).

3. Экран: элементы и действия

СекцияКарточкиЧто делает
Статус сверхуИтог проверкиsetupDisplayStatus
// bootstrapTermuxУстановлен ли, версия; кнопки: Download Termux, Run setup in Termux, Reconnect, Open Termux
BackendЖивой ли, версия, задержка; ошибка
// file access & reliabilityTermux storageВыдан ли доступ к хранилищу Termux
Grant Termux storageЗапрос разрешения
Battery optimizationИсключено ли приложение из оптимизации
Battery saverВключён ли режим экономии
Manufacturer background policyПолитика фоновой работы производителя
Manufacturer battery settingsСсылка в настройки производителя
NotificationsРазрешение на уведомления
OverlayРазрешение на оверлей
NetworkЕсть ли сеть
Copy reportКопировать отчёт в буфер
RefreshПерепроверить

Кнопки «Download Termux» ведут на страницу Termux, «GitHub» и «F-Droid» — на источники установки.

4. Возможности подробно

Что проверяется

refresh() собирает факты (каждая проверка обёрнута в runCatching, падение не ломает экран):

ПроверкаИсточник
Есть ли сетьPermissionChecks.isNetworkAvailable
Установлен ли TermuxPermissionChecks.isTermuxInstalled
Исключение из оптимизации батареиisBatteryOptimizationIgnored
Доступ приложения к хранилищуhasStorageAccess
Разрешение на уведомленияhasNotificationPermission
ОверлейcanDrawOverlays
Экономия батареиisBatterySaverEnabled
Живость backendhealthRepo.health() с замером латентности

Отдельная строка — доступ Termux к хранилищу (termuxStorageGranted): он проверяется через Termux-агент и может быть null (неизвестно), если Termux ещё не подключён.

Итоговый статус

setupDisplayStatus вычисляется по фактам в строгом порядке:

СтатусУсловиеПодпись
CHECKINGИдёт проверкаchecking…
NO_NETWORKНет сетиno network
NEEDS_SETUPTermux не установленneeds setup
BACKEND_OFFLINEBackend не отвечаетbackend offline
ATTENTIONНет доступа к хранилищу (приложение или Termux) либо ошибкаattention
READYВсё в порядкеready

Порядок важен: без сети остальные проверки бессмысленны, поэтому они не проверяются вовсе, а без Termux нельзя починить backend.

Связь с Termux

App.termuxAgentManager() даёт канал в Termux: ensureConnected подключается к нему (кнопка «Reconnect», состояние connecting), а checkTermux() — запрашивает данные. Через этот канал запускается починка (setup.sh с agent.y83.ru), кнопка «Run setup in Termux».

Если Termux не установлен, экран предлагает скачать его, а не запускает установку.

Отчёт

«Copy report» копирует собранное состояние в буфер — удобно приложить к обращению или отдать агенту, который не может сам проверить окружение.

5. Данные: БД, файлы, настройки

ЧтоГде лежитКак меняетсяКто читает
Факты окруженияТолько в состоянии экранаrefresh()Экран
Логи установщика~/.y83/setup.logУстановщикДиагностика
Конфиг supervisor~/.y83-ws/supervisord.confУстановщикsupervisord
Реестр серверов~/.y83-ws/servers.jsonПриложение/установщикsvreg

Постоянного хранилища для результатов проверки нет — они всегда свежие.

6. Backend: REST/роуты

Сам экран дергает healthRepo.health() (health-эндпоинт). Остальные эндпоинты окружения (/api/v1/env/*) — для инструмента «Обновления», а не для setup:

Метод и путьНазначение
GET /api/v1/env/versionsверсии компонентов
GET /api/v1/env/statusстатус окружения
GET /api/v1/env/logхвост лога установщика
POST /api/v1/env/updateобновление
POST /api/v1/env/buildсборка
POST /api/v1/env/deployпубликация

Роуты: backend/internal/api/v1/routes.go:67–77.

7. Мост и MCP

ЧтоКакПримечание
Открыть экранapp_navigate с screen: "setup"BridgeScreenCatalog
Живость backendMCP statusСкилл y83-backend
Полный отчёт`curl -fsSL https://agent.y83.ru/agent/doctor.shbash`Скилл y83-repair

8. Настройки, конфиг, квоты и лимиты

ПараметрЗначениеГде задаётся
Единая схема сервисовsupervisord → только ws-backend; svreg → opencode и codexskills/y83-repair
Отчётdoctor.sh (ничего не меняет)Тот же скилл
Починкаsetup.sh (обновляет)Там же

9. Ловушки и ограничения

  • Экран не чинит сам — он только показывает проблемы и запускает установщик в Termux. Починка вручную (копирование бинарей, kill процессов) запрещена.
  • На dev-машине установщик не трогает backend без Y83_FORCE_BACKEND=1 и пропускает шаг codex: иначе откатилась бы версия, принятая из GitHub.
  • «Backend offline» может быть при живом backend, если упала сеть или Termux не запущен: сначала смотрите статусы выше по списку.
  • Оптимизация батареи и политика производителя — самая частая причина «фоновые сервисы умирают». Проверяйте эти карточки.
  • Отчёт копируется, а не отправляется — вы решаете, куда его передать.
  • termuxStorageGranted = null означает «неизвестно», а не «нет»: Termux ещё не подключён.
  • Все строки захардкожены по-английски — экран не локализован.

10. Источники правды

  • app/src/main/java/com/y83/ws/ui/setup/SetupScreen.kt — экран, сбор фактов.
  • app/src/main/java/com/y83/ws/ui/setup/SetupSections.kt — карточки и кнопки.
  • app/src/main/java/com/y83/ws/ui/setup/SetupCards.kt, SetupFormat.kt — карточки, статусы.
  • app/src/main/java/com/y83/ws/util/PermissionChecks.kt — проверки разрешений.
  • backend/internal/api/v1/routes.go:67–77 — эндпоинты окружения.
  • skills/y83-repair/SKILL.md — единая схема сервисов, doctor.sh, setup.sh, легаси.
  • docs/tech/device-repair.md — починка окружения.

Источник: docs/project/hub/27-setup.md · Система · 1 328 строк в 4 файлах. Страница собирается из документации проекта при сборке сайта.