2.8 KiB
2.8 KiB
Linux Implementation Log
Этот файл веду параллельно с реализацией Linux backend.
Stage 1 - Подготовка backend-слоя
Status: done
- Добавлен runtime для
sing-box:lib/services/singbox_runtime.dart. - Реализовано извлечение бинарника из assets в
ApplicationSupport. - Добавлен
chmod 755после копирования бинарника.
Stage 2 - Запуск и lifecycle процесса
Status: done
- Добавлен
SingBoxService:lib/services/singbox_service.dart. - Реализован запуск через
pkexec <binary> run -c <config>. - Добавлены stop/dispose и стрим логов процесса.
Stage 3 - Интеграция с приложением
Status: done
VpnServiceпереключается на Linux backend наTargetPlatform.linux.- На Linux
startожидает JSON-конфигsing-box. - На Linux отключен запрос VPN permission через
v2ray_box. - Добавлен fallback-парсинг имени профиля из JSON (
outbounds[*].tag).
Stage 4 - UI и совместимость
Status: done
- Обновлен
ConfigInfoView: ping проверка помечается как недоступная для Linux backend. - Добавлено явное сообщение при старте с не-JSON конфигом на Linux.
Stage 5 - Сборка и smoke-тесты
Status: in_progress
- Выполнен
flutter pub get. - Прогнан
flutter analyze(без ошибок). - После установки AppIndicator-зависимостей сборка восстановлена.
- Добавлен CMake-флаг
-Wno-error=deprecated-declarationsвlinux/CMakeLists.txt, чтобы deprecated warning изtray_managerне валил сборку plugin-кода. flutter build linux --debugпроходит успешно.- Остался ручной runtime smoke-тест через
flutter run -d linux:- start/stop VPN;
- close -> hide to tray;
- quit из tray с корректным stop.
Stage 6 - Desktop UX (tray/hide-to-tray)
Status: done
- Добавлены зависимости
window_managerиtray_managerвpubspec.yaml. - Реализован
TrayService:lib/services/tray_service.dart. - В
main.dartдобавлены Linux lifecycle-сценарии:setPreventClose(true)и перехват close-события;- hide-on-close в трей;
- действия меню трея
show,hide,quit; - при
quitвыполняется остановка VPN перед выходом.
- Исправлен
MissingPluginExceptionдляsetToolTipна Linux:- добавлен безопасный
try/catchвTrayService.init().
- добавлен безопасный