github Leadaxe/singbox-launcher v0.8.7
release v0.8.7

5 hours ago

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.7

The 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

  1. Download: singbox-launcher-v0.8.7-macos.zip
  2. Extract the ZIP file
  3. Remove quarantine attribute (required):
    xattr -cr "singbox-launcher.app" && chmod +x "singbox-launcher.app/Contents/MacOS/singbox-launcher"
  4. Double-click singbox-launcher.app to 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)

  1. Download: singbox-launcher-v0.8.7-win64.zip
  2. Extract the ZIP file to a folder, for example: C:\Program Files\singbox-launcher\
  3. Run singbox-launcher.exe from that folder
    • You may need administrator rights to install to Program Files
    • The launcher will automatically download sing-box and wintun.dll on first launch

Windows 7 (x86, legacy)

  1. Download: singbox-launcher-v0.8.7-win7-32.zip
  2. 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-byte crypto/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.Disabled with omitempty keeps 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 / tolerance hoisted to @urltest_url / @urltest_interval / @urltest_tolerance, editable in Wizard → Settings. See SPEC 040.
  • Template vars[].options accepts {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 shortcutsCmd/Ctrl+R reconnect, Cmd/Ctrl+U update subscriptions, Cmd/Ctrl+P ping-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 PrepareForSleep over system DBus (no new dependencies). macOS IOKit hook remains TODO.
  • Atomic writes for config.json and settings.json — stage to .tmp / .swap then os.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.json on 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***89 instead of the full bearer. Token still visible via Copy in the UI.

Fixed

  • CI was red since 2026-04-16internal/locale.TestAllKeysPresent failed 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-domains rule-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.json gains 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.jsonauto-proxy-out options now reference @urltest_url / @urltest_interval / @urltest_tolerance. Custom templates: either merge the three new vars, 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+R reconnect, 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-16internal/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.

Don't miss a new singbox-launcher release

NewReleases is sending notifications on new releases.