Release v1.1.4
Downloads
macOS (Universal) - Supports both Apple Silicon and Intel
Option 1: Installation Script (Recommended)
Install with a single command (version v1.1.4):
curl -fsSL https://raw.githubusercontent.com/Leadaxe/singbox-launcher/develop/scripts/install-macos.sh | bash -s -- v1.1.4The 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-v1.1.4-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-v1.1.4-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-v1.1.4-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.
v1.1.4 — AmneziaWG 2.0 ranged magic headers (H1–H4)
Real AmneziaWG 2.0 exports randomize magic headers as ranges (H1 = 43613244-384550127) — now they import and work end-to-end. Requires core 1.13.13-lx.6 (pin bumped): update via Core Dashboard → Download / Reinstall. No config migration is needed.
Реальные экспорты AmneziaWG 2.0 рандомизируют magic-заголовки диапазонами (H1 = 43613244-384550127) — теперь они импортируются и работают end-to-end. Требуется ядро 1.13.13-lx.6 (пин забампен): обновите через Core Dashboard → Download / Reinstall. Миграция конфигов не нужна.
EN
Highlights
- AmneziaWG 2.0 header ranges (
H1-H4 = lo-hi) are now imported and passed to the core. Previously the parser silently dropped all four fields — the node imported without them and the handshake never matched. Ranges now flow 1:1 into the endpoint ("h1": "N-M"), and the core picks a fresh in-range value on every handshake. Single values stay JSON numbers, mixing is fine. Applies toawg://links,vpn://profiles (v1.1.3) and pasted.conftext (v1.1.3). Validated against the real1.13.13-lx.6binary:sing-box checkaccepts both the ranged config built from a real AWG 2.0 export and the single-value regression. (SPEC 073.2) - Import-time diagnostics for magic headers. Garbage in
H1–H4now logs a warning instead of a silent debug entry (a dropped header silently falls back to the WireGuard default in the core — the handshake-mismatch failure mode). Overlapping effective header ranges — including the WireGuard defaults (1–4) of unset headers — are detected at import and warned about; the core rejects such an endpoint withheaders must not overlap.
Technical / Internal
parseAWGHeaderRangeinnode_parser_wireguard.go: plain uint32 → int64 (JSON number) as before;lo-hionh1–h4→ normalized range string (reversed bounds reordered); ranges on other numeric AWG fields and invalid values are skipped. Share-URI emits the range unchanged (awgNumericStringalready passes strings through) — lossless endpoint → URI → endpoint round-trip.awgHeaderOverlapmirrors the core contract (unset = WG default, single =[v,v], range =[lo,hi]). Tests:awg_range_test.go.chore(core):RequiredCoreVersion1.13.13-lx.5 → 1.13.13-lx.6 (native"hN": "lo-hi"support; earlier cores reject the string form).fix(scripts): theprepare-commit-msghook no longer drops a commit message without a trailing newline (POSIXreadskips the final unterminated line; e.g.git merge -mmessages vanished entirely).
RU
Основное
- Диапазоны заголовков AmneziaWG 2.0 (
H1-H4 = lo-hi) теперь импортируются и пробрасываются в ядро. Раньше парсер молча выбрасывал все четыре поля — узел импортировался без них, и handshake не сходился. Теперь диапазон идёт в endpoint один в один ("h1": "N-M"), и ядро само выбирает свежее значение внутри диапазона на каждый handshake. Одиночные значения остаются JSON-числами, смешивать можно. Работает дляawg://-ссылок,vpn://-профилей (v1.1.3) и вставленного.conf-текста (v1.1.3). Проверено на реальном бинаре1.13.13-lx.6:sing-box checkпринимает и диапазонный конфиг из реального экспорта AWG 2.0, и регрессионный с одиночными H. (SPEC 073.2) - Диагностика magic-заголовков при импорте. Мусор в
H1–H4теперь даёт warn в логе вместо тихой debug-записи (молча выброшенный заголовок откатывается у ядра на WireGuard-дефолт — тот самый сценарий несовпадения handshake). Пересечение эффективных диапазонов заголовков — включая WireGuard-дефолты (1–4) незаданных — ловится при импорте с предупреждением; такой endpoint ядро отвергает сheaders must not overlap.
Техническое / Внутреннее
parseAWGHeaderRangeвnode_parser_wireguard.go: одиночный uint32 → int64 (JSON-число) как раньше;lo-hiнаh1–h4→ нормализованная строка диапазона (перевёрнутые границы упорядочиваются); диапазоны на прочих числовых AWG-полях и невалидные значения скипаются. Share-URI отдаёт диапазон без изменений (awgNumericStringуже пропускал строки) — round-trip endpoint → URI → endpoint без потерь.awgHeaderOverlapзеркалит контракт ядра (незаданный = WG-дефолт, одиночный =[v,v], диапазон =[lo,hi]). Тесты:awg_range_test.go.chore(core):RequiredCoreVersion1.13.13-lx.5 → 1.13.13-lx.6 (нативная поддержка"hN": "lo-hi"; старые ядра отвергают строковую форму).fix(scripts): hookprepare-commit-msgбольше не теряет сообщение коммита без завершающего перевода строки (POSIXreadпропускал последнюю незавершённую строку; например, сообщенияgit merge -mисчезали целиком).