diff --git a/NOTICE b/NOTICE index 6ec0d4b..bbaa2c1 100644 --- a/NOTICE +++ b/NOTICE @@ -7,16 +7,20 @@ Copyright 2026 AskaEth (YeiJ) 第三方组件声明 -------------------------------------------------------------------------- -1. Slint(https://slint.dev) +1. Slint(https://slint.dev)——**历史源码,不随任何产物分发** - 本产品的 GUI 层使用 Slint。Slint 以 Royalty-Free 2.0 许可(LicenseRef-Slint-Royalty-free-2.0) - 使用,未修改 Slint 本体源码。 + 本产品**当前发布的 GUI 框架是 iced**(见第 3 节),二进制里不含任何 Slint 代码。 + 仓库里仍保留 Slint 版 GUI 的源码(`crates/app`),仅作历史参考:它已被 cargo workspace + `exclude`,不参与构建、测试与发布,也不会进入本项目的任何 Release 资产。 - Slint Royalty-Free 2.0 的唯一义务:应用「关于」页显示官方 AboutSlint 部件, - 或在公开下载页放置「Made with Slint」徽章。本项目的落地位置见 crates/app 的关于页(P2 排期) - 与 GitHub Release 说明页;在此之前由本文件的声明承担告知义务。 + 因此 Slint Royalty-Free 2.0(LicenseRef-Slint-Royalty-free-2.0)**对当前产物不适用**;它适用的是 + 此前已发布、且确实链接了 Slint 的 `v0.1.0` 构建。那条义务(关于页放 AboutSlint 部件,或公开下载页放 + 「Made with Slint」徽章)**仍然挂在 v0.1.0 那批已发布资产上**,由 v0.1.0 的 NOTICE、发布页说明与本 + 文件的历史记录共同承担;本文件保留这一节,是为了不让这条记录丢失,而不是声明本产品依赖 Slint。 - Slint 的其余许可分支(GPL-3.0-only / Slint Software License 3.0)本项目不适用。 + 若将来重新把 `crates/app` 纳入构建并发布链接 Slint 的二进制,该义务随之恢复——届时需同时恢复 + AboutSlint 部件/徽章与本节的现行声明。Slint 的其余许可分支(GPL-3.0-only / Slint Software + License 3.0)本项目始终不适用。 2. Google Material Color Utilities(https://github.com/material-foundation/material-color-utilities) @@ -45,6 +49,7 @@ Copyright 2026 AskaEth (YeiJ) 3. Rust crates 生态 + 当前 GUI 框架:iced 0.14(MIT),连同 winit、wgpu、tiny-skia(Apache-2.0 / MIT)——它们都在下面的白名单内。 cargo-deny 白名单见 deny.toml:Apache-2.0 / MIT / BSD-2-Clause / BSD-3-Clause / Zlib / BSL-1.0 / ISC / CC0-1.0 / MIT-0 / Unlicense / Unicode-3.0 / CDLA-Permissive-2.0 / Apache-2.0 WITH LLVM-exception。 GPL 系(含 AGPL、LGPL 静态链接、SSPL)依赖不得进入主干。 diff --git a/packaging/README.md b/packaging/README.md index 9445cb5..d45c5d2 100644 --- a/packaging/README.md +++ b/packaging/README.md @@ -147,17 +147,16 @@ Windows ARM64 原生库(Mojang/LWJGL 只发 x64/x86),实际游玩仍走系 | glibc ≥ 2.35 | 由 `ubuntu-22.04` 构建决定;更老的发行版请自行重建或等 musl 版 | | `libxkbcommon.so.0` | winit 键盘处理 | | `libfontconfig.so.1` + `libfreetype.so.6` | 文本渲染 | -| `libGL.so.1` / `libEGL.so.1` | femtovg GL 渲染;缺失走软渲染 | +| `libGL.so.1` / `libEGL.so.1` | wgpu 的 GL/EGL 后端;缺失走 tiny-skia 软渲染(历史口径写的是 femtovg) | | `libxcb.so.1` / `libX11.so.6` | X11 后端(Wayland 会话下也需 XWayland 相关库) | | `libwayland-client.so.0` | Wayland 后端 | Debian/Ubuntu 一行:`sudo apt install libxkbcommon0 fontconfig libgl1 libegl1 libxcb1 libx11-6 libwayland-client0`。 运行期**不需要** `-dev` 包、不需要 Java(Java 是启动游戏时才由启动器自己管理的东西)。 -上表是**开窗**要用的库,不是进程启动时就要的:实测(§7.4)除 `libfontconfig.so.1` 外它们**都不在** ELF -的 `DT_NEEDED` 里,由 `dlopen` 在创建窗口那一刻才加载。所以同一台没有 X11 / Wayland / GL 的机器上 -`unlucky-launcher instances list` 照样跑得起来(GUI 二进制先分发后开窗),而 `ull` 连 fontconfig 都不需要。 -arm64 侧是同一套(同一份依赖树、同一个 winit/femtovg 组合)。 +**M118(D26)口径**:上面这张表与下面这条结论是 **Slint 版 GUI** 的实测记录(M82:`readelf -d` + `ldd` + `nm -D`);iced 版(`crates/app-iced`)的 `DT_NEEDED` / `dlopen` 集合**尚未重测**,请按「同一族库、细节待验」读,别当成 iced 版的实测承诺。 +仍然成立的部分:上表是**开窗**要用的库,不是进程启动门槛——实测(§7.4,Slint 版)除 `libfontconfig.so.1` 外它们**都不在** ELF 的 `DT_NEEDED` 里,由 `dlopen` 在开窗那一刻才加载,所以没有 X11 / Wayland / GL 的机器上 `unlucky-launcher instances list` 照样跑得起来,`ull` 连 fontconfig 都不需要。 +arm64 侧同理(同一份依赖树;历史口径里的「winit + femtovg」中 femtovg 只属于 Slint 版)。 ### Linux arm64(aarch64) @@ -384,8 +383,8 @@ experimental / not part of this release matrix)——改一边必须同步另 更不证明视觉正确**——视觉靠人眼看 artifact。 - 只覆盖 Linux x64;macOS 是 dispatch-only 探针(无实测证据),Windows 已有本机人眼验收。 -**本地复跑**:`bash packaging/linux-smoke-docker.sh . D:/tmp/ull-smoke`(输出目录别写 `/tmp`,Git Bash 下会 -静默落进 Docker VM;脚本内部用 `cygpath -m` 归一并回显真实路径)。 +**本地复跑**:`bash packaging/linux-smoke-docker.sh . D:/tmp/ull-smoke`(输出目录别写 `/tmp`,Git Bash 下会静默落进 Docker VM;脚本内部用 `cygpath -m` 归一并回显真实路径)。**M118 提醒**:该脚本仍按 Slint 版 bin `unlucky-launcher` 编译与启动(`linux-smoke-docker.sh:81/83/88`),而 `crates/app` 已被 workspace `exclude`,**这条命令现在会失败**。 +在它把 bin 换成 `unlucky-launcher-iced` 之前,本地要复刻请直接照 `ci.yml` 的 runtime-smoke 三步手跑:`cargo build --bin unlucky-launcher-iced --locked` → `xvfb-run … --software-renderer --screenshot --data-dir ` → `python3 packaging/check_screenshot.py --json`。 ## 12. 文件清单 diff --git a/packaging/release-notes.md b/packaging/release-notes.md index e12d452..e5de66d 100644 --- a/packaging/release-notes.md +++ b/packaging/release-notes.md @@ -1,6 +1,6 @@ # Unlucky Launcher {{VERSION}} -Rust-native **single-file** Minecraft launcher: Slint + Metro 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. No WebView, no bundled runtime, no JRE download needed to start the launcher itself. @@ -75,11 +75,11 @@ 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: +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 # or: SLINT_BACKEND=winit-software unlucky-launcher +unlucky-launcher --software-renderer # or: ICED_BACKEND=tiny-skia unlucky-launcher ``` ## Verify the download @@ -109,7 +109,15 @@ Get-FileHash .\unlucky-launcher-{{VERSION}}-windows-x64.exe -Algorithm SHA256 ## 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. +Apache-2.0. Third-party notices are in `NOTICE`. Unlucky Launcher is not affiliated with Mojang or +Microsoft; it does not ship game files. -Made with [Slint](https://slint.dev) — Slint Royalty-Free 2.0 track, unmodified. +## 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.