复审 r2 的 2 条 P1 + 3 条 p2 小账,全部只动文档(5 份,0 个 .rs)。
P1-1(`SLINT_BACKEND` → `ICED_BACKEND` 换了个名字的死开关):
`packaging/release-notes.md` 的「No GPU」小节原来把 `ICED_BACKEND=tiny-skia` 当作
`--software-renderer` 的等价替代命令给用户。实测该值会被本进程无条件覆盖:
- `ICED_BACKEND=tiny-skia ./unlucky-launcher-iced.exe --screenshot …`
→ `[probe] … request=auto -> ICED_BACKEND=wgpu` / `[shot] … renderer=wgpu` / `[backend] final=wgpu`
- `--software-renderer --screenshot …` → `request=cpu -> ICED_BACKEND=tiny-skia` / `renderer=tiny-skia`
- `--renderer=cpu --screenshot …` → `request=cpu -> ICED_BACKEND=tiny-skia` / `renderer=tiny-skia`
所以改成两条都实测可用的形态(`--software-renderer` / `--renderer=cpu`),不再把环境变量当用户开关。
P1-2(RF-2.0 履行方式的措辞与上游 §2 冲突):
`NOTICE` 第 1 条原写「由 v0.1.0 的 NOTICE、发布页说明与本文件的历史记录共同承担」——§2 只承认
(a) AboutSlint 部件 / (b) 公开下载页的官方徽章两种履行,NOTICE 文本不是履行。改为:义务仍挂在
v0.1.0 已发布资产上(条件挂在每次分发,不挂版本号);§2 只承认两种形式;**按本仓库记录,该项义务
在 v0.1.0 上尚未以任一形式落地**(部件一直只有排期,发布页那行是文字链接不是徽章图);NOTICE /
发布页说明 / 本节都只是记录。
p2 小账:
- `NOTICE` 第 3 条的依赖许可:`tiny-skia` 从「Apache-2.0 / MIT」改正为 BSD-3-Clause,并把
winit(Apache-2.0)/ wgpu(MIT OR Apache-2.0)分别写明;README(中英)同款写法一并对齐。
- `packaging/README.md` §4:`libGL/libEGL` 行改成「Slint 版 femtovg / iced 版 wgpu(推断,未实测)」,
并把限定语改成「除标注『推断,未实测』的那一行外,整表是 Slint 版实测」,消除表内与限定语打架。
- `README.md` / `README.zh-CN.md` 的 Slint 义务段补 `v0.1.0` 限定并按 §2 口径重写,避免读者以为
「Made with Slint」说的是下一版。
证据:`git diff --name-only` = NOTICE, README.md, README.zh-CN.md, packaging/README.md,
packaging/release-notes.md;`packaging/README.md` 仍 399 行(守卫上限 400);release body 模板用
`{{VERSION}}=0.2.0` 渲染通过(5956 字符,全篇 Slint 命中 4 行,均在「本版不含 Slint」的解释段)。
125 lines
5.9 KiB
Markdown
125 lines
5.9 KiB
Markdown
# Unlucky Launcher {{VERSION}}
|
|
|
|
Rust-native **single-file** Minecraft launcher: iced 0.14 + Material 3 Expressive 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):
|
|
|
|
```bash
|
|
chmod +x ull-{{VERSION}}-linux-x64 # Release 资产不带可执行位,先补上
|
|
./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**
|
|
|
|
```bash
|
|
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**
|
|
|
|
```bash
|
|
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 renders through `wgpu` (GPU) and falls back to the `tiny-skia` CPU rasteriser when no usable
|
|
adapter is present. Force the CPU path on any machine with:
|
|
|
|
```bash
|
|
unlucky-launcher --software-renderer # the documented switch
|
|
unlucky-launcher --renderer=cpu # equivalent: pick the CPU renderer explicitly
|
|
```
|
|
|
|
## Verify the download
|
|
|
|
```bash
|
|
# 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 are in `NOTICE`. Unlucky Launcher is not affiliated with Mojang or
|
|
Microsoft; it does not ship game files.
|
|
|
|
## UI framework in this build
|
|
|
|
Every asset in this release 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 cargo workspace, not built, not part of any asset here and not part of
|
|
the release matrix. It did ship in the previous `v0.1.0` release; that release's Slint Royalty-Free
|
|
2.0 attribution remains where it was published, and no asset in this build carries that obligation.
|
|
There is deliberately no "Made with Slint" badge on this page: the obligation follows a Slint-linked
|
|
binary, and this release has none.
|