Skip to content

release v1.1.6

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Jun 12:31

Release v1.1.6

Downloads

macOS (Universal) - Supports both Apple Silicon and Intel

Option 1: Installation Script (Recommended)

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

curl -fsSL https://raw.githubusercontent.com/Leadaxe/singbox-launcher/develop/scripts/install-macos.sh | bash -s -- v1.1.6

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.6-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.6-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.6-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.6 — macOS 11 Big Sur fix + Add source from file + self-describing debug API

Fixes a launch crash on macOS 11 Big Sur (TLS verification used a macOS 12+ system API), adds Add source from file and a self-describing debug API, and makes the saved-states switcher safer. No config migration is needed.

Чинит краш при запуске на macOS 11 Big Sur (проверка TLS использовала системный API только для 12+), добавляет «Добавить источник из файла» и самоописываемый debug API, делает переключатель сохранённых состояний безопаснее. Миграция не нужна.

EN

Highlights

  • Runs on macOS 11 Big Sur again. Release builds crashed on launch on Big Sur (dock icon bounced, then nothing): Go 1.25 verifies TLS via a macOS 12+ system API (SecTrustCopyCertificateChain) that doesn't exist on 11.x, so the app aborted on its first HTTPS request (update check / "Free Community Servers"). The launcher now uses a custom root pool from the system keychain (pure-Go verifier, no 12+ symbol) and the darwin build targets minos 11.0 via the external linker. Also fixed: the config wizard window no longer overflows small (1280×800) screens — its height adapts so the navigation buttons stay above the Dock. Verified on a real Mac running Big Sur 11.7.11. (SPEC 081)
  • Saved states switcher is safer. The Core dashboard "Switch state…" dropdown now lists ● Current (active) as the first item and shows it as the selected value, so a stray tap on the top of the list is a no-op instead of switching away from the live state. (Switching to a named state already asks first — Save current / Discard / Cancel — that confirm dialog is unchanged.)
  • Add source from file. WG/AmneziaWG configs are often shared as files — the Sources tab now has an Add from file button: pick a .conf ([Interface]/[Peer]), a .vpn (vpn:// link) or a .txt of proxy links, and it imports through the same path as the Add field. (SPEC 079)
  • Self-describing debug API. GET / now returns a manifest (api/spec/launcher/core/auth, a version-pinned docs link, and the endpoint list) and GET /help returns just the endpoint list — point an agent at the base URL + token and it discovers the surface itself. Settings → Debug API has a new Copy API info button that copies a connection card (base URL, token, versions, docs) to hand to an agent. (SPEC 078)
  • Debug API hardening. PATCH /state/dns with an empty/keyless body ({}) now returns 422 instead of silently wiping all DNS servers/rules. GET / + /help now advertise the real verbs each endpoint accepts (e.g. GET/PATCH for state writes, GET/DELETE for a traffic session, GET/POST for verbose) — the User-Agent endpoint was mislabeled PUT (it serves PATCH), and the write endpoints were missing from the list.

Technical / Internal

  • macOS Big Sur fix (SPEC 081): core/tls_roots_darwin.go loads roots from the system keychains via /usr/bin/security and installs a tls.Config{RootCAs} on both http.DefaultTransport (bare http.Client{} callsites like get_free_dialog.go) and core.defaultSharedTransport, so crypto/x509 uses the pure-Go verifier and never calls the 12+ SecTrust* API. build/build_darwin.sh adds -linkmode=external -extldflags=-mmacosx-version-min=$MIN_MACOS_VERSION (Go's internal linker ignores CGO_LDFLAGS min-version and stamps minos 12.0). Wizard height: clampWizardSize caps the window and tabs/scroll_height.go::adaptiveScrollSize replaces fixed 620/400 scroll minimums on the Outbounds/Settings tabs.
  • core_dashboard_tab.go: refreshStateSelector prepends the localized core.state_current_option anchor and selectCurrentStateSilently() keeps it shown as selected (without firing OnChanged) on refresh and on confirm-dialog cancel; OnChanged treats the current/empty selection as a no-op.
  • core/debugapi: single endpoint registry (s.endpoints()) drives routing, GET / and GET /help (single source of truth — docs can't drift from wiring); DocsURL() pins the docs link to the release tag (dev → main); ConnectionCardJSON() builds the settings card. handleStateDNS PATCH probes raw keys to refuse a keyless clear (422). Tests: manifest_test.go (endpoints wired), dns_patch_guard_test.go (empty-body guard + advertised methods not 405). (SPEC 078)

RU

Основное

  • Снова работает на macOS 11 Big Sur. Релизные сборки падали на Big Sur при запуске (иконка в доке подпрыгивала — и ничего): Go 1.25 проверяет TLS через системный API macOS 12+ (SecTrustCopyCertificateChain), которого на 11.x нет, поэтому приложение вылетало на первом HTTPS-запросе (проверка обновлений / «Free Community Servers»). Теперь лаунчер использует свой пул корневых сертификатов из системного keychain (чистый Go-верификатор, без символа 12+), а darwin-сборка таргетит minos 11.0 через внешний линкер. Заодно исправлено: окно визарда конфигурации больше не вылезает за маленькие экраны (1280×800) — высота адаптируется, кнопки навигации остаются над Dock. Проверено на реальном маке с Big Sur 11.7.11. (SPEC 081)
  • Переключатель сохранённых состояний стал безопаснее. В дашборде Core выпадающий список «Сменить state…» теперь первым пунктом показывает ● Текущее (активно) и отображает его как выбранное — случайный тап по верху списка ничего не делает, а не уводит с живого состояния. (Переключение на именованный state по-прежнему спрашивает — Сохранить текущее / Не сохранять / Отмена — этот модал не менялся.)
  • Добавление источника из файла. Конфиги WG/AmneziaWG часто раздают файлом — на вкладке Sources появилась кнопка «Добавить из файла»: выбираете .conf ([Interface]/[Peer]), .vpn (ссылка vpn://) или .txt со ссылками — импорт идёт тем же путём, что и поле Add. (SPEC 079)
  • Самоописываемый debug API. GET / теперь отдаёт манифест (api/spec/launcher/core/auth, ссылку на доку, привязанную к версии, и список эндпоинтов), а GET /help — только список эндпоинтов: дай агенту base URL + токен, и он сам разберётся. В Settings → Debug API появилась кнопка Копировать инфо API — кладёт в буфер карточку подключения (base URL, токен, версии, docs) для передачи агенту. (SPEC 078)
  • Усиление debug API. PATCH /state/dns с пустым/безключевым телом ({}) теперь возвращает 422, а не молча стирает все DNS-серверы/правила. GET / и /help теперь показывают реальные методы каждого эндпоинта (GET/PATCH для записи state, GET/DELETE для traffic-сессии, GET/POST для verbose) — у User-Agent был ошибочно указан PUT (работает PATCH), а write-эндпоинты вообще отсутствовали в списке.

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

  • Фикс macOS Big Sur (SPEC 081): core/tls_roots_darwin.go грузит корни из системных keychain через /usr/bin/security и ставит tls.Config{RootCAs} на http.DefaultTransport (bare http.Client{} — напр. get_free_dialog.go) и на core.defaultSharedTransport, чтобы crypto/x509 шёл чистым Go-верификатором и не звал API SecTrust* (12+). В build/build_darwin.sh добавлен -linkmode=external -extldflags=-mmacosx-version-min=$MIN_MACOS_VERSION (internal-линкер Go игнорирует min-version из CGO_LDFLAGS и стампит minos 12.0). Высота визарда: clampWizardSize ограничивает окно, tabs/scroll_height.go::adaptiveScrollSize заменяет фиксированные минимумы 620/400 на табах Outbounds/Settings.
  • core_dashboard_tab.go: refreshStateSelector добавляет первым локализованный якорь core.state_current_option, а selectCurrentStateSilently() держит его выбранным (без триггера OnChanged) на refresh и на Cancel модала; OnChanged трактует выбор текущего/пустого как no-op.
  • core/debugapi: единый реестр (s.endpoints()) питает роутинг, GET / и GET /help (один источник правды — дока не расходится с кодом); DocsURL() привязывает ссылку на доку к релизному тегу (dev → main); ConnectionCardJSON() строит карточку для настроек. Тесты в manifest_test.go проверяют, что каждый заявленный эндпоинт реально зарегистрирован. (SPEC 078)