# SbLauncher Портативный лаунчер для sing-box с интерфейсом WPF. Работает в Windows 10/11 x64 с .NET Framework 4.x. Поддерживает импорт серверов, три режима подключения (`wg`, `direct`, `wgonly`), проверку конфигурации, запуск и остановку sing-box, логи и светлую/тёмную тему. Для TUN и сетевых маршрутов запрашивает права администратора. ![Светлая тема](preview/glass-light.png) [Тёмная тема](preview/glass-dark.png) ## Установка из релиза Распакуйте `SbLauncher-v0.1.2-win-x64.zip` в постоянную папку и запустите `SbLauncher.exe`. В архив уже включены sing-box, файл правил и базовые серверы. На вкладке «Настройки» задайте свой приватный ключ и локальный IP WireGuard; для режима `direct` выберите свой сетевой адаптер. Программа автоматически сохранит настройки. Передача коллеге, проверка контрольной суммы и обновление — в [HANDOFF.md](HANDOFF.md). ## Базовые серверы и личные данные - `profiles.base.json` содержит общий каталог серверов и публичные параметры WireGuard-сервера. Он входит в релиз и обновляется вместе с программой. - `profiles.json` содержит личные серверы, добавленные пользователем, и список скрытых базовых серверов. Он исключён из Git и релиза. - `local.json` хранит приватный ключ, локальный IP WireGuard, сетевой адаптер, тему и выбор сервера. Он исключён из Git и релиза. При обновлении закройте программу через трей и распакуйте ZIP поверх той же папки. Личные файлы сохранятся, а базовые серверы обновятся. Для перехода с v0.1.1 старый общий список автоматически преобразуется в личный слой с резервной копией `profiles.legacy-backup.json`. `run/config.json` генерируется при подключении. Постоянные изменения правил вносите в `templates/*.json`, а базовых серверов — в `profiles.base.json`. Для новых базовых серверов задавайте уникальный `id`; у существующих его сохраняйте. Личный `profiles.json` никогда не копируйте в релизный каталог. ## Сборка из исходников Нужен `csc.exe` из установленного .NET Framework 4.x. `build.cmd` использует `%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe`; Visual Studio и .NET SDK не требуются. В чистом клоне для подключения и проверки конфигов дополнительно разместите совместимый `bin/sb.exe` и файл правил `doc/doc.srs`. Бинарники не хранятся в Git, но включаются в готовый релизный ZIP. Текущий комплект использует sing-box `1.12.19`, `windows/amd64`. ```powershell cmd /c build.cmd .\SbLauncher.exe ``` Базовые серверы загрузятся из `profiles.base.json`, личные файлы создаются программой при сохранении настроек или импорте. `profiles.example.json` содержит демонстрационные адреса для тестирования старого формата и не используется для первой установки из релиза. ## Проверки ```powershell cmd /c build.cmd importtest # форматы импорта и конфиги sing-box cmd /c build.cmd profiletest # импорт и сохранение профилей cmd /c build.cmd updatetest # обновление базы и сохранение личных данных cmd /c build.cmd stress # нагрузка интерфейса cmd /c build.cmd themetest # анимация темы и быстрые переключения ``` `build.cmd selftest` проверяет конфигурацию и может читать текущие профили. `build.cmd deploy "путь"` копирует программу, базовый каталог и шаблоны в явно указанную тестовую папку; `local.json` и личный `profiles.json` не заменяет. ## Git и релизы Основная ветка — `main`. Обновите [CHANGELOG.md](CHANGELOG.md), три версии в `Version.cs` и номер `assemblyIdentity` в `app.manifest`. Перед коммитом проверьте список файлов: личных настроек, серверов и резервных копий в нём быть не должно. Для версии `0.1.2`: ```powershell git status git add -A git diff --cached --stat git commit -m "Release v0.1.2" .\release.ps1 -Version 0.1.2 git tag -a v0.1.2 -m "SbLauncher v0.1.2" git push origin main git push origin v0.1.2 ``` `release.ps1` требует чистый Git-коммит, собирает приложение и запускает пять проверок. Сверяет версию EXE, запрещает персональные поля WireGuard в базовом каталоге и собирает `dist/SbLauncher-vX.Y.Z-win-x64.zip` с SHA-256 в соседнем `.sha256`. Архив содержит приложение, sing-box, файл правил, базовые серверы, шаблоны, примеры и документацию. Личные файлы в него не входят. Сборка идёт через `build.cmd staged`, поэтому открытый лаунчер не блокирует выпуск. `-AllowDirty` предназначен для пробной сборки: архив получает суффикс `-dev` и не должен публиковаться как стабильный релиз. Создайте релиз `v0.1.2` в GitHub/Gitea, вставьте заметки из `CHANGELOG.md` и прикрепите ZIP и `.sha256`.