Files
tglock/Cargo.toml
T
Никита Sonic af3b14395f fix(bundle): в v2.0.0-beta.2 упаковывался CLI вместо приложения (#31)
Симптом: на macOS приложение не запускается совсем — иконка подпрыгивает в
доке и гаснет, хотя разрешение выдано.

Причина. В #25 в крейте появился второй бинарь tglock-cli, а mainBinaryName в
tauri.conf.json задан не был. Бандлер Tauri выбрал главным исполняемым файлом
приложения headless CLI. Запуск .app стартовал консольный прокси, окна не
создавалось.

Проверено на опубликованных артефактах:

  CFBundleExecutable   размер MacOS/*
  beta.1  tglock       18.6 МБ   ← GUI, правильно
  beta.2  tglock-cli    4.5 МБ   ← консольный прокси

Задеты все платформы, не только macOS. В .deb лежит usr/bin/tglock-cli, а в
TGLock.desktop прописан Exec=tglock-cli. Установщик Windows упал с 2.0 МБ до
0.6 МБ — тот же признак. То есть beta.2 не запускается нигде.

Почему это уехало с зелёным CI: сборка релиза была успешной, потому что никто
не проверял, что внутри бандла. Тесты гоняют ядро, а не собранное приложение.

Исправление: mainBinaryName = "tglock" в tauri.conf.json. Проверено сборкой на
этой же ветке — Tauri берёт tglock.exe, установщик вернулся к нормальному
размеру.

Чтобы это не повторилось, добавлены две проверки:
- в CI, на каждый PR: mainBinaryName обязан совпадать с именем [[bin]], у
  которого required-features = ["gui"]. Проверено в обе стороны — на верном
  конфиге проходит, на подставленном tglock-cli падает;
- в release.yml, после сборки: на macOS читается CFBundleExecutable из
  Info.plist, на Linux проверяется наличие /usr/bin/tglock в .deb. Смотрит
  внутрь настоящего артефакта, а не в конфиг.

README: пример команды с хешем больше не прибит к конкретной версии, ссылка на
запуск сборки заменена на общее указание, и добавлена строка для тех, кто уже
скачал beta.2 и не смог её открыть.

Co-authored-by: by-sonic <171230345+by-sonic@users.noreply.github.com>
2026-07-30 15:40:18 +03:00

56 lines
1.2 KiB
TOML

[package]
name = "tglock"
version = "2.0.0-beta.3"
edition = "2021"
rust-version = "1.88"
description = "Telegram unblock via local WebSocket tunnel"
license = "MIT"
autobins = false
[features]
default = ["gui"]
# The desktop GUI. Turning it off drops Tauri, the system WebView and the
# frontend bundle from the build, which is what makes headless servers and
# machines without a GPU or monitor able to build and run TGLock at all.
gui = ["dep:tauri", "dep:tauri-build", "dep:open"]
[lib]
name = "tglock"
path = "src/lib.rs"
[[bin]]
name = "tglock"
path = "src/main.rs"
required-features = ["gui"]
[[bin]]
name = "tglock-cli"
path = "src/bin/cli.rs"
[dependencies]
tauri = { version = "2", features = [], optional = true }
open = { version = "5", optional = true }
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = [
"rt-multi-thread",
"net",
"io-util",
"time",
"macros",
"sync",
"signal",
] }
tokio-tungstenite = { version = "0.24", features = ["native-tls"] }
native-tls = "0.2"
futures-util = "0.3"
aes = "0.8"
ctr = "0.9"
cipher = "0.4"
sha2 = "0.10"
rand = "0.8"
[build-dependencies]
tauri-build = { version = "2", features = [], optional = true }