github Leadaxe/singbox-launcher v1.3.1
release v1.3.1

4 hours ago

Release v1.3.1

Downloads

macOS (Universal) - Supports both Apple Silicon and Intel

Option 1: Installation Script (Recommended)

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

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

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

Патч-релиз: исправлено переключение группы селектора, когда ядро запущено не лаунчером, и добавлена информация о текущем выборе группы в список серверов.

EN

Highlights

  • Selector group switching now works with an externally started core. Picking a different group in the Servers tab reloaded the node list only when sing-box had been launched by the launcher itself. If the core was started manually or the launcher was pointed at a remote Clash API endpoint (SPEC 064), the status line updated but the list kept showing nodes from the previous group. The reload is now gated on Clash API reachability instead of process ownership.
  • Group rows show the node currently in use. A group's subtitle now reads 🚩 [11] fastest ‣ AL:🇫🇷-Франция — the mode, the pool size, and the member the core has selected right now (now from the Clash API, taken from the /proxies response the launcher already fetches, so no extra requests). Country badges remain as a fallback until the core reports a selection.
  • Glyph catalogue for UI icon picking — a new tab in the top row renders every glyph of the theme's fonts at the exact size used in list subtitles, with filters for "safe in all text fonts" and "emoji only", plus copy buttons for the glyph and its Go literal. Added because a symbol that looks fine in an editor can silently fail to render, turn into tofu on Cyrillic text, or arrive as an uncolourable colour emoji.

Fixed

  • Stale auto-load results no longer overwrite the current group. The retry loop runs for up to ~100 seconds; switching groups while it was running was ignored ("already in progress"), and its late response then clobbered the list of the newly selected group. Runs are now superseded via a generation counter, and results are re-validated before every write.
  • Scrollbar gutter in server list rows is no longer double-counted. The row padding added a fourth side on the right that stacked with the reserved gutter (~18pt instead of 14). A dedicated components.NewListRowPadded omits the right side, so every screen now reserves the same width from the single shared constant.
  • Saved traffic sessions list reserves the scrollbar gutter — the scrollbar used to paint over the row's Delete button.
  • Group mode icons render reliably. The previous marks failed in the bundled emoji font: (U+26A1) has an empty glyph and drew nothing at all, and 🔀 collapsed into an unreadable blob at subtitle size.
  • macOS: the install script no longer leaves the app unlaunchable. -i re-signed only the executable, so the bundle seal drifted out of sync with Contents/ and macOS refused to start the app (Launchd job spawn failed, POSIX 162). The seal check only caught a missing _CodeSignature, not a stale one; it now verifies the seal with working data moved aside and re-seals when needed.

RU

Основное

  • Переключение группы селектора работает с ядром, запущенным не лаунчером. Выбор другой группы на вкладке «Серверы» перезагружал список узлов только если sing-box был поднят самим лаунчером. При ядре, запущенном вручную, или при подключении к внешнему Clash API (SPEC 064) статус менялся, а список продолжал показывать узлы предыдущей группы. Теперь условие — доступность Clash API, а не принадлежность процесса.
  • Строки групп показывают текущий выбор. Подзаголовок группы читается как 🚩 [11] fastest ‣ AL:🇫🇷-Франция — режим, размер пула и узел, выбранный ядром прямо сейчас (поле now из Clash API, берётся из ответа /proxies, который лаунчер и так запрашивает, — дополнительных запросов нет). Флаги стран остаются запасным вариантом, пока ядро не сообщило выбор.
  • Каталог глифов для подбора значков UI — новая вкладка в верхнем ряду показывает все символы шрифтов темы на том же кегле, что и подзаголовки списка, с фильтрами «безопасные во всех текстовых шрифтах» и «только эмодзи» и кнопками копирования символа и Go-литерала. Появился потому, что символ, красивый в редакторе, в приложении может не отрисоваться вовсе, стать тофу на кириллице или прийти нередактируемой цветной картинкой.

Исправлено

  • Устаревший результат автозагрузки больше не затирает текущую группу. Retry-цикл живёт до ~100 секунд; смена группы во время его работы игнорировалась («уже выполняется»), а поздний ответ затем перезаписывал список уже выбранной группы. Теперь запуски вытесняются по счётчику поколений, а результат сверяется перед каждой записью.
  • Отступ под полосу прокрутки в строках списка серверов больше не удваивается. Padding строки добавлял справа четвёртую сторону, складывавшуюся с зарезервированным gutter'ом (~18pt вместо 14). Отдельный components.NewListRowPadded не ставит правый отступ, и все экраны резервируют одинаковую ширину из единой общей константы.
  • Список сохранённых сессий трафика резервирует место под полосу прокрутки — раньше она наезжала на кнопку «Delete».
  • Значки режимов групп рисуются надёжно. Прежние символы не работали во встроенном эмодзи-шрифте: у (U+26A1) пустой глиф и он не отрисовывался вовсе, а 🔀 на кегле подзаголовка схлопывался в неразличимое пятно.
  • macOS: скрипт установки больше не оставляет приложение незапускаемым. -i переподписывал только исполняемый файл, печать бандла расходилась с содержимым Contents/, и macOS отказывался стартовать приложение (Launchd job spawn failed, POSIX 162). Проверка ловила только отсутствие _CodeSignature, но не устаревшую печать; теперь она проверяет печать с вынесенными рабочими данными и пересоздаёт её при необходимости.

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

  • api.ProxyInfo получил поля Now / NowDisplay — тег, выбранный группой, для каждой группы из ответа /proxies.
  • components.NewListRowPadded — общий механизм padding'а строки списка без правой стороны; локальная константа serversListRowScrollbarGutterWidth удалена в пользу components.ScrollbarGutterWidth.
  • github.com/go-text/typesetting переведён из косвенных зависимостей в прямые — используется каталогом глифов для чтения покрытия шрифтов.

Don't miss a new singbox-launcher release

NewReleases is sending notifications on new releases.