Merge branch 'feat/m129-relnotes-rewrite-release-notes-to-c'

This commit is contained in:
AskaEth committed 2026-11-05 18:01:29 +08:00
commit 5b217ae32d
1 file changed
+54 -69
+54 -69
View File
@@ -1,124 +1,109 @@
# Unlucky Launcher {{VERSION}} # Unlucky Launcher {{VERSION}}
Rust-native **single-file** Minecraft launcher: iced 0.14 + Material 3 Expressive UI, built-in AI agent 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. (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. No WebView, no bundled runtime, no JRE download needed to start the launcher itself.
## Downloads ## Downloads
Asset names are `<name>_<version>_<platform>_<arch>`, underscore separated — the rule
`packaging/make_artifacts.py::asset_stem()` applies:
| Platform | Asset | Notes | | Platform | Asset | Notes |
| --- | --- | --- | | --- | --- | --- |
| Windows 10/11 x64 | `unlucky-launcher-{{VERSION}}-windows-x64.exe` | single exe, double-click to run | | 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 | | 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 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+ | | 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+ 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 | | 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 Each archive unpacks to one top-level directory of the same name holding the binary plus `LICENSE`,
this release next to the `.exe` (a lone exe cannot carry them), so the license terms travel `NOTICE` and `README.md`; the Windows assets are bare `.exe` files, so those three documents are attached
with the download on every platform. to this release next to them — the license terms travel with every download.
Every slot also ships the command line as its own small asset — `ull-{{VERSION}}-<slot>` Every slot also ships the command line as its own small bare asset,
(`.exe` on Windows): `ull_{{VERSION}}_<platform>_<arch>` (`.exe` on Windows):
```bash ```bash
chmod +x ull-{{VERSION}}-linux-x64 # Release 资产不带可执行位,先补上 chmod +x ull_{{VERSION}}_linux_x64 # release assets carry no executable bit
./ull-{{VERSION}}-linux-x64 instances list # servers / CI / Termux: no graphics stack needed ./ull_{{VERSION}}_linux_x64 instances list # servers and CI: 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`, `ull` runs `instances`, `install`, `pack import`, `launch`, `accounts`, `sessions`, `logs`, `diag`,
`java` and `agent`, and links no graphics library at all. The GUI binary accepts the same set `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`. before it ever opens a window, so a desktop machine does not need `ull`.
## Support matrix ## Support matrix
| Platform | Level | Runtime requirements | | Platform | Level | Runtime requirements |
| --- | --- | --- | | --- | --- | --- |
| Windows 10/11 x64 | first class | nothing beyond the OS (UCRT is part of Win10+) | | 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 | | 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 Gatekeeper note | | 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, 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 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, X11 | first class | glibc 2.35+ (same floor as x64), `libxkbcommon`, `fontconfig`, `libGL`, `libxcb` |
| Linux arm64, Wayland | supported | the above plus `wayland-client` | | Linux arm64, Wayland | supported | the above plus `wayland-client` |
| Windows 8.1/8/7 | unsupported | baseline was raised to Win10 (decision D21) | | Windows 8.1/8/7 | unsupported | the baseline is Windows 10 |
| Android — Termux + X11 | experimental, not promised | CLI only (the `ull` asset, or build from source), GUI unverified; not part of this release matrix | | 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** (the assets ship in this release and in Both arm64 rows are **formally released slots** (assets ship here and in `SHA256SUMS.txt`), not the
`SHA256SUMS.txt`), not the experimental Termux path: Linux arm64 is built and smoke-tested on a experimental Termux path: Linux arm64 is built and smoke-tested on a native ARM64 runner, Windows ARM64 is
native ARM64 runner, Windows ARM64 is cross-built with the same static-CRT gate as x64. cross-built with the same static-CRT gate as x64.
## Install ## Install
**Windows** — put the `.exe` anywhere and run it (pick `-windows-arm64.exe` on ARM64 Windows, **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 `_windows_x64.exe` everywhere else). The first run creates `.ULL/` and `.minecraft/` next to the exe
`portable.marker` file is present, otherwise under `%APPDATA%`. (portable is the default data mode); the per-user `%APPDATA%\ULL` plus `%APPDATA%\.minecraft`, or a custom
root, are selectable instead.
**Linux** **Linux / macOS**
```bash ```bash
tar -xzf unlucky-launcher-{{VERSION}}-linux-x64.tar.gz # use linux-arm64 on aarch64 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 cd unlucky-launcher_{{VERSION}}_linux_x64 # ditto
chmod +x unlucky-launcher && ./unlucky-launcher xattr -d com.apple.quarantine unlucky-launcher # macOS only: unsigned build, Gatekeeper
```
**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 chmod +x unlucky-launcher && ./unlucky-launcher
``` ```
## No GPU? Software renderer ## No GPU? Software renderer
The UI renders through `wgpu` (GPU) and falls back to the `tiny-skia` CPU rasteriser when no usable 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: adapter is present; `--software-renderer` (or its equivalent `--renderer=cpu`) forces that path.
```bash
unlucky-launcher --software-renderer # the documented switch
unlucky-launcher --renderer=cpu # equivalent: pick the CPU renderer explicitly
```
## Verify the download ## Verify the download
```bash ```bash
# Linux / macOS sha256sum -c SHA256SUMS.txt --ignore-missing # Linux
sha256sum -c SHA256SUMS.txt --ignore-missing shasum -a 256 -c SHA256SUMS.txt # macOS (sha256sum is not bundled)
# Windows (PowerShell) Get-FileHash .\unlucky-launcher_{{VERSION}}_windows_x64.exe -Algorithm SHA256 # Windows PowerShell
Get-FileHash .\unlucky-launcher-{{VERSION}}-windows-x64.exe -Algorithm SHA256
``` ```
## Checksums
``` ```
{{SUMS}} {{SUMS}}
``` ```
## Known limitations of this build ## Known limitations of this build
- Microsoft (MSA) account login depends on a Mojang app-id whitelist that is still pending; - Microsoft (MSA) sign-in needs an Azure public client id, and release binaries do not carry one: set
until it is granted, use offline accounts or authlib-injector (the 403 is reported with a `ULL_MSA_CLIENT_ID=<id>` before launching, or build with that variable set. Without it sign-in stops
readable diagnostic instead of a silent failure). before any network call; in the GUI that shows up as the generic "Sign-in failed" banner with
- Binaries are not code-signed / notarized yet: Windows SmartScreen and macOS Gatekeeper warn `Code: other` (the full reason goes to the launcher log), and `ull accounts add msa` prints the exact
on first launch. Checksums above are the integrity reference for now. fix. Offline profiles and authlib-injector servers need no id.
- macOS ships the bare binary (single-file promise), not a `.app` bundle: no Dock icon or - Binaries are not code-signed / notarized yet: Windows SmartScreen and macOS Gatekeeper warn on first
Finder double-click — launch it from a terminal. launch. The 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 ## License
Apache-2.0. Third-party notices are in `NOTICE`. Unlucky Launcher is not affiliated with Mojang or Apache-2.0, third-party notices in `NOTICE`. Not affiliated with Mojang or Microsoft; no game files ship.
Microsoft; it does not ship game files.
## UI framework in this build ## 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 Every asset here is built from the iced UI (`crates/app-iced`, iced 0.14, MIT); no Slint code is linked
code is linked into it. The earlier Slint UI (`crates/app`) stays in the repository as historical into it. The earlier Slint UI (`crates/app`) stays in the repository as historical source only —
source only: excluded from the cargo workspace, not built, not part of any asset here and not part of excluded from the workspace, not built, in no asset and in no release slot. The Slint Royalty-Free 2.0
the release matrix. It did ship in the previous `v0.1.0` release; that release's Slint Royalty-Free attribution it carried belongs to the `v0.1.0` release and remains where it was published.
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.