From 7704a7542427fa15e9ed836602de645530c96ec5 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Tue, 3 Nov 2026 23:57:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(docs):=20M118=20r1=20=E2=80=94=E2=80=94=20r?= =?UTF-8?q?elease=20notes=20/=20NOTICE=20=E5=81=9C=E6=AD=A2=E8=87=AA?= =?UTF-8?q?=E7=A7=B0=20Slint=20=E7=89=88=EF=BC=8Cpackaging=20README=20?= =?UTF-8?q?=E8=A1=A5=E4=B8=A4=E5=A4=84=E6=97=A7=E5=8F=A3=E5=BE=84=E9=99=90?= =?UTF-8?q?=E5=AE=9A=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 复审 r1 的两条 P2,都只动文档(`packaging/release-notes.md`、`NOTICE`、`packaging/README.md`)。 P2-1(发版阻断项):`packaging/release-notes.md` 是 Release body 模板,`NOTICE` 装在每个 tar.gz 里, 两者都仍自称 Slint 版: - release notes:首段 `Slint + Metro UI` → `iced 0.14 + Material 3 Expressive UI`;「No GPU」小节从 femtovg / `SLINT_BACKEND=winit-software` 改成 wgpu + tiny-skia / `ICED_BACKEND=tiny-skia`; 删掉页面的 `Made with Slint` 徽章声明,换成「本版所有资产都由 iced 构建、不含 Slint 代码; Slint 版源码仅作历史参考、不构建不发布;RF-2.0 徽章义务跟着链接 Slint 的二进制走,本版没有」。 - NOTICE:第 1 条标题改「Slint —— 历史源码,不随任何产物分发」,正文明确「当前 GUI 框架是 iced、 二进制不含 Slint 代码;crates/app 已被 workspace exclude,不参与构建/测试/发布」;RF-2.0 义务改成 「对当前产物不适用,仍挂在 v0.1.0 那批已发布资产上」。**没有整条删除**:仓库里确实还有基于 Slint 写的历史源码,且将来若重新链接 Slint 义务要恢复,留记录比删掉更安全——依据写进报告。 另在第 3 条补一句「当前 GUI 框架:iced 0.14(MIT)+ winit / wgpu / tiny-skia」。 P2-2:`packaging/README.md`(净零行,仍 399 ≤400) - §4 的 `libGL/libEGL` 说明从 femtovg 改成 wgpu 的 GL/EGL 后端 + tiny-skia 软渲染,并加一段 「M118 口径」:那张表与 DT_NEEDED 结论是 Slint 版实测,iced 版**尚未重测**,按「同一族库、细节待验」读。 - §11 的本地复跑命令补限定语:`linux-smoke-docker.sh` 仍编/跑 Slint 版 bin,现在会失败;在它换成 `unlucky-launcher-iced` 之前,本地照 ci.yml 的 runtime-smoke 三步手跑。段落未删。 证据:`git diff --name-only` 仅这三份;release-notes 的 `{{VERSION}}`(15) / `{{SUMS}}`(1) 占位符仍在, 模板渲染走查通过;`packaging/README.md` 399 行(守卫上限 400)。另按复审要求二次单跑 `cargo test -p unlucky-core --test launch pipeline_records_crash_report_artifact` → ok(0.16s)。 --- NOTICE | 19 ++++++++++++------- packaging/README.md | 13 ++++++------- packaging/release-notes.md | 22 +++++++++++++++------- 3 files changed, 33 insertions(+), 21 deletions(-) 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.