Merge branch 'feat/docs-tone-pass-remove-defensive-wording'
This commit is contained in:
commit
6cfac9c823
2 files changed
+33
-52
No files matched your search
@@ -10,17 +10,6 @@ Unlucky Launcher (ULL) is a free, open-source Minecraft: Java Edition launcher w
|
|||||||
WebView. The launcher embeds an AI agent client (chat / configuration / crash diagnosis) and can be
|
WebView. The launcher embeds an AI agent client (chat / configuration / crash diagnosis) and can be
|
||||||
attached to other agent tooling as an MCP server.
|
attached to other agent tooling as an MCP server.
|
||||||
|
|
||||||
## Compliance statement
|
|
||||||
|
|
||||||
- **Sign-in with your Microsoft account.** Authentication goes through Microsoft OAuth 2.0
|
|
||||||
device code flow → Xbox Live → XSTS → `api.minecraftservices.com`, using the player's own
|
|
||||||
Microsoft account and their own game entitlement.
|
|
||||||
- **Credentials stay on your machine.** Account tokens are stored locally only, are never sent to
|
|
||||||
any server operated by this project, and the AI features cannot read them.
|
|
||||||
- **Online play requires a Microsoft account and a valid game entitlement.**
|
|
||||||
- ULL does not distribute, mirror, proxy or modify any Minecraft game files.
|
|
||||||
- Not affiliated with Mojang or Microsoft.
|
|
||||||
|
|
||||||
## Highlights
|
## Highlights
|
||||||
|
|
||||||
- **Single-file native binary**: the launcher itself needs no JVM, no WebView and no sidecar
|
- **Single-file native binary**: the launcher itself needs no JVM, no WebView and no sidecar
|
||||||
@@ -28,13 +17,15 @@ attached to other agent tooling as an MCP server.
|
|||||||
dependency.
|
dependency.
|
||||||
- **Two UI stacks during the rewrite**: the released UI is Slint (Royalty-Free 2.0); the
|
- **Two UI stacks during the rewrite**: the released UI is Slint (Royalty-Free 2.0); the
|
||||||
next-generation UI is iced 0.14 + Material 3 Expressive and is still being written (see Status).
|
next-generation UI is iced 0.14 + Material 3 Expressive and is still being written (see Status).
|
||||||
- **CPU software-rendering fallback**: `--software-renderer` gives the full UI on machines with no
|
- **CPU software-rendering fallback**: `--software-renderer` keeps the interface rendering
|
||||||
usable GPU or with broken drivers.
|
normally on machines with no usable GPU or with broken drivers.
|
||||||
- **AI agent + MCP**: chat, setting edits and crash diagnosis inside the launcher; `ull agent
|
- **AI agent + MCP**: chat, setting edits and crash diagnosis inside the launcher; `ull agent
|
||||||
serve` exposes the same core as an MCP server (stdio or Streamable HTTP) to external agent tools.
|
serve` exposes the same core as an MCP server (stdio or Streamable HTTP) to external agent tools.
|
||||||
- **Mod loaders**: Fabric, Quilt, NeoForge, Forge, with modpack and CurseForge / Modrinth clients in
|
- **Mod loaders**: Fabric, Quilt, NeoForge, Forge, with modpack and CurseForge / Modrinth clients in
|
||||||
the core.
|
the core.
|
||||||
- **Java management**: a Temurin → Oracle → Microsoft → Zulu fallback chain, region-aware.
|
- **Java management**: a Temurin → Oracle → Microsoft → Zulu fallback chain, region-aware.
|
||||||
|
- **Accounts**: sign in with a Microsoft account over OAuth 2.0 device code flow → Xbox Live →
|
||||||
|
XSTS → `api.minecraftservices.com`; account tokens are kept on this machine only.
|
||||||
- **Engine**: multi-source download (health scoring, mirrors, chunked transfers, hash while
|
- **Engine**: multi-source download (health scoring, mirrors, chunked transfers, hash while
|
||||||
downloading) and a YAML rule-based crash diagnosis engine.
|
downloading) and a YAML rule-based crash diagnosis engine.
|
||||||
- **License**: Apache-2.0 © AskaEth (YeiJ).
|
- **License**: Apache-2.0 © AskaEth (YeiJ).
|
||||||
@@ -51,9 +42,9 @@ Two tracks. They are not the same product yet, so read the headings before downl
|
|||||||
those texts sit next to the `.exe` because a bare exe cannot hold them, while the unix archives
|
those texts sit next to the `.exe` because a bare exe cannot hold them, while the unix archives
|
||||||
already contain them.
|
already contain them.
|
||||||
- **UI**: Slint + Metro. This is the shipped GUI — the instance, download, account, Java, log and
|
- **UI**: Slint + Metro. This is the shipped GUI — the instance, download, account, Java, log and
|
||||||
settings pages drive the real engine (the in-app AI chat panel is a scripted placeholder).
|
settings pages all run on the core engine (the in-app AI chat panel is a scripted placeholder).
|
||||||
- **CLI `ull`** is built from the same tree at the same version and is fully usable — but the
|
- **CLI `ull`** is built from the same tree at the same version — but the `v0.1.0` assets ship
|
||||||
`v0.1.0` assets ship only the GUI binary. If you want the CLI, build it yourself:
|
only the GUI binary. If you want the CLI, build it yourself:
|
||||||
`cargo build --release --bin ull`. Commands: `instances`, `install`, `launch`, `accounts`,
|
`cargo build --release --bin ull`. Commands: `instances`, `install`, `launch`, `accounts`,
|
||||||
`sessions`, `logs`, `diag`, `config`, `java`, `agent`.
|
`sessions`, `logs`, `diag`, `config`, `java`, `agent`.
|
||||||
- Windows ARM64 and Linux ARM64 slots are wired into the release pipeline; the next tagged release
|
- Windows ARM64 and Linux ARM64 slots are wired into the release pipeline; the next tagged release
|
||||||
@@ -61,8 +52,7 @@ Two tracks. They are not the same product yet, so read the headings before downl
|
|||||||
|
|
||||||
### Track B — in progress on `dev`: next-generation UI (iced + Material 3 Expressive)
|
### Track B — in progress on `dev`: next-generation UI (iced + Material 3 Expressive)
|
||||||
|
|
||||||
**Nothing on this track is released, and no download contains it.** You can only see it by
|
**This track is not released yet — you can see it only by building from source.**
|
||||||
building from source.
|
|
||||||
|
|
||||||
- **Locked direction**: the look is Material 3 Expressive and the framework is iced 0.14; the UI
|
- **Locked direction**: the look is Material 3 Expressive and the framework is iced 0.14; the UI
|
||||||
layer is written from scratch. Neither the style nor the framework will change again.
|
layer is written from scratch. Neither the style nor the framework will change again.
|
||||||
@@ -83,7 +73,7 @@ Binaries in the workspace, so you can tell them apart:
|
|||||||
|--------|-------|-------|
|
|--------|-------|-------|
|
||||||
| `unlucky-launcher` | `crates/app` (Slint) | released in v0.1.0; still the usable GUI |
|
| `unlucky-launcher` | `crates/app` (Slint) | released in v0.1.0; still the usable GUI |
|
||||||
| `unlucky-launcher-iced` | `crates/app-iced` (iced 0.14) | under construction; skeleton only, not shipped |
|
| `unlucky-launcher-iced` | `crates/app-iced` (iced 0.14) | under construction; skeleton only, not shipped |
|
||||||
| `ull` | `crates/cli` | built from the same tree at the same version; not shipped in the v0.1.0 assets |
|
| `ull` | `crates/cli` | built from the same tree at the same version; not in the v0.1.0 assets |
|
||||||
|
|
||||||
## Module map
|
## Module map
|
||||||
|
|
||||||
@@ -167,17 +157,15 @@ a real runner.
|
|||||||
|
|
||||||
Minimum baseline: **Windows 10**; Windows 8.1 / 8 / 7 are not supported.
|
Minimum baseline: **Windows 10**; Windows 8.1 / 8 / 7 are not supported.
|
||||||
|
|
||||||
- Windows 10/11 builds use the **standard toolchain** (MSVC / GNU) — no custom target specs, no
|
- Windows 10/11 builds use the **standard toolchain** (MSVC / GNU), built the same way as
|
||||||
`-Zbuild-std`, no import-table allowlists
|
upstream cargo
|
||||||
- macOS 12+ (Apple Silicon and Intel) and Linux x64 / arm64 are supported build slots; on Linux,
|
- macOS 12+ (Apple Silicon and Intel) and Linux x64 / arm64 are supported build slots; on Linux,
|
||||||
X11 is the preferred path today and Wayland is the long-term direction. macOS builds are unsigned,
|
X11 is the preferred path today and Wayland is the long-term direction. macOS builds are unsigned,
|
||||||
so the first launch needs the Gatekeeper quarantine attribute cleared
|
so the first launch needs the Gatekeeper quarantine attribute cleared
|
||||||
(`xattr -d com.apple.quarantine`)
|
(`xattr -d com.apple.quarantine`)
|
||||||
- Android Termux is experimental and not promised: CLI only, GUI unverified
|
- Android Termux is experimental and not promised: CLI only, GUI unverified
|
||||||
- Platform independence is expressed through **separate test matrices**, not separate artifact
|
- Each platform runs its own test matrix; capability differences use feature gates with runtime
|
||||||
pipelines; capability differences use feature gates with runtime probing
|
probing.
|
||||||
- **Renderer fallback on both UI stacks**: the Slint build drops to software rendering, the iced
|
|
||||||
build drops from wgpu to tiny-skia, so a machine without a usable GPU still gets the full UI
|
|
||||||
|
|
||||||
## License and acknowledgements
|
## License and acknowledgements
|
||||||
|
|
||||||
@@ -197,8 +185,8 @@ Minimum baseline: **Windows 10**; Windows 8.1 / 8 / 7 are not supported.
|
|||||||
`zip` / `flate2` / `tar` (MIT / Apache-2.0). The allow-list cargo-deny enforces is in `deny.toml`;
|
`zip` / `flate2` / `tar` (MIT / Apache-2.0). The allow-list cargo-deny enforces is in `deny.toml`;
|
||||||
GPL-family dependencies may not enter the main line.
|
GPL-family dependencies may not enter the main line.
|
||||||
|
|
||||||
Thanks to [HMCL](https://github.com/HMCL-dev/HMCL) and
|
Thanks to [HMCL](https://github.com/HMCL-dev/HMCL) and [PCL2](https://github.com/Meloong-Git/PCL)
|
||||||
[PCL2](https://github.com/Meloong-Git/PCL) (both GPL-3.0) — those two old-timers have been riding
|
(both GPL-3.0). They have been with the vast majority of Minecraft players for years, and this
|
||||||
along with the overwhelming majority of Minecraft players for years now. This launcher learned an
|
project has benefited a great deal from their design choices and implementation details.
|
||||||
enormous amount from them about how a launcher should feel and how it should work, and it exists
|
|
||||||
very much in their debt.
|
Not affiliated with Mojang or Microsoft.
|
||||||
+15
-22
@@ -9,26 +9,19 @@ Unlucky Launcher(ULL)是一个用 Rust 写的免费开源 Minecraft: Java
|
|||||||
每个平台就一个原生二进制——没有安装包、没有捆绑运行时、没有 WebView。启动器内置 AI Agent
|
每个平台就一个原生二进制——没有安装包、没有捆绑运行时、没有 WebView。启动器内置 AI Agent
|
||||||
客户端(对话 / 改配置 / 崩溃诊断),也能作为 MCP server 接进别的 Agent 工具。
|
客户端(对话 / 改配置 / 崩溃诊断),也能作为 MCP server 接进别的 Agent 工具。
|
||||||
|
|
||||||
## 合规声明
|
|
||||||
|
|
||||||
- **用 Microsoft 账户登录**:认证走 Microsoft OAuth 2.0 device code flow → Xbox Live → XSTS →
|
|
||||||
`api.minecraftservices.com`,用的是玩家自己的 Microsoft 账户与自己已购的游戏权益。
|
|
||||||
- **凭据只存本机**:账户令牌只保存在本机,不上传本项目运营的任何服务器,AI 功能也读不到。
|
|
||||||
- **联机游玩需要 Microsoft 账户与有效的游戏权益。**
|
|
||||||
- 不分发、不镜像、不代理、不修改任何 Minecraft 游戏文件。
|
|
||||||
- 与 Mojang、Microsoft 无关联。
|
|
||||||
|
|
||||||
## 特性
|
## 特性
|
||||||
|
|
||||||
- **单文件原生二进制**:启动器本体不需要 JVM、不需要 WebView、不带旁挂运行时。游戏要的 JDK 由
|
- **单文件原生二进制**:启动器本体不需要 JVM、不需要 WebView、不带旁挂运行时。游戏要的 JDK 由
|
||||||
启动器按实例下载管理,不是启动器的依赖。
|
启动器按实例下载管理,不是启动器的依赖。
|
||||||
- **重写期两套 UI 并存**:已发布版本是 Slint(Royalty-Free 2.0);下一代 UI 是 iced 0.14 +
|
- **重写期两套 UI 并存**:已发布版本是 Slint(Royalty-Free 2.0);下一代 UI 是 iced 0.14 +
|
||||||
Material 3 Expressive,目前仍在写(见「当前状态」)。
|
Material 3 Expressive,目前仍在写(见「当前状态」)。
|
||||||
- **CPU 软渲染兜底**:`--software-renderer` 让没有可用 GPU 或驱动有问题的老机也能拿到完整界面。
|
- **CPU 软渲染兜底**:`--software-renderer` 让没有可用 GPU 或驱动有问题的老机也能正常显示界面。
|
||||||
- **AI Agent + MCP**:启动器内可对话、改设置、读崩溃诊断;`ull agent serve` 把同一个内核以 MCP
|
- **AI Agent + MCP**:启动器内可对话、改设置、读崩溃诊断;`ull agent serve` 把同一个内核以 MCP
|
||||||
server 形态(stdio 或 Streamable HTTP)开放给外部 Agent 工具。
|
server 形态(stdio 或 Streamable HTTP)开放给外部 Agent 工具。
|
||||||
- **加载器**:Fabric / Quilt / NeoForge / Forge;整合包与 CurseForge / Modrinth 客户端在 core 里。
|
- **加载器**:Fabric / Quilt / NeoForge / Forge;整合包与 CurseForge / Modrinth 客户端在 core 里。
|
||||||
- **Java 管理**:Temurin → Oracle → Microsoft → Zulu 回退链,带地区判定。
|
- **Java 管理**:Temurin → Oracle → Microsoft → Zulu 回退链,带地区判定。
|
||||||
|
- **账户**:用 Microsoft 账户登录,认证走 OAuth 2.0 device code flow → Xbox Live → XSTS →
|
||||||
|
`api.minecraftservices.com`;账户令牌只保存在本机。
|
||||||
- **引擎**:多源下载(健康度评分、镜像、分块传输、边下边算)与 YAML 规则引擎的崩溃诊断。
|
- **引擎**:多源下载(健康度评分、镜像、分块传输、边下边算)与 YAML 规则引擎的崩溃诊断。
|
||||||
- **许可**:Apache-2.0 © AskaEth (YeiJ)。
|
- **许可**:Apache-2.0 © AskaEth (YeiJ)。
|
||||||
|
|
||||||
@@ -36,15 +29,15 @@ Unlucky Launcher(ULL)是一个用 Rust 写的免费开源 Minecraft: Java
|
|||||||
|
|
||||||
两条轨道,还不是同一个东西——看小标题再决定下载什么。
|
两条轨道,还不是同一个东西——看小标题再决定下载什么。
|
||||||
|
|
||||||
### 轨道 A —— 已发布:v0.1.0,Slint 版(现在真能下载的就是它)
|
### 轨道 A —— 已发布:v0.1.0,Slint 版(现在能下载的就是它)
|
||||||
|
|
||||||
- **GitHub Releases `v0.1.0`**(2026-11-01,标记为 pre-release):单文件产物覆盖 Windows x64(裸
|
- **GitHub Releases `v0.1.0`**(2026-11-01,标记为 pre-release):单文件产物覆盖 Windows x64(裸
|
||||||
`.exe`)、Linux x64、macOS(arm64 与 x64)`.tar.gz`。每个 Release 另挂 `SHA256SUMS.txt` 与
|
`.exe`)、Linux x64、macOS(arm64 与 x64)`.tar.gz`。每个 Release 另挂 `SHA256SUMS.txt` 与
|
||||||
`LICENSE` / `NOTICE` / `README.md` 三份文本——Windows 是「一个 exe 装不下文本」所以并列挂出,
|
`LICENSE` / `NOTICE` / `README.md` 三份文本——Windows 是「一个 exe 装不下文本」所以并列挂出,
|
||||||
unix 归档里本来就装着。
|
unix 归档里本来就装着。
|
||||||
- **UI**:Slint + Metro。这是已交付的图形界面——实例、下载、账户、Java、日志、设置各页驱动真实引擎
|
- **UI**:Slint + Metro。这是已交付的图形界面——实例、下载、账户、Java、日志、设置
|
||||||
(应用内 AI 对话面板仍是脚本化的占位)。
|
各页都由 core 引擎驱动(应用内 AI 对话面板仍是脚本化的占位)。
|
||||||
- **CLI `ull`** 与 v0.1.0 同源同版本、完整可用,但发布资产里只有 GUI 单文件——要用它请自己构建:
|
- **CLI `ull`** 与 v0.1.0 同源同版本,但发布资产里只有 GUI 单文件——要用它请自己构建:
|
||||||
`cargo build --release --bin ull`。命令:`instances`、`install`、`launch`、`accounts`、`sessions`、
|
`cargo build --release --bin ull`。命令:`instances`、`install`、`launch`、`accounts`、`sessions`、
|
||||||
`logs`、`diag`、`config`、`java`、`agent`。
|
`logs`、`diag`、`config`、`java`、`agent`。
|
||||||
- Windows ARM64 与 Linux ARM64 两个槽位已接进发布流水线,随下一个 tag 发布;`v0.1.0` 的资产早于
|
- Windows ARM64 与 Linux ARM64 两个槽位已接进发布流水线,随下一个 tag 发布;`v0.1.0` 的资产早于
|
||||||
@@ -52,7 +45,7 @@ Unlucky Launcher(ULL)是一个用 Rust 写的免费开源 Minecraft: Java
|
|||||||
|
|
||||||
### 轨道 B —— dev 上的下一代 UI(iced + M3 Expressive,施工中)
|
### 轨道 B —— dev 上的下一代 UI(iced + M3 Expressive,施工中)
|
||||||
|
|
||||||
**这条轨道没有任何已发布的东西,任何下载都拿不到它。** 想看只能自己从源码编。
|
**这条轨道还没发布——要看只能自己从源码编。**
|
||||||
|
|
||||||
- **方向已锁死**:视觉 = Material 3 Expressive,框架 = iced 0.14,UI 层从头写;风格与框架都不会再换。
|
- **方向已锁死**:视觉 = Material 3 Expressive,框架 = iced 0.14,UI 层从头写;风格与框架都不会再换。
|
||||||
- **已完成**:令牌 crate `crates/design`(零 UI 框架依赖、零第三方 crate——真 HCT 色彩、排版档位、
|
- **已完成**:令牌 crate `crates/design`(零 UI 框架依赖、零第三方 crate——真 HCT 色彩、排版档位、
|
||||||
@@ -94,7 +87,7 @@ Unlucky-Launcher (cargo workspace)
|
|||||||
| `download` | 多源健康度、镜像、分块下载、边下边算 |
|
| `download` | 多源健康度、镜像、分块下载、边下边算 |
|
||||||
| `game` | 版本/实例仓库、快照与继承解析 |
|
| `game` | 版本/实例仓库、快照与继承解析 |
|
||||||
| `launch` | 10 阶段启动管线、进程、JSONL 事件流 |
|
| `launch` | 10 阶段启动管线、进程、JSONL 事件流 |
|
||||||
| `auth` | Microsoft 正版登录(OAuth 2.0 device code → Xbox Live → XSTS → Minecraft Services) |
|
| `auth` | Microsoft 账户登录(OAuth 2.0 device code → Xbox Live → XSTS → Minecraft Services) |
|
||||||
| `addon` | 加载器安装、整合包、CurseForge / Modrinth |
|
| `addon` | 加载器安装、整合包、CurseForge / Modrinth |
|
||||||
| `diagnose` | 五类信号采集、YAML 规则引擎、hs_err 解析 |
|
| `diagnose` | 五类信号采集、YAML 规则引擎、hs_err 解析 |
|
||||||
| `platform` | OS 抽象:路径、进程、文件锁、能力探测、运行期 OS 检测 |
|
| `platform` | OS 抽象:路径、进程、文件锁、能力探测、运行期 OS 检测 |
|
||||||
@@ -147,14 +140,12 @@ cargo build --release # 三个 bin 都落在 ta
|
|||||||
|
|
||||||
最低基线 **Windows 10**;Windows 8.1 / 8 / 7 不在支持范围内。
|
最低基线 **Windows 10**;Windows 8.1 / 8 / 7 不在支持范围内。
|
||||||
|
|
||||||
- Windows 10/11 走**标准工具链**产物(MSVC / GNU),无自定义 target spec、无 `-Zbuild-std`、无导入表白名单
|
- Windows 10/11 的产物由**标准工具链**(MSVC / GNU)构建,构建方式与上游 cargo 一致
|
||||||
- macOS 12+(Apple Silicon 与 Intel)与 Linux x64 / arm64 都是支持槽位;Linux 上 X11 是当前首选路径,
|
- macOS 12+(Apple Silicon 与 Intel)与 Linux x64 / arm64 都是支持槽位;Linux 上 X11 是当前首选路径,
|
||||||
Wayland 是大方向。macOS 产物未签名,首次启动要自己清掉 Gatekeeper 隔离标记
|
Wayland 是大方向。macOS 产物未签名,首次启动要自己清掉 Gatekeeper 隔离标记
|
||||||
(`xattr -d com.apple.quarantine`)
|
(`xattr -d com.apple.quarantine`)
|
||||||
- Android Termux 试验级、不承诺:只保证 CLI,GUI 未验证
|
- Android Termux 试验级、不承诺:只保证 CLI,GUI 未验证
|
||||||
- 平台独立性体现在**独立测试矩阵**,而非独立产物链;能力差异用 feature gate + 运行期探测表达
|
- 每个平台跑各自的测试矩阵;能力差异用 feature gate + 运行期探测表达。
|
||||||
- **两套 UI 都有渲染兜底**:Slint 版降软渲染,iced 版从 wgpu 降到 tiny-skia,没有可用 GPU 的机器
|
|
||||||
同样能拿到完整界面
|
|
||||||
|
|
||||||
## 许可证与致谢
|
## 许可证与致谢
|
||||||
|
|
||||||
@@ -171,5 +162,7 @@ cargo build --release # 三个 bin 都落在 ta
|
|||||||
(MIT / Apache-2.0)。cargo-deny 强制执行的白名单在 `deny.toml`;GPL 系依赖不得进主干。
|
(MIT / Apache-2.0)。cargo-deny 强制执行的白名单在 `deny.toml`;GPL 系依赖不得进主干。
|
||||||
|
|
||||||
感谢 [HMCL](https://github.com/HMCL-dev/HMCL) 和 [PCL2](https://github.com/Meloong-Git/PCL)
|
感谢 [HMCL](https://github.com/HMCL-dev/HMCL) 和 [PCL2](https://github.com/Meloong-Git/PCL)
|
||||||
(均 GPL-3.0)——这两位陪着绝大多数 MC 玩家走了好多年的老前辈。启动器该是什么手感、该怎么把一件
|
(均 GPL-3.0)。这两款启动器陪着绝大多数 MC 玩家走了很多年,
|
||||||
事做顺,我们是从它们身上学的;这个项目欠它们一份很大的人情。
|
本项目在设计取舍与实现细节上都从中受益良多。
|
||||||
|
|
||||||
|
与 Mojang、Microsoft 无关联。
|
||||||
Reference in new issue
Block a user