Skip to content

release v1.1.7

Latest

Choose a tag to compare

@github-actions github-actions released this 24 Jun 16:06
· 1 commit to main since this release

Release v1.1.7

Downloads

macOS (Universal) - Supports both Apple Silicon and Intel

Option 1: Installation Script (Recommended)

Install with a single command (version v1.1.7):

curl -fsSL https://raw.githubusercontent.com/Leadaxe/singbox-launcher/develop/scripts/install-macos.sh | bash -s -- v1.1.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-v1.1.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-v1.1.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-v1.1.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.

v1.1.7 — hotfix: junk pbk on a TLS node no longer breaks the whole config

Fixes a launch failure introduced by broken public subscriptions: a vless:// node carrying a junk pbk (e.g. pbk=enabled) while declaring security=tls made the launcher emit tls.reality.public_key: "enabled", and sing-box check rejected the entire generated config.json (initialize outbound[N]: invalid public_key) — so the VPN wouldn't start at all. No config migration is needed.

Чинит отказ запуска из-за кривых публичных подписок: нода vless:// с мусорным pbk (например pbk=enabled) при security=tls заставляла лаунчер писать tls.reality.public_key: "enabled", и sing-box check отбраковывал весь сгенерированный config.json (initialize outbound[N]: invalid public_key) — VPN не стартовал вовсе. Миграция не нужна.

EN

Highlights

  • A junk pbk no longer takes down the whole config. Some public lists (e.g. the free "BLACK LISTS" community subscription) ship vless:// nodes with security=tls but a bogus pbk=enabled (or other non-key) parameter. The parser used to build a REALITY block from any non-empty pbk, emitting public_key: "enabled"; sing-box check then failed on the first such node and refused the whole config.json, so nothing started. The parser now only builds a REALITY block when pbk is a real X25519 public key (base64url/std, 32 bytes); an invalid pbk is ignored and the node degrades to plain TLS, like the rest of the config.

Technical / Internal

  • core/config/subscription/node_parser_transport.go: new isValidRealityPublicKey() (43-char base64url/std, decodes to 32 bytes) gates the REALITY branch in vlessTLSFromNode instead of the old pbk != "" check — mirrors the existing "broken list" hardening (normalizeRealityShortID). Tests: TestIsValidRealityPublicKey + regression TestParseNode_VLESS_JunkPbkOnTLSNode (real pbk=enabled from the affected subscription); TestBuildOutbound/VLESS_with_Reality updated to use a real key (its placeholder is now correctly rejected).

RU

Основное

  • Мусорный pbk больше не валит весь конфиг. Часть публичных списков (например бесплатная community-подписка «BLACK LISTS») отдаёт ноды vless:// с security=tls, но с мусорным pbk=enabled (или другим не-ключом). Раньше парсер строил блок REALITY по любому непустому pbk и писал public_key: "enabled"; затем sing-box check падал на первой такой ноде и отбраковывал весь config.json — VPN не запускался. Теперь блок REALITY строится только если pbk — настоящий публичный ключ X25519 (base64url/std, 32 байта); невалидный pbk игнорируется, и нода деградирует до обычного TLS, как остальной конфиг.

Техническое / Внутреннее

  • core/config/subscription/node_parser_transport.go: новая isValidRealityPublicKey() (43 символа base64url/std, декодируется в 32 байта) гейтит ветку REALITY в vlessTLSFromNode вместо прежней проверки pbk != "" — в духе уже имеющейся защиты от «broken lists» (normalizeRealityShortID). Тесты: TestIsValidRealityPublicKey + регрессионный TestParseNode_VLESS_JunkPbkOnTLSNode (реальный pbk=enabled из затронутой подписки); TestBuildOutbound/VLESS_with_Reality обновлён на настоящий ключ (его placeholder теперь корректно отвергается).