Release v0.1.2

This commit is contained in:
nikit3s
2026-10-10 14:58:04 +03:00
parent b2ae91b5b3
commit 3cdc30ec2a
33 changed files with 1218 additions and 212 deletions
+72 -61
View File
@@ -1,95 +1,106 @@
# SbLauncher
Лаунчер для sing-box с интерфейсом WPF. Работает в Windows 10/11 x64 с
.NET Framework 4.x. Поддерживает импорт и выбор серверов, три режима
подключения (`wg`, `direct`, `wgonly`), проверку конфигурации, запуск и остановку
sing-box, логи и светлую/тёмную тему.
Это отдельный прототип интерфейса; рабочая копия `sb_launcher_rev2` не меняется.
Приложение запрашивает права администратора для настройки сетевых маршрутов.
Портативный лаунчер для 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)
## Подготовка
## Установка из релиза
Для сборки нужен `csc.exe` из установленного .NET Framework 4.x. `build.cmd`
использует `%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe`; Visual Studio
и .NET SDK не требуются.
Распакуйте `SbLauncher-v0.1.2-win-x64.zip` в постоянную папку и запустите
`SbLauncher.exe`. В архив уже включены sing-box, файл правил и базовые серверы.
На вкладке «Настройки» задайте свой приватный ключ и локальный IP WireGuard;
для режима `direct` выберите свой сетевой адаптер. Программа автоматически
сохранит настройки.
Для подключения дополнительно нужны совместимый исполняемый файл sing-box и
файл правил. Они хранятся только локально и в репозиторий или релизный архив
не входят:
Передача коллеге, проверка контрольной суммы и обновление — в
[HANDOFF.md](HANDOFF.md).
```text
bin/sb.exe
doc/doc.srs
```
## Базовые серверы и личные данные
Из чистого клона создайте локальные настройки и профили:
- `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
Copy-Item .\local.example.json .\local.json
Copy-Item .\profiles.example.json .\profiles.json
cmd /c build.cmd
.\SbLauncher.exe
```
Демонстрационные адреса из `profiles.example.json` не подключаются. Добавьте
свои серверы через импорт или в `profiles.json`, затем укажите приватный ключ
WireGuard, адрес туннеля и сетевой адаптер на вкладке «Настройки». Секреты в
`local.json`, а также серверы в `profiles.json` исключены из Git. Не добавляйте
их в коммиты и релизные архивы.
Базовые серверы загрузятся из `profiles.base.json`, личные файлы создаются
программой при сохранении настроек или импорте. `profiles.example.json`
содержит демонстрационные адреса для тестирования старого формата и не
используется для первой установки из релиза.
Готовый ZIP из релиза распаковывается аналогично: поместите рядом с лаунчером
`bin/sb.exe` и `doc/doc.srs`, скопируйте два файла `.example.json` без слова
`.example` в имени и заполните свои данные. Сборка из исходников для ZIP не нужна.
## Сборка и проверки
## Проверки
```powershell
cmd /c build.cmd # SbLauncher.exe
cmd /c build.cmd importtest # импорт ссылок
cmd /c build.cmd profiletest # сохранение профилей
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` в ней не перезаписывается.
`build.cmd selftest` проверяет конфигурацию и может читать текущие профили.
`build.cmd deploy "путь"` копирует программу, базовый каталог и шаблоны в
явно указанную тестовую папку; `local.json` и личный `profiles.json` не заменяет.
## Git и релизы
Основная ветка — `main`. Разработку фиксируйте коммитами в Git. Для очередного
релиза обновите [CHANGELOG.md](CHANGELOG.md), три версии в `Version.cs` и номер
`assemblyIdentity` в `app.manifest`; используйте формат `MAJOR.MINOR.PATCH`.
После этого, например для версии `0.1.1`:
Основная ветка — `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.1"
.\release.ps1 -Version 0.1.1
git tag -a v0.1.1 -m "SbLauncher v0.1.1"
```
Перед коммитом проверьте список добавленных файлов: в нём должны быть только
изменения для этого релиза. `release.ps1` требует чистую рабочую копию, запускает сборку и три
проверки, сверяет версию EXE и собирает `dist/SbLauncher-vX.Y.Z-win-x64.zip`
с SHA-256 в соседнем `.sha256`. Архив содержит только приложение, шаблоны,
примеры конфигурации и документацию. Сборка идёт через `build.cmd staged`,
поэтому открытый лаунчер не блокирует выпуск. Для пробного запуска на незакоммиченных
изменениях есть `-AllowDirty`; архив получает суффикс `-dev` с хешем коммита.
При настроенном удалённом репозитории отправьте ветку и тег:
```powershell
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.1
git push origin v0.1.2
```
Затем создайте релиз `v0.1.1` в GitHub/Gitea, вставьте заметки из
`CHANGELOG.md` и прикрепите ZIP и `.sha256`. Если `origin` ещё не настроен,
сначала добавьте адрес своего удалённого репозитория.
`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`.