fix(m163): push tag 默认建稳定版(发布标记语义 + 0.2.3 bump)

发布标记:`release.yml` 的 dispatch `prerelease` 默认值 true → false;`release-publish.yml`
的 create 路径不再塞 `--prerelease`(空串 = push tag ⇒ 稳定版),edit 路径行为不变(空串不碰
标记)。三种触发各创建什么改由 `packaging/release_marker.py` 一张表定义,流水线
`--emit-bash` 出来两个数组直接用,自己不再写 case——v0.2.2 至今 `releases/latest` 404 的根因
就是「push 默认 prerelease」这层叠上「dispatch 默认 true」。

守门:新增 `packaging/check_release_semantics.py`(CI 在 `.github/workflows/release-guard.yml`,
guards.yml 已 398 行不能再挂 job):①标记表逐条对(push tag 的 create 不含 --prerelease);
②把 `--emit-bash` 真灌进 bash 读回两个数组;③publish 的可执行内容里没有 --prerelease 字面量、
必须调用 emit-bash、两个数组各喂 create/edit;④release.yml 的 dispatch 默认值 == false(读
YAML 结构)。`--self-mutation` 注入三项真实回归(默认值改回 true / 塞回字面量 / 表里 push
改成预发布),断言每项都红、基线绿。

版本:0.2.2 → 0.2.3(workspace `[workspace.package]` + 五处 path 依赖 pin + Cargo.lock)。

文档:README 中英两版版本行改 0.2.3,并把本阶段能力补进现有章节(Modrinth 匿名在线内容源、
自更新与稳定通道、整合包导入逐文件决策、实例级启动参数),删掉「没有自动更新通道」「导入只有
两份全局策略」两条过期说法;`release-notes.md` 写 0.2.3 的真实更新摘要(保留 {{VERSION}} /
{{SUMS}});`packaging/README.md` 与 `docs/build-and-ci.md` 里「push 默认仍 prerelease」的旧口径
全部改掉。
This commit is contained in:
AskaEth committed 2026-11-07 18:56:01 +08:00
1 parent 5d5fe8aa73
commit 1d2e84ed61
18 files changed
+805 -74

No files matched your search

+28
View File
@@ -4,6 +4,26 @@ Rust-native **single-file** Minecraft launcher: iced 0.14 + Material 3 Expressiv
(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.
## What's new in {{VERSION}}
- **{{VERSION}} is the first release published as a stable release.** GitHub only points
`releases/latest` at the newest **non-prerelease** release, so `0.2.2` — kept as a historical
pre-release, untouched — never appeared there. A pushed tag now creates a stable release by default;
a pre-release has to be asked for explicitly (`workflow_dispatch` with `prerelease=true`).
- **Self-update works end to end.** `ull update check` / `ull update apply` and the settings panel's
Update group share one core (`crates/core/src/update/`): manifest, version and channel admission,
length + SHA256 verification, and an atomic rename-based swap that rolls back on failure. Only the
stable channel is published today.
- **Online content library (Modrinth, anonymous).** Search, project details and version lists come from
Modrinth's v2 API with facets derived from the target instance, and a known hash completes a remote
entry. Being offline is reported as "not connected", never as "no matching content".
- **Per-file decisions when importing a modpack.** The pre-import scan lists every conflicting file in
pages of 40, and you choose keep-all, overwrite-all, or per item; files that do not conflict are
never rewritten, and the report names every conflict afterwards.
- **Per-instance launch arguments.** JVM arguments, game arguments, memory, the Java executable and the
graphics backend (`default` / `opengl` / `vulkan`) are set per instance, each field falling back on
its own to the global setting and then the factory default. The CLI reads the same resolved values.
## Downloads
Asset names are `<name>_<version>_<platform>_<arch>`, underscore separated — the rule
@@ -44,6 +64,14 @@ Each published slot also ships the command line as its own small bare asset,
`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`.
## Updating
The launcher reads `releases/latest/download/manifest.json` on startup (switchable: `update.auto_check`)
and shows four distinct outcomes: up to date, an update is available, a newer version exists but ships no
artifact for this platform, or the check itself failed. `ull update check` prints the same verdict, and
`ull update apply` downloads, verifies SHA256 and swaps the binary atomically, rolling back if the swap
fails. Nothing installs without you asking for it.
## Support matrix
Published = shipped as a download of **this** release, listed in `SHA256SUMS.txt`.