github Leadaxe/singbox-launcher v2.2.0
release v2.2.0

2 hours ago

Release v2.2.0

Downloads

macOS (Universal) - Supports both Apple Silicon and Intel

Option 1: Installation Script (Recommended)

Install with a single command (version v2.2.0):

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

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-v2.2.0-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)

Option 1: Installer (Recommended)

  1. Download: singbox-launcher-v2.2.0-win64-setup.exe
  2. Run it and confirm the administrator prompt once. The launcher goes to C:\Program Files\singbox-launcher, your data to %LOCALAPPDATA%\singbox-launcher; sing-box.exe, wintun.dll, the config template and Mesa3D are included, nothing is downloaded on first launch
    • Tasks: desktop shortcut, Start with Windows, software OpenGL (Mesa3D) for RDP / VMs without a GPU
    • Installing over a previous version keeps your data; uninstall from Settings → Apps asks whether to remove the data too
    • The installer is not code-signed yet: if SmartScreen shows "Windows protected your PC", click More info → Run anyway

Option 2: Portable ZIP

  1. Download: singbox-launcher-v2.2.0-win64.zip
    • or singbox-launcher-v2.2.0-win64-full.zip — full bundle: sing-box.exe, wintun.dll, the config template and Mesa3D (mesa3d/, used only when no hardware OpenGL — RDP, VMs) are already inside, nothing is downloaded on first launch
  2. Extract the ZIP file to a folder your account can write to, for example D:\Tools\singbox-launcher\ — settings stay next to the program (portable.txt)
    • Under C:\Program Files\ the launcher keeps its data in %LOCALAPPDATA%\singbox-launcher instead
  3. Run singbox-launcher.exe from that folder — no administrator rights, no UAC prompt
    • TUN needs administrator rights: Start offers Restart as administrator or Switch to proxy mode
    • The regular archive downloads sing-box and wintun.dll on first launch

Windows 7 (x86, legacy)

  1. Download: singbox-launcher-v2.2.0-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
    • Runs as administrator (UAC prompt on every start), settings stay next to the program (portable.txt); no installer and no daemon service

Linux Support

⚠️ Linux build temporarily unavailable - мы ищем тестировщика для ручного тестирования перед включением автоматической сборки.

Checksums

See checksums.txt for SHA256 checksums of all files.

Release notes — v2.2.0 (2026-09-25)

EN

Minor release on top of v2.1.0. Core sing-box-lx 1.14.2-lx.2 (was 1.14.1-lx.12), contract 1.1.53 (was 1.1.52).

