Оболочка Tauri
Десктопная оболочка построена на Tauri 2. Она владеет нативным окном, запускает backend и гарантирует, что оба завершаются вместе.
Работа оболочки
Оболочка делает три вещи:
- Порождает sidecar — запускает самодостаточный процесс backend на Node.js и ждёт готовности локального API перед открытием webview. Вы никогда не видите наполовину загруженное окно, указывающее на мёртвый сервер.
- Размещает webview — продакшн-веб-приложение работает внутри webview
Tauri и общается с backend через
127.0.0.1на случайном свободном порту. - Владеет жизненным циклом — события окна и процесса связаны так, что backend и оболочка всегда завершаются как одно целое.
Жизненный цикл окна
- Закрытие — закрытие окна запускает корректное завершение sidecar. Backend просят остановиться чисто, и приложение ждёт его перед выходом. Осиротевшего процесса Node.js не остаётся.
- Сбой backend — если sidecar выходит неожиданно, оболочка завершается с ошибкой вместо окна, которое ничего не может сделать. Обычные выходы помечаются отдельно, поэтому чистое завершение никогда не принимается за сбой.
- Перезапуск — повторный запуск приложения заново порождает sidecar с нуля. Состояние живёт в каталоге данных, а не в процессе, поэтому перезапуски без потерь.
Окно и есть API
Поскольку оболочка ждёт API перед показом контента, первый запуск ощущается
мгновенным: окно открывается на готовом приложении. Backend слушает только
127.0.0.1 на эфемерном порту, поэтому в сеть ничего не выставляется.
Интеграция обновлений
Релизные сборки интегрируют апдейтера Tauri. Оболочка может проверять обновления ядра, проверять манифест и подпись minisign, устанавливать артефакт платформы и перезапускаться. Апдейтер заменяет ядро отдельно от каталога данных пользователя, а неподписанные даунгрейды отклоняются. Сборки без конечной точки обновлений и публичного ключа полностью функциональны, но сообщают, что обновления не настроены.
Сборки для разработки
Для разработки та же оболочка может работать против dev-сервера и локально
запущенного backend. Продакшн-гарантия — sidecar завершается вместе с окном —
применяется к упакованным сборкам; pnpm desktop:dev подключает оболочку к
вашим запущенным dev-процессам.
О том, как sidecar упаковывается и управляется, см. Sidecar на Node.js.