复审 r1 把链路走了一遍:core 缺 id 早退(零网络)成立,但 presenter 的 fail() 只把原文 eprintln 进日志,事件只带原因码 Other;账户页据此画通用横幅「Sign-in failed」+「Code: other」, 完整原因在日志里。LaunchMsaNotConfigured 那条 i18n 目前只有定义/单测/golden,GUI 零调用点。 所以上一版「the app says "not configured" (with the command to fix it)」是把设计意图写成了现有行为。 改成分段如实描述:无 id 时在联网之前就停;GUI 显示通用横幅 + Code: other(原因在日志); `ull accounts add msa` 会打出可照抄的修复命令(map_auth_error 的 hint,含变量名与 cargo build)。 另按 r1 P2-1 给 macOS 补 shasum 校验行(sha256sum 不是 macOS 自带)。
5.8 KiB
Unlucky Launcher {{VERSION}}
Rust-native single-file Minecraft launcher: iced 0.14 + Material 3 Expressive UI, built-in AI agent (chat / setting 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
Asset names are <name>_<version>_<platform>_<arch>, underscore separated — the rule
packaging/make_artifacts.py::asset_stem() applies:
| 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 |
Each archive unpacks to one top-level directory of the same name holding the binary plus LICENSE,
NOTICE and README.md; the Windows assets are bare .exe files, so those three documents are attached
to this release next to them — the license terms travel with every download.
Every slot also ships the command line as its own small bare asset,
ull_{{VERSION}}_<platform>_<arch> (.exe on Windows):
chmod +x ull_{{VERSION}}_linux_x64 # release assets carry no executable bit
./ull_{{VERSION}}_linux_x64 instances list # servers and CI: no graphics stack needed
ull runs instances, install, pack import, 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 a desktop machine does 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; the 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 the 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+ (same floor as x64), libxkbcommon, fontconfig, libGL, libxcb |
| Linux arm64, Wayland | supported | the above plus wayland-client |
| Windows 8.1/8/7 | unsupported | the baseline is Windows 10 |
| Android — Termux + X11 | experimental, not promised | CLI only and only when built from source; GUI unverified; not part of this release matrix |
Both arm64 rows are formally released slots (assets ship here 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). The first run creates .ULL/ and .minecraft/ next to the exe
(portable is the default data mode); the per-user %APPDATA%\ULL plus %APPDATA%\.minecraft, or a custom
root, are selectable instead.
Linux / macOS
tar -xzf unlucky-launcher_{{VERSION}}_linux_x64.tar.gz # _linux_arm64 on aarch64; _macos_arm64 / _macos_x64 on macOS
cd unlucky-launcher_{{VERSION}}_linux_x64 # ditto
xattr -d com.apple.quarantine unlucky-launcher # macOS only: unsigned build, Gatekeeper
chmod +x unlucky-launcher && ./unlucky-launcher
No GPU? Software renderer
The UI renders through wgpu (GPU) and falls back to the tiny-skia CPU rasteriser when no usable
adapter is present; --software-renderer (or its equivalent --renderer=cpu) forces that path.
Verify the download
sha256sum -c SHA256SUMS.txt --ignore-missing # Linux
shasum -a 256 -c SHA256SUMS.txt # macOS (sha256sum is not bundled)
Get-FileHash .\unlucky-launcher_{{VERSION}}_windows_x64.exe -Algorithm SHA256 # Windows PowerShell
{{SUMS}}
Known limitations of this build
- Microsoft (MSA) sign-in needs an Azure public client id, and release binaries do not carry one: set
ULL_MSA_CLIENT_ID=<id>before launching, or build with that variable set. Without it sign-in stops before any network call; in the GUI that shows up as the generic "Sign-in failed" banner withCode: other(the full reason goes to the launcher log), andull accounts add msaprints the exact fix. Offline profiles and authlib-injector servers need no id. - Binaries are not code-signed / notarized yet: Windows SmartScreen and macOS Gatekeeper warn on first launch. The checksums above are the integrity reference for now.
- macOS ships the bare binary (single-file promise), not a
.appbundle: no Dock icon or Finder double-click — launch it from a terminal.
License
Apache-2.0, third-party notices in NOTICE. Not affiliated with Mojang or Microsoft; no game files ship.
UI framework in this build
Every asset here is built from the iced UI (crates/app-iced, iced 0.14, MIT); no Slint code is linked
into it. The earlier Slint UI (crates/app) stays in the repository as historical source only —
excluded from the workspace, not built, in no asset and in no release slot. The Slint Royalty-Free 2.0
attribution it carried belongs to the v0.1.0 release and remains where it was published.