The release is about Windows. The launcher no longer runs as administrator (issue #99): proxy mode needs no rights, TUN asks for them once. A new installer puts the program into Program Files and your data into %LOCALAPPDATA%. Daemon mode, until now macOS only, comes to Windows with the sing-box-lxd service, which runs the VPN without administrator rights for the launcher and before sign-in. The Windows 7 build keeps the old model.

Highlights

Windows: installer (SPEC 140)

  • New asset singbox-launcher-<version>-win64-setup.exe (Inno Setup, Windows 10/11 x64): one administrator prompt, the program goes to C:\Program Files\singbox-launcher, your data to %LOCALAPPDATA%\singbox-launcher; the core, wintun.dll, the template and Mesa3D are included, so the first start downloads nothing. A Start menu shortcut, an entry in Settings → Apps; optional desktop shortcut, Start with Windows and software OpenGL (Mesa3D) for RDP / VMs without a GPU.
  • Installing a newer version over it keeps the data and closes a running launcher cleanly (the VPN stops normally, the system proxy is cleared). Uninstall asks whether to remove the data of the current Windows user.
  • The installer is not code-signed yet — SmartScreen may ask for More info → Run anyway. The ZIP archives stay as they are and are now described as portable: unpack them into a folder you can write to, not Program Files.

Windows: runs without administrator rights (SPEC 139, #99)

  • No UAC prompt at every start. The launcher now runs without administrator rights. Proxy mode needs none; TUN does — Start without rights shows a dialog: Restart as administrator (one UAC prompt, the launcher restarts elevated with the same data and starts the VPN; the window title then ends with (Administrator)) or Switch to proxy mode (TUN off, local proxy with the system proxy on). On a standard user account Windows asks for an administrator's password.
  • TUN runs as administrator by default. When TUN is on, the launcher asks for administrator rights right at start (one UAC prompt) and restarts elevated with the same flags — started in the tray at sign-in, it stays in the tray. Declined — it starts without rights and the dialog above appears on Start. Settings → Connection → Ask for administrator rights at start when TUN is enabled (on by default, elevate_on_start_for_tun in settings.json) turns it off; not used in daemon mode.
  • Start with Windows. Settings → Connection → Start with Windows starts the launcher in the tray at sign-in, Connect VPN at sign-in also starts the VPN. Unavailable in a window elevated through UAC; installers can use -autostart=on|off. Remove all data (and -purge-data) removes the entry when it points to this copy.
  • Extract the zip to a folder you can write to. Under Program Files (or anywhere only administrators can write, on every OS) portable.txt is now ignored: data lives in the system folder (%LOCALAPPDATA%\singbox-launcher), data of an older version next to the program is copied there on the first start, and Storage → Mode says portable.txt ignored. An elevated and a normal launcher always see the same data.

Windows: daemon mode with the sing-box-lxd service (SPEC 141)

  • The sing-box-lxd service (core 1.14.2-lx.2+) runs the VPN without administrator rights for the launcher and before sign-in. Install service in the “TUN needs administrator rights” dialog installs it with one UAC prompt, pairs automatically and switches the engine to daemon.
  • The launcher checks the service without rights (SCM, a protected copy in Program Files owned by SYSTEM/Administrators, the same core files) and offers Run as administrator for install, start, fresh invite, uninstall and after a core update.
  • The system proxy in daemon mode is set by the launcher in your profile and cleared on Stop.
  • An elevated launcher starts the core only from that protected copy (--service=copy when there is no service); its log goes to C:\ProgramData\sing-box-lxd\logs\classic.log.

Windows 7 (win7-32)

  • The legacy build stays with the old model. It embeds app.win7.manifest (requireAdministrator): a UAC prompt on every start, everything runs as administrator and TUN works at once, with no “TUN needs administrator rights” dialog. Portable only — portable.txt from the zip is honored wherever an administrator can write, Program Files included, and the Portable switch in Settings → Storage is hidden; no installer, no daemon service and no Start with Windows (-autostart exits with code 2).

Wizard & Remote

  • Open settings from an old folder. The configurator's Read dialog has Open file…: pick a state.json (or a snapshot) from another data folder — e.g. the old portable copy the installer does not see — and it loads the same way as Clone from (the current state is snapshotted first, Save writes it). The dialog now opens even when this folder has no saved states yet.
  • Import from file… in the Remote tab's + Add window merges machines from another folder's remote-daemons.json, with their client keys and settings; machines whose address is already listed are skipped.

Fixed

  • Windows: the file dialogs no longer show a PowerShell console window behind them.
  • Remote: a machine's resources window (RES) shows its tooltips, and its error messages and delete confirmation open over that window instead of the main one.
  • Configurator: a disabled Direction picked among another Direction's Extra options offered in the picker is no longer offered as a rule target — it is not in config.json.
  • Share links: a VLESS REALITY link now carries security=reality — Xray-based clients read a link without it as a node without TLS.
  • Links: servername / serverName is read as the server name when neither sni nor peer is given. In vless links packet-encoding is read as the packet encoding, and Xray's gRPC authority (sing-box has no such setting) and subscription cache-busters (_t, __rand, seq, nonce) are skipped without an unknown-parameter note.
  • vmess links: TCP keep-alive settings in the JSON form are read back (they were written but lost on the way back), and an h2 transport without its own host uses the server address.
  • Xray configs: a negative tcpKeepAliveInterval on its own — Xray's way to turn keep-alive off — now turns it off instead of being lost silently.

Technical / Internal

  • UI freeze watchdog. A background goroutine pings the Fyne main loop every 10 s; when it has not answered for about 30 s, the launcher writes the stacks of all goroutines to logs/ui-freeze-<yyyymmdd-hhmmss>.txt (version, OS/arch, time of the last UI response, goroutine count; the newest 3 files are kept) and logs a WARN with the path, then an INFO when the window answers again. A frozen window left nothing in the log before, and Windows has no SIGQUIT to get the stacks.
  • Core pinned to sing-box-lx 1.14.2-lx.2 (was 1.14.1-lx.12). Adds the sing-box-lxd Windows service (--service=install|copy|status|uninstall, fork SPEC 103; handler panics are logged to lxd.log). Upstream sync to sing-box 1.14.2 on top of lx.13: the root lx block (WireGuard idle keys under lx.wg.*, lx.masque.idle_timeout) and the quieter WireGuard handshake log (GSO retry noise). No configuration or state migration (SPEC 138). (pre-release rc.1–rc.3 were used for the Windows acceptance run)
  • Ready for the root lx block of the core (SPEC 138). Core lx.13 moves the WireGuard idle-suspend keys from route.lx_idle_* to lx.wg.*. The launcher never wrote them (desktop core builds lack idle-suspend and refuse them at start), so the pin bump needs no config or state migration. A root lx block in the template (e.g. lx.masque.idle_timeout) is passed through to config.json as-is; a test now pins that.
  • Windows manifest asInvoker (win64; the manifest stays embedded against UAC file virtualization; win7-32 embeds app.win7.manifest with requireAdministrator). platform.IsElevated (TokenElevation or membership in Administrators), platform.RunElevated — ShellExecuteExW runas returning a process handle with Wait (also used by the service commands of SPEC 141), platform.WaitForProcessExit. The elevated instance gets the parent's layout via -handoff=<pid>|<mode>|<data>|<logs> and waits for the parent to exit (up to 25 s) before opening logs, the Debug API port and the tray. The first WARN line of every start now carries elevated=yes|no (SPEC 139).
  • Admin-only work is gated without rights (SPEC 139 §6): NLA/ghost-adapter/firewall-rule cleanup at start and after Stop is skipped with one INFO line; Remove all data / -purge-data skip network cleanup (the CLI prints the command to finish from an administrator prompt) and leftovers in a protected program folder (Requires administrator rights, exit code 0) — the dialog warns that such an old copy stays and is migrated into the data folder again on the next start; Kill of a core started by an elevated launcher shows a message with Restart as administrator instead of pretending it stopped; the Portable switch is unavailable in a window elevated through UAC and in a protected program folder.
  • paths.AppDirUserWritable: write probe and, on Windows, not under ProgramFiles/ProgramFiles(x86)/ProgramW6432/SystemRoot. Used by the portable.txt and legacy rules, the Windows fallback, SystemDefault, the Portable switch and the Mesa3D write probe. A portable.txt in a read-only folder no longer fails the start on Linux either.
  • Installer plumbing (SPEC 140). The launcher creates Local\ / Global\SingboxLauncher.Instance mutexes and listens to the Local\SingboxLauncher.Quit event (Windows, GUI mode only) — the installer uses them to find the launcher and ask it to quit through GracefulExit. The win64-full set is staged by one script, build/installer/stage_win64_full.sh, for both the zip and the installer; the new CI job build-windows-installer compiles it with ISCC (Inno Setup 6.4+, VersionInfoVersion from git describe), and the release job publishes it with a line in checksums.txt. The OpenGL start-up check no longer offers to install Mesa3D into a read-only program folder and points to the installer task instead.
  • Windows daemon internals (SPEC 141). The SCM is queried without rights (only BinaryPathName); the classifier checks the protected copy set (exe + libcronet.dll, sidecar, leftovers) with the same owner-SID allowlist as the core; service operations run through runas with invite-file pairing; the user system proxy is set through WinINet; the tailscale state folder moves to the service state; classic.log gets an explicit DACL.
  • Daemon engine code split by platform (SPEC 141). The shared daemon code (engine, classifier, pairing, command assembly, classic privileged-start gate) builds for macOS and Windows x64/arm64 (darwin || (windows && !386)); macOS-only parts live in *_darwin.go, Windows-only parts in *_windows.go; Linux and win7-32 keep stubs.
  • Registry linter: an empty detect dictionary is not a predicate (SPEC 133). json: {} / ini: {} / text: {} — explicit, or left behind after the loader silently dropped a misspelled field name (has_key instead of required_keys) — match every element, so the first form or section carrying one would swallow the elements the following ones are written for. Detect.IsZero now treats such dictionaries as empty, and the registry linter walks every mapper section and form (nested not/all/any included) on top of source kinds. Engine semantics on both sides of the contract are unchanged.
  • Contract 1.1.53 (SPEC 133, review of the LxBox registry mirror): the link items under Fixed; Shadowsocks links are written without = padding (as SIP002 does) and the vmess v2rayN container in v2rayN's key order with aid as the string "0" — both forms are still read; disable_sni on TUIC also drops the server_name taken from sni; mappers.singbox sections for 13 more schemes; new corpus cases.

Specifications: SPEC 139 — Windows: asInvoker and elevation on demand · SPEC 140 — Windows installer · SPEC 141 — daemon mode on Windows · issue #99


RU

Минорный релиз поверх v2.1.0. Ядро sing-box-lx 1.14.2-lx.2 (было 1.14.1-lx.12), контракт 1.1.53 (было 1.1.52).

Релиз про Windows. Лаунчер больше не работает от имени администратора (issue #99): режиму прокси права не нужны, TUN запрашивает их один раз. Новый установщик кладёт программу в Program Files, а данные — в %LOCALAPPDATA%. Daemon-режим, до сих пор только на macOS, приходит на Windows со службой sing-box-lxd: она держит VPN без прав у лаунчера и до входа в систему. Сборка для Windows 7 остаётся в прежней модели.

Основное

Windows: установщик (SPEC 140)

  • Новый ассет singbox-launcher-<version>-win64-setup.exe (Inno Setup, Windows 10/11 x64): один запрос прав администратора, программа — в C:\Program Files\singbox-launcher, данные — в %LOCALAPPDATA%\singbox-launcher; ядро, wintun.dll, шаблон и Mesa3D внутри, первый запуск ничего не качает. Ярлык в «Пуске», строка в «Параметры → Приложения»; по желанию — ярлык на рабочем столе, «Запускать вместе с Windows» и программный OpenGL (Mesa3D) для RDP / ВМ без видеокарты.
  • Установка новой версии поверх сохраняет данные и штатно закрывает работающий лаунчер (VPN останавливается, системный прокси снимается). Удаление спрашивает, удалять ли данные текущего пользователя Windows.
  • Установщик пока не подписан — SmartScreen может попросить «Подробнее → Выполнить в любом случае». Zip-архивы остаются как были и теперь описаны как portable: распаковывать в папку с правом записи, а не в Program Files.

Windows: без прав администратора (SPEC 139, #99)

  • Без запроса UAC на каждом старте. Лаунчер теперь работает без прав администратора. Режиму прокси они не нужны, TUN — нужны: Start без прав показывает диалог — Перезапустить от имени администратора (один запрос UAC, лаунчер перезапускается с правами и теми же данными и поднимает VPN; в заголовке окна — (Администратор)) или Перейти в режим прокси (TUN выключен, включён локальный прокси с системным). Под обычной учётной записью Windows спросит пароль администратора.
  • TUN по умолчанию работает под администратором. При включённом TUN лаунчер запрашивает права администратора сразу при старте (один запрос UAC) и перезапускается с правами и теми же флагами — запущенный в трее при входе остаётся в трее. Отказ — старт без прав, и при Start появится диалог выше. Выключается в Settings → Connection → Запрашивать права администратора при старте, если включён TUN (по умолчанию включено, elevate_on_start_for_tun в settings.json); в daemon-режиме не применяется.
  • Автозапуск. Settings → Connection → Запускать вместе с Windows запускает лаунчер в трее при входе, Подключать VPN при входе заодно поднимает VPN. В окне, повышенном через UAC, недоступно; установщику — -autostart=on|off. Remove all data (и -purge-data) удаляет запись, если она указывает на эту копию.
  • Распаковывайте zip в папку, куда вы можете писать. Под Program Files (и на любой ОС — там, куда пишет только администратор) portable.txt теперь не учитывается: данные живут в системной папке (%LOCALAPPDATA%\singbox-launcher), данные старой версии рядом с программой при первом запуске копируются туда, а Storage → Mode показывает «portable.txt не учитывается». Лаунчер с правами и без видит одни и те же данные.

Windows: daemon-режим со службой sing-box-lxd (SPEC 141)

  • Служба sing-box-lxd (ядро 1.14.2-lx.2+) держит VPN без прав у лаунчера и до входа в систему. Установить службу в диалоге «Для TUN нужны права администратора» ставит её одним запросом UAC, сопрягается сама и переключает движок на daemon.
  • Лаунчер проверяет службу без прав (SCM, защищённая копия в Program Files с владельцем SYSTEM/Administrators, те же файлы ядра) и предлагает Выполнить от имени администратора для установки, запуска, свежего приглашения, удаления и после обновления ядра.
  • Системный прокси в daemon-режиме ставит лаунчер в профиле пользователя и снимает при Stop.
  • Лаунчер с правами запускает ядро только из этой защищённой копии (без службы — --service=copy), его лог — C:\ProgramData\sing-box-lxd\logs\classic.log.

Windows 7 (win7-32)

  • Legacy-сборка остаётся в прежней модели. Она вшивает app.win7.manifest (requireAdministrator): запрос UAC при каждом запуске, всё работает от имени администратора, TUN — сразу, без диалога «Для TUN нужны права администратора». Только portable — portable.txt из zip учитывается везде, куда может писать администратор, включая Program Files, а переключатель Portable в Settings → Storage скрыт; без установщика, службы и автозапуска (-autostart завершается с кодом 2).

Визард и Remote

  • Открыть настройки из старой папки. В диалоге Загрузить (Read) конфигуратора — Открыть файл…: выберите state.json (или снапшот) из другой папки данных — например, из старой portable-копии, которую установщик не видит, — и он загрузится так же, как при Clone from (текущее состояние сперва уходит в снапшот, на диск пишет Save). Диалог теперь открывается, даже если в этой папке ещё нет сохранённых состояний.
  • Импорт из файла… в окне + Добавить на вкладке Remote добавляет машины из remote-daemons.json другой папки вместе с клиентскими ключами и настройками; машины с уже известным адресом пропускаются.

Исправления

  • Windows: за файловыми диалогами больше не висит окно консоли PowerShell.
  • Remote: окно ресурсов машины (RES) показывает подсказки, а его сообщения об ошибках и подтверждение удаления открываются поверх этого окна, а не главного.
  • Конфигуратор: выключенное Направление, отмеченное у другого Направления в Дополнительные опции в списке выбора, больше не предлагается целью правила — в config.json его нет.
  • Share-ссылки: ссылка VLESS REALITY теперь несёт security=reality — клиенты на Xray читают ссылку без него как узел без TLS.
  • Ссылки: servername / serverName читается именем сервера, когда нет ни sni, ни peer. В ссылках vless packet-encoding читается кодировкой пакетов, а gRPC-параметр Xray authority (у sing-box такой настройки нет) и кэш-бастеры подписок (_t, __rand, seq, nonce) пропускаются без пометки о неизвестном параметре.
  • Ссылки vmess: настройки TCP keep-alive из JSON-формы читаются обратно (записывались, но терялись на обратном пути), а транспорт h2 без своего host берёт адрес сервера.
  • Конфиги Xray: отрицательный tcpKeepAliveInterval сам по себе — так Xray выключает keep-alive — теперь выключает его, а не теряется молча.

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

  • Сторож зависания UI. Фоновая горутина раз в 10 с проверяет главный цикл Fyne; если он не отвечает около 30 с, лаунчер пишет стеки всех горутин в logs/ui-freeze-<yyyymmdd-hhmmss>.txt (версия, ОС/архитектура, время последнего ответа UI, число горутин; хранятся 3 последних файла) и WARN с путём в лог, а когда окно снова отвечает — INFO. Раньше зависшее окно не оставляло в логе ничего, а снять стеки на Windows нечем (SIGQUIT нет).
  • Пин ядра sing-box-lx 1.14.2-lx.2 (было 1.14.1-lx.12). Добавляет Windows-службу sing-box-lxd (--service=install|copy|status|uninstall, SPEC 103 форка; panic обработчиков пишутся в lxd.log). Синк с апстримом sing-box 1.14.2 поверх lx.13: корневой блок lx (ключи сна WireGuard под lx.wg.*, lx.masque.idle_timeout) и тихий лог рукопожатий WireGuard (шум повторов GSO). Миграции конфига и состояния нет (SPEC 138). (Для приёмки на Windows использовались пререлизы rc.1–rc.3.)
  • Готовность к корневому блоку lx ядра (SPEC 138). Ядро lx.13 переносит ключи сна WireGuard из route.lx_idle_* в lx.wg.*. Лаунчер их никогда не писал: десктопные сборки ядра собраны без сна WG и отвергают эти ключи на старте. Поэтому бамп пина не требует миграции конфига и состояния. Корневой блок lx из шаблона (например, lx.masque.idle_timeout) уходит в config.json как есть, теперь это закреплено тестом.
  • Манифест Windows asInvoker (win64; манифест остаётся вшитым — против UAC-виртуализации файлов; win7-32 вшивает app.win7.manifest с requireAdministrator). platform.IsElevated (TokenElevation или членство в Administrators), platform.RunElevated — ShellExecuteExW runas с дескриптором процесса и Wait (им же пользуются команды службы SPEC 141), platform.WaitForProcessExit. Повышенный экземпляр получает раскладку родителя флагом -handoff=<pid>|<mode>|<data>|<logs> и ждёт выхода родителя (до 25 с), прежде чем открыть логи, порт Debug API и трей. Первая WARN-строка старта теперь содержит elevated=yes|no (SPEC 139).
  • Всё, что требует админа, без прав за гейтом (SPEC 139 §6): очистка NLA, призрачных адаптеров и правил брандмауэра при старте и после Stop пропускается одной строкой INFO; Remove all data / -purge-data пропускают сетевую очистку (CLI печатает команду для консоли администратора) и остатки в защищённой папке программы («Нужны права администратора», код выхода 0) — диалог предупреждает, что такая старая копия остаётся и при следующем запуске снова переносится в папку данных; Kill ядра, запущенного лаунчером с правами, показывает сообщение с перезапуском от имени администратора, а не делает вид, что ядро остановлено; переключатель Portable недоступен в окне, повышенном через UAC, и в защищённой папке программы.
  • paths.AppDirUserWritable: проба записи и, на Windows, не под ProgramFiles/ProgramFiles(x86)/ProgramW6432/SystemRoot. Им пользуются правила portable.txt и legacy, Windows-фоллбэк, SystemDefault, переключатель Portable и проба записи для Mesa3D. portable.txt в папке только для чтения больше не роняет старт и на Linux.
  • Обвязка установщика (SPEC 140). Лаунчер создаёт мьютексы Local\ / Global\SingboxLauncher.Instance и слушает событие Local\SingboxLauncher.Quit (Windows, только GUI-режим) — по ним установщик находит лаунчер и просит его выйти через GracefulExit. Набор win64-full готовит один скрипт build/installer/stage_win64_full.sh и для zip, и для установщика; новая job CI build-windows-installer компилирует его ISCC (Inno Setup 6.4+, VersionInfoVersion из git describe), job release публикует со строкой в checksums.txt. Проверка OpenGL при старте больше не предлагает ставить Mesa3D в закрытую для записи папку программы и подсказывает задачу установщика.
  • Внутренности daemon-режима на Windows (SPEC 141). SCM опрашивается без прав (только BinaryPathName); классификатор проверяет набор защищённой копии (exe + libcronet.dll, sidecar, остатки) тем же allowlist SID владельцев, что и ядро; операции службы идут через runas с сопряжением через файл приглашения; системный прокси пользователя ставится через WinINet; папка состояния tailscale переезжает в состояние службы; classic.log получает явный DACL.
  • Код daemon-движка разделён по платформам (SPEC 141). Общий daemon-код (движок, классификатор, сопряжение, сборка команд, гейт привилегированного старта classic) собирается для macOS и Windows x64/arm64 (darwin || (windows && !386)); только-macOS части — в *_darwin.go, только-Windows — в *_windows.go; на Linux и win7-32 — заглушки.
  • Линтер реестра: пустой словарь detect предикатом не является (SPEC 133). json: {} / ini: {} / text: {} — явный или оставшийся после того, как загрузчик молча выбросил опечатанное имя поля (has_key вместо required_keys), — верен на любом элементе, и первая форма или секция с ним забирала бы элементы, ради которых написаны следующие. Detect.IsZero теперь считает такой словарь пустым, а линтер реестра обходит все секции-мапперы и формы (включая вложенные not/all/any), а не только виды источника. Семантика движка на обеих сторонах контракта не менялась.
  • Контракт 1.1.53 (SPEC 133, ревизия зеркала реестра LxBox): пункты о ссылках из «Исправлений»; ссылки Shadowsocks пишутся без =-паддинга (как в SIP002), а контейнер vmess v2rayN — в порядке ключей v2rayN и с aid строкой "0" — обе формы по-прежнему читаются; disable_sni у TUIC снимает и server_name, взятый из sni; секции mappers.singbox ещё для 13 схем; новые кейсы корпуса.

Спецификации: SPEC 139 — Windows: asInvoker и права по требованию · SPEC 140 — установщик для Windows · SPEC 141 — daemon-режим на Windows · issue #99

Don't miss a new singbox-launcher release

NewReleases is sending notifications on new releases.