Files
Unlucky-Launcher/packaging/release-notes.md
T
AskaEth 54b81cbb7f chore(release): M137 版本升到 0.2.1,发布只发两个 Windows 槽位
版本:`[workspace.package] version` 0.2.0 → 0.2.1,并把全部 intra-workspace path
依赖的 version 约束一并对齐(`"0.2"` → `"0.2.1"`,M121 的教训)。Cargo.lock 里只有
8 个 unlucky-* 成员条目变化。`crates/app` 是 workspace `exclude` 的 Slint 退役树(manifest
连解析都过不了),不参与解析,故原样保留。

release.yml:新增 `PUBLISH_SLOTS` 白名单(唯一开关)= `windows-x64 windows-arm64`。
六槽位一律构建取证,release job 先按白名单裁掉 Linux/macOS 四档产物再重算 SHA256SUMS,
所以 tag 触发的 Release 只有 4 个资产 + SHA256SUMS.txt。release job 改成
`always() && !cancelled()`:未验证槽位构建失败不连坐 Windows 发布,真正的门禁是白名单
齐全性检查。将来某槽位真机验过后把它加进那一行即打开。

顺手修掉一处从未生效的门禁:齐全性检查的 glob 用的是连字符形态
(`dist/$prefix-*-$slot*`),对 D49 之后的下划线资产名永远匹配不上,改成
`dist/${prefix}_*_${stem}*`。资产命名规则 / SHA256SUMS / 合规文本并列资产 /
`--version` 与 tag 交叉校验一律未动。

packaging/release-notes.md:清掉 v0.1.0 / Slint 时代的说明,Downloads 与 Support matrix
只描述本版实际发布的 Windows 两个槽位(其余标「built by CI, not published」)。
packaging/README.md §1/§3/§9 同步 gate(矩阵加「本版发布」列、§3 写清白名单与打开办法)。
起手顺带把示例 tag 从 v0.2.0 更到 v0.2.1,并把「winit / femtovg」更正为「winit / wgpu」。
2026-11-05 21:30:13 +08:00

6.4 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

This release ships Windows only. The Linux (x64 / arm64) and macOS (Apple Silicon / Intel) slots are built by CI but are not assets of this release: they have not been verified on real machines yet, so nothing unverified is handed out. They stay out of the download list and out of SHA256SUMS.txt until that verification happens — the support matrix below marks them accordingly.

The Windows assets are bare .exe files, so LICENSE, NOTICE and README.md are attached to this release next to them: the license terms travel with every download. Slots that ship an archive (Linux / macOS, once published) unpack to one top-level directory of the same name holding the binary plus those three documents.

Command line

Each published slot also ships the command line as its own small bare asset, ull_{{VERSION}}_<platform>_<arch> (.exe on Windows):

.\ull_{{VERSION}}_windows_x64.exe 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

Published = shipped as a download of this release, listed in SHA256SUMS.txt.

Platform Status in this release Level Runtime requirements
Windows 10/11 x64 published first class nothing beyond the OS (UCRT is part of Win10+)
Windows 11 ARM64 published 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+ Apple Silicon built by CI, not published first class (unverified) nothing; unsigned build, needs the Gatekeeper workaround
macOS 12+ Intel built by CI, not published first class (unverified) same as above
Linux x64, X11 built by CI, not published first class (unverified) libxkbcommon, fontconfig, libGL (or software renderer), libxcb
Linux x64, Wayland built by CI, not published supported (unverified) wayland-client, libxkbcommon, plus the X11 set for XWayland apps
Linux arm64, X11 built by CI, not published first class (unverified) glibc 2.35+, libxkbcommon, fontconfig, libGL, libxcb
Linux arm64, Wayland built by CI, not published supported (unverified) the above plus wayland-client
Windows 8.1/8/7 not built unsupported the baseline is Windows 10
Android — Termux + X11 not built (no CI slot) experimental, not promised CLI only and only when built from source; GUI unverified

Both arm64 rows are formal matrix slots, not the experimental Termux path: Windows ARM64 ships here and is cross-built with the same static-CRT gate as x64; Linux arm64 builds on a native ARM64 runner and joins this list once someone has run it on real hardware. The rows above and the matrix table in packaging/README.md §9 are the same list — change one, change the other.

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 are not part of this release; their asset names are already fixed by the same rule (unlucky-launcher_{{VERSION}}_linux_x64.tar.gz, _linux_arm64, _macos_arm64, _macos_x64) so the links will not change shape when those slots open.

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

SHA256SUMS.txt lists exactly the assets attached to this release (Windows only), and sha256sum -c checks the ones you actually downloaded:

sha256sum -c SHA256SUMS.txt --ignore-missing   # Linux / WSL
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, and the GUI banner says so plainly: the title "Microsoft sign-in is not configured", a body naming ULL_MSA_CLIENT_ID=<id> (set it, or build with it, then restart the launcher — a running process does not pick up a new variable) and Code: msa_not_configured, with no Retry button. Every other sign-in failure keeps the generic banner plus its own Code: line, with the full reason only in the launcher log. ull accounts add msa prints the same fix on the command line. 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.
  • When the macOS slot ships it is 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 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 other UI framework is linked into it.