Release v0.8.7
Downloads
macOS (Universal) - Supports both Apple Silicon and Intel
Option 1: Installation Script (Recommended)
Install with a single command (version v0.8.7):
curl -fsSL https://raw.githubusercontent.com/Leadaxe/singbox-launcher/develop/scripts/install-macos.sh | bash -s -- v0.8.7The script will:
- Download the release archive
- Extract and install to
/Applications/ - Fix macOS quarantine attributes and permissions
- Launch the application automatically
Option 2: Manual Installation
- Download:
singbox-launcher-v0.8.7-macos.zip - Extract the ZIP file
- Remove quarantine attribute (required):
xattr -cr "singbox-launcher.app" && chmod +x "singbox-launcher.app/Contents/MacOS/singbox-launcher"
- Double-click
singbox-launcher.appto run- If macOS blocks the app, go to System Settings → Privacy & Security and click "Open Anyway"
- Alternatively, right-click the app and select "Open" (first time only)
Windows (amd64)
- Download:
singbox-launcher-v0.8.7-win64.zip - Extract the ZIP file to a folder, for example:
C:\Program Files\singbox-launcher\ - Run
singbox-launcher.exefrom that folder- You may need administrator rights to install to Program Files
- The launcher will automatically download
sing-boxandwintun.dllon first launch
Windows 7 (x86, legacy)
- Download:
singbox-launcher-v0.8.7-win7-32.zip - Extract the ZIP file to a folder and run
singbox-launcher-win7-32.exe- For Windows 7 / 32-bit or legacy compatibility only
Linux Support
⚠️ Linux build temporarily unavailable — мы ищем тестировщика для ручного тестирования перед включением автоматической сборки.
Checksums
See checksums.txt for SHA256 checksums of all files.
Release Notes
Highlights (EN)
- Debug API (localhost-only) — optional HTTP server on
127.0.0.1:9269, off by default. Read endpoints (/ping,/version,/state,/proxies) + action endpoints (/action/{start,stop,update-subs,ping-all}, POST). Bearer-token auth (32-bytecrypto/rand, constant-time compare). Toggle + "Copy token" on the Diagnostics tab. Designed as a backing service for MCP wrappers so AI agents (Claude / Cursor / …) can introspect and drive the launcher. See SPEC 038. - New ⚙️ Settings tab between Servers and Diagnostics — consolidates language selector (moved from Help), auto-update subscriptions, auto-ping on connect. Fixes a latent data-loss bug in the language handler (
SaveSettings({Lang})used to wipe other fields → now load-mutate-save). See SPEC 039. - Subscription source toggle — per-row on/off in Wizard → Sources. Disabled sources are skipped entirely (no fetch, no parse) but stay in the file.
ProxySource.Disabledwithomitemptykeeps legacy configs compatible. See SPEC 037. - Auto-ping after VPN connect (default ON) — 5 s after sing-box goes running, Servers tab auto-pings all proxies so latency numbers are fresh.
- Subscription auto-update global toggle (default ON) — off skips scheduled refreshes; manual Update always works. Re-enabling resets the consecutive-failure counter.
- URLTest parameters as template vars with preset dropdowns —
auto-proxy-out.url / interval / tolerancehoisted to@urltest_url / @urltest_interval / @urltest_tolerance, editable in Wizard → Settings. See SPEC 040. - Template
vars[].optionsaccepts{title, value}— user-visible dropdown labels can differ from the substituted value (e.g."5m (default)"shown,"5m"in config). Legacy string-list form still works. - Keyboard shortcuts —
Cmd/Ctrl+Rreconnect,Cmd/Ctrl+Uupdate subscriptions,Cmd/Ctrl+Pping-all. Modifier auto-resolves per platform. See SPEC 042. - Power-resume hooks on Windows + Linux (partial closure of SPEC 011) — after sleep/hibernate the launcher resets the Clash API transport, refreshes proxies, and re-pings if auto-ping is on. Linux uses systemd-logind
PrepareForSleepover system DBus (no new dependencies). macOS IOKit hook remains TODO. - Atomic writes for
config.jsonandsettings.json— stage to.tmp/.swapthenos.Rename. Mid-write crashes can no longer truncate live config. See SPEC 041.
Resilience & observability
- 100 MB download cap on sing-box core downloads (pre-flight Content-Length + mid-stream counter).
- HTTP status humanization in subscription-fetch errors (
401→ "token may have expired",403→ "provider blocked this request", etc.). - "(subs: Xh ago)" freshness hint next to
config.jsonon the Core Dashboard. - Dirty-config marker
*on the Update button when Wizard has unapplied changes. See SPEC 043.
Security
- Clash API token redaction in debug logs —
token=ab***89instead of the full bearer. Token still visible via Copy in the UI.
Fixed
- CI was red since 2026-04-16 —
internal/locale.TestAllKeysPresentfailed after English "Copy jump server link" keys were added without Russian parity; restored. - STUN settings dialog was clipping on Windows (#54) — now explicitly ≥ 520 px.
Template defaults
- Russian / Cyrillic TLDs expanded in the
ru-domainsrule-set: added.рус (xn--p1acf),.москва (xn--80adxhks),moscow,tatar,.дети,.сайт,.орг,.комon top of the previous.ru / .xn--p1ai / .su. Existing custom templates are unaffected.
Migration notes
bin/settings.jsongains optional fields:subscription_auto_update_disabled,auto_ping_after_connect_disabled,debug_api_enabled,debug_api_token,debug_api_port. Missing = zero (enabled / empty / 9269), so existing installs behave as before until toggled.wizard_template.json—auto-proxy-outoptions now reference@urltest_url / @urltest_interval / @urltest_tolerance. Custom templates: either merge the three newvars, or keep literal values (both forms work).- Language selector moved from Help to the new Settings tab.
Full changelog: docs/release_notes/0-8-7.md.
Основное (RU)
- Debug API (локальный HTTP) — опциональный сервер на
127.0.0.1:9269, по умолчанию выключен. Read-эндпоинты (/ping,/version,/state,/proxies) + action-эндпоинты (/action/{start,stop,update-subs,ping-all}, только POST). Bearer-токен (32 байтаcrypto/rand, constant-time compare). Чекбокс + «Копировать токен» на вкладке Диагностика. Основной use-case — backing-service для MCP-обёрток, чтобы AI-агенты (Claude / Cursor / …) могли читать и дёргать лаунчер. См. SPEC 038. - Новая вкладка ⚙️ «Настройки» между Servers и Diagnostics — собирает селектор языка (перенесён из Help), автообновление подписок, автопинг после подключения. Починен data-loss баг language-handler'а (
SaveSettings({Lang})раньше затирал остальные поля → теперь load-mutate-save). См. SPEC 039. - Переключатель подписки в Wizard → Sources — чекбокс в каждой строке. Отключённые источники полностью пропускаются парсером, но остаются в файле.
ProxySource.Disabledсomitempty— legacy-конфиги совместимы. См. SPEC 037. - Автопинг после подключения VPN (по умолчанию ВКЛ) — через 5 с после перехода sing-box в running вкладка Servers авто-пингует все прокси.
- Глобальный выключатель автообновления подписок (по умолчанию ВКЛ) — OFF пропускает плановые обновления; ручной Update всегда работает. Включение через UI сбрасывает счётчик последовательных ошибок.
- Параметры URLTest как шаблонные vars с preset-дропдаунами —
auto-proxy-out.url / interval / toleranceвынесены в@urltest_url / @urltest_interval / @urltest_tolerance, редактируются в Wizard → Settings. См. SPEC 040. vars[].optionsподдерживает{title, value}— подписи в дропдаунах могут отличаться от значения (например, «5m (default)» на экране,"5m"в конфиге). Старая форма списка строк работает.- Горячие клавиши —
Cmd/Ctrl+Rreconnect,Cmd/Ctrl+Uобновить подписки,Cmd/Ctrl+Pпинг всех. Модификатор маппится на платформу автоматически. См. SPEC 042. - Wake-from-sleep re-sync на Windows + Linux (частичное закрытие SPEC 011) — после сна/гибернации лаунчер сбрасывает HTTP-транспорт Clash API, перечитывает список прокси и re-пингует ноды (если автопинг включён). Linux — нативно через systemd-logind
PrepareForSleepпо system DBus (новых зависимостей нет). macOS IOKit — всё ещё TODO. - Атомарные записи
config.jsonиsettings.json— сначала.tmp/.swap, затемos.Rename. Падение / kill -9 / обесточивание посреди записи больше не обнуляют живой конфиг. См. SPEC 041.
Устойчивость и наблюдаемость
- Лимит 100 МБ на загрузку sing-box core (Content-Length до + кумулятивный счётчик во время).
- Расшифровка HTTP-статусов в ошибках подписок (
401→ «token may have expired»,403→ «provider blocked this request» и т.д.). - Подсказка «(подписки: X ч назад)» рядом с
config.jsonна Core Dashboard. - Маркер
*на кнопке Update, когда визард сохранил изменения, а парсер ещё не прокатал. См. SPEC 043.
Безопасность
- Редакция токена Clash API в debug-логах — вместо полного bearer пишется
token=ab***89. В UI токен по-прежнему доступен через Copy.
Исправлено
- CI был красный с 2026-04-16 —
internal/locale.TestAllKeysPresentпадал: английские ключи «Copy jump server link» без русских пар. Паритет восстановлен. - STUN settings dialog обрезался на Windows (#54) — диалог теперь явно ≥ 520 px.
Шаблон
- Список русских и кириллических TLD расширен в
ru-domains: к.ru / .xn--p1ai / .suдобавлены.рус (xn--p1acf),.москва (xn--80adxhks),moscow,tatar,.дети,.сайт,.орг,.ком. Кастомные шаблоны не затрагиваются.
Миграция
- В
bin/settings.jsonдобавлены опциональные поля:subscription_auto_update_disabled,auto_ping_after_connect_disabled,debug_api_enabled,debug_api_token,debug_api_port. Отсутствие = zero (enabled / пусто / 9269), существующие установки ведут себя как раньше до первого toggle. wizard_template.json— параметрыauto-proxy-outтеперь через@urltest_url / @urltest_interval / @urltest_tolerance. Для кастомных шаблонов: смерджить три новыхvarsили оставить литералы (обе формы работают).- Селектор языка переехал из Help в новую вкладку Settings.
Полный список изменений: docs/release_notes/0-8-7.md.