Files
Unlucky-Launcher/packaging/release-notes.md
T
AskaEth 1c7285cea9 feat(cli): GUI 二进制内建 CLI 子命令分发,ull 纳入发布资产(M82)
一个二进制两种用法:两个 GUI 的 main.rs 在进 UI 之前分发子命令,命中就把控制权交给
unlucky_cli::run —— 不建窗口、不探后端、不扫字体、不 dlopen 图形库。

分发判据只有一条,子命令表不重复:crates/cli 的解析器是唯一真相源。
- 首个 token 是裸词 → 子命令位置,交 CLI(未知子命令由 CLI 报错 + 提示 --help,退出 1,
  不静默开窗)
- 首个 token 是 flag → 只有 CLI 解析出真命令才算 CLI 调用;--data-dir X 解析成 Welcome、
  --screenshot / --renderer / --diff 等 GUI 参数解析失败,一律仍走 GUI(CI 脚本零改动)

顺带:unlucky-launcher --version 以前会直接开窗,现在走 CLI 分发报版本。

packaging:ull 作为独立裸资产随每个槽位发布(make_artifacts.py + release.yml 的 assets
数组与 SHA256SUMS glob),矩阵完整性检查改成 GUI/CLI 各查一次。

app-iced 的 x11 / wayland / linux-theme-detection 收进 target 专属的 cfg(target_os) 段。

门禁实跑:cargo fmt --all --check 通过;cargo clippy --workspace --all-targets -D warnings
通过(exit 0);cargo test --workspace 通过(51 个测试二进制 / 1369 个用例,含本次新增的
5 + 5 条分发判据用例)。
2026-11-02 08:08:09 +08:00

5.2 KiB

Unlucky Launcher {{VERSION}}

Rust-native single-file Minecraft launcher: Slint + Metro UI, built-in AI agent (chat / config edits / crash diagnosis) and an MCP server other agent tools can attach to. No WebView, no bundled runtime, no JRE download needed to start the launcher itself.

Downloads

Platform Asset Notes
Windows 10/11 x64 unlucky-launcher-{{VERSION}}-windows-x64.exe single exe, double-click to run
Windows 11 ARM64 unlucky-launcher-{{VERSION}}-windows-arm64.exe single exe, runs natively on ARM64 Windows
Linux x64 (X11/Wayland) unlucky-launcher-{{VERSION}}-linux-x64.tar.gz single binary inside, no installer
Linux arm64 (X11/Wayland) unlucky-launcher-{{VERSION}}-linux-arm64.tar.gz single binary inside; needs glibc 2.35+
macOS 12+ Apple Silicon unlucky-launcher-{{VERSION}}-macos-arm64.tar.gz single binary inside, no installer
macOS 12+ Intel unlucky-launcher-{{VERSION}}-macos-x64.tar.gz single binary inside, no installer

LICENSE, NOTICE and README.md ship in every archive; on Windows they are attached to this release next to the .exe (a lone exe cannot carry them), so the license terms travel with the download on every platform.

Every slot also ships the command line as its own small asset — ull-{{VERSION}}-<slot> (.exe on Windows):

./ull-{{VERSION}}-linux-x64 instances list     # servers / CI / Termux: no graphics stack needed
unlucky-launcher instances list                # desktops: the GUI binary answers the same commands

ull runs instances, install, launch, accounts, sessions, logs, diag, config, java and agent, and links no graphics library at all. The GUI binary accepts the same set before it ever opens a window, so on a machine with a desktop you do not need ull.

Support matrix

Platform Level Runtime requirements
Windows 10/11 x64 first class nothing beyond the OS (UCRT is part of Win10+)
Windows 11 ARM64 first class (launcher artifact) nothing extra; launcher runs natively, the game itself runs through the OS x64 emulation layer with an x64 JDK
macOS 12+ (arm64 / x64) first class nothing; unsigned build, see Gatekeeper note
Linux x64, X11 first class libxkbcommon, fontconfig, libGL (or software renderer), libxcb
Linux x64, Wayland supported wayland-client, libxkbcommon, plus the X11 set for XWayland apps
Linux arm64, X11 first class glibc 2.35+ (built on ubuntu-22.04-arm, same floor as x64), libxkbcommon, fontconfig, libGL, libxcb
Linux arm64, Wayland supported the above plus wayland-client
Windows 8.1/8/7 unsupported baseline was raised to Win10 (decision D21)
Android — Termux + X11 experimental, not promised CLI only (the ull asset, or build from source), GUI unverified; not part of this release matrix

Both arm64 rows are formally released slots (the assets ship in this release and in SHA256SUMS.txt), not the experimental Termux path: Linux arm64 is built and smoke-tested on a native ARM64 runner, Windows ARM64 is cross-built with the same static-CRT gate as x64.

Install

Windows — put the .exe anywhere and run it (pick -windows-arm64.exe on ARM64 Windows, -windows-x64.exe everywhere else). Portable data lives next to the exe when a portable.marker file is present, otherwise under %APPDATA%.

Linux

tar -xzf unlucky-launcher-{{VERSION}}-linux-x64.tar.gz   # use linux-arm64 on aarch64
cd unlucky-launcher-{{VERSION}}-linux-x64                # ditto
chmod +x unlucky-launcher && ./unlucky-launcher

macOS

tar -xzf unlucky-launcher-{{VERSION}}-macos-arm64.tar.gz
cd unlucky-launcher-{{VERSION}}-macos-arm64
xattr -d com.apple.quarantine unlucky-launcher   # unsigned build, Gatekeeper quarantine
chmod +x unlucky-launcher && ./unlucky-launcher

No GPU? Software renderer

The UI prefers OpenGL (femtovg) and falls back to Slint's CPU renderer when no usable GL driver is present. Force it on any machine with:

unlucky-launcher --software-renderer          # or: SLINT_BACKEND=winit-software unlucky-launcher

Verify the download

# Linux / macOS
sha256sum -c SHA256SUMS.txt --ignore-missing
# Windows (PowerShell)
Get-FileHash .\unlucky-launcher-{{VERSION}}-windows-x64.exe -Algorithm SHA256

Checksums

{{SUMS}}

Known limitations of this build

  • Microsoft (MSA) account login depends on a Mojang app-id whitelist that is still pending; until it is granted, use offline accounts or authlib-injector (the 403 is reported with a readable diagnostic instead of a silent failure).
  • Binaries are not code-signed / notarized yet: Windows SmartScreen and macOS Gatekeeper warn on first launch. Checksums above are the integrity reference for now.
  • macOS ships the bare binary (single-file promise), not a .app bundle: no Dock icon or Finder double-click — launch it from a terminal.

License

Apache-2.0. Third-party notices (including Slint's Royalty-Free 2.0 track) are in NOTICE. Unlucky Launcher is not affiliated with Mojang or Microsoft; it does not ship game files.

Made with Slint — Slint Royalty-Free 2.0 track, unmodified.