docs(readme): 状态段改成当前事实,模块地图补齐三个 crate
状态段原来停在「iced 版每个页面都是占位」——早就不成立了。改成: 十四页功能已齐、文案跟随系统语言、外观三件套、整合包导入导出与安装选项, 以及明确列出「还没做」的四项(安装器与自动更新、macOS 定型复核、 逐文件冲突策略、原生文件选择框)。 模块地图补上 crates/presenter、crates/i18n、crates/palette-extract, 并写明分层:app-iced → presenter → core/agent,design 与 i18n 不得反向依赖渲染框架。
This commit is contained in:
1 parent
4a212760b6
commit
1315b37f62
2 files changed
+76
-111
No files matched your search
+18
-39
@@ -28,47 +28,23 @@ Unlucky Launcher(ULL)是一个用 Rust 写的免费开源 Minecraft: Java
|
||||
|
||||
## 当前状态
|
||||
|
||||
两条轨道,还不是同一个东西——看小标题再决定下载什么。
|
||||
`v0.1.0`(2026-11-01)是目前唯一的 tag,它早于 UI 重写:那批资产是 Slint 版。下面说的这套东西在开发
|
||||
线上,也正是发布流水线现在会打出来的东西。
|
||||
|
||||
### 轨道 A —— 历史:v0.1.0,Slint 版(目前唯一的 tag)
|
||||
|
||||
> **历史实现——已不在默认构建与发布矩阵内。** Slint 那棵树(`crates/app`)作为源码参考留在仓库里:
|
||||
> 已被 cargo workspace `exclude`,所以 `cargo build` / `cargo test` / `cargo clippy` 都不会碰它,
|
||||
> 也没有任何产物从它构建。想了解那一版 UI 怎么写的就直接读源码——**不要再尝试构建它**(它的 manifest
|
||||
> 整份是 workspace 继承写法,离开 workspace 后连解析都过不了)。下面这段原文保留,因为它记录的是
|
||||
> `v0.1.0` 资产里到底装了什么;从 `v0.1.0` 之后,流水线构建的是 iced 版,对外文件名不变。
|
||||
|
||||
- **GitHub Releases `v0.1.0`**(2026-11-01,标记为 pre-release):单文件产物覆盖 Windows x64(裸
|
||||
`.exe`)、Linux x64、macOS(arm64 与 x64)`.tar.gz`。每个 Release 另挂 `SHA256SUMS.txt` 与
|
||||
`LICENSE` / `NOTICE` / `README.md` 三份文本——Windows 是「一个 exe 装不下文本」所以并列挂出,
|
||||
unix 归档里本来就装着。
|
||||
- **UI**:Slint + Metro。这是已交付的图形界面——实例、下载、账户、Java、日志、设置
|
||||
各页都由 core 引擎驱动(应用内 AI 对话面板仍是脚本化的占位)。
|
||||
- **同一个二进制就是 CLI**:`unlucky-launcher instances list`、`unlucky-launcher launch <实例>`、
|
||||
`unlucky-launcher logs <sid>` 等命令在任何 UI 代码之前分流——不开窗、不探渲染后端、不扫字体。
|
||||
命令集:`instances`、`install`、`launch`、`accounts`、`sessions`、`logs`、`diag`、`config`、
|
||||
`java`、`agent`,外加 `--help` / `--version`。
|
||||
- **另有一个更轻的 `ull`**(`cargo build --release --bin ull`,零 UI 依赖):同一套命令,但二进制不
|
||||
链接任何图形栈——连 fontconfig 都不需要。服务器、CI 容器、Termux 拿 `ull`;有桌面的机器拿
|
||||
`unlucky-launcher`,一个文件同时管 GUI 与命令行。两者都从下一个 tag 起进发布资产
|
||||
(`v0.1.0` 的资产早于这个变化)。
|
||||
- Windows ARM64 与 Linux ARM64 两个槽位已接进发布流水线,随下一个 tag 发布;`v0.1.0` 的资产早于
|
||||
这两个槽位。
|
||||
|
||||
### 轨道 B —— dev 上的下一代 UI(iced + M3 Expressive,施工中)
|
||||
|
||||
**这条轨道还没发布——要看只能自己从源码编。**
|
||||
|
||||
- **方向已锁死**:视觉 = Material 3 Expressive,框架 = iced 0.14,UI 层从头写;风格与框架都不会再换。
|
||||
- **已完成**:令牌 crate `crates/design`(零 UI 框架依赖、零第三方 crate——真 HCT 色彩、排版档位、
|
||||
形状刻度、间距、高程、动效、图标几何、组件度量)与骨架 crate `crates/app-iced`(能开窗、自绘标题栏
|
||||
与窗口键、导航轨、颜色与字号只从令牌取、GPU→CPU 后端探测与自动降级、视觉验收用的截图与逐像素
|
||||
对比通道)。
|
||||
- **没完成**:组件库(按钮、对话框、列表、菜单、搜索栏,以及 M3 其余组件)、页面搬迁、i18n 文案。
|
||||
iced 版里现在每一个页面都是占位。
|
||||
- **iced 版界面功能已齐**:十四页——实例、版本管理(三栏 + 搜索)、内容库(整合包 / Mod / 资源包 /
|
||||
光影,带来源与版本筛选)、日志、设置(通用 / 外观 / Java / 下载)、账户(微软设备码、第三方社区服、
|
||||
本地档案)、AI 右栏,以及安装流程——共用一套组件库与一套令牌。
|
||||
- **文案跟随系统语言**:自动探测、设置里可显式切换、重启后保持。界面文案统一走一份消息目录,视图层
|
||||
没有硬编码字符串。
|
||||
- **外观**:窗口背景图、面板透明度、整窗透明度(Windows)、浅色 / 深色 / 跟随系统,以及在系统愿意给
|
||||
的时候使用系统窗口圆角。CPU 渲染档会关掉半透明层,并在界面上说清楚。
|
||||
- **整合包与安装链路都在构建里**:CurseForge 清单 / Modrinth `.mrpack` / MultiMC·Prism 导入,mrpack
|
||||
与 CurseForge 导出,安装选项(选加载器)与**真取消**。
|
||||
- **还没做**:安装器与自动更新通道;Windows 定型后的 macOS 真机复核;整合包导入的**逐文件**冲突策略
|
||||
(当前只有一份全局策略,界面如实写明而不是假装支持);原生文件选择框(导入支持拖拽与粘贴路径)。
|
||||
- **Slint 版已退出构建,只留源码作参考**:`crates/app` 不再是 workspace 成员(M118)——源码留作历史
|
||||
参考,不编译、不测试、不发布,也不再有可用的构建方式。翻牌只剩**改名**这一步:在 iced 版通过等价
|
||||
验收前,它的 bin 还叫 `unlucky-launcher-iced`;发布流水线已经把它按对外名 `unlucky-launcher` 打出去。
|
||||
参考,不编译、不测试、不发布,也不再有可用的构建方式。翻牌只剩**改名**这一步:它的 bin 现在叫
|
||||
`unlucky-launcher-iced`,发布流水线已经把它按对外名 `unlucky-launcher` 打出去。
|
||||
|
||||
可能会遇到的 bin,先认清楚:
|
||||
|
||||
@@ -115,8 +91,11 @@ unlucky-launcher --version # CLI,输出版本 + 系统摘要
|
||||
Unlucky-Launcher (cargo workspace)
|
||||
├── crates/core # 领域库:零 UI 依赖,八模块
|
||||
├── crates/agent # AI Agent:ToolSpec 注册表 + 内置客户端 + MCP server(双形态共用一个内核)
|
||||
├── crates/presenter # 业务宿主层:与框架无关的 state / host / dto / 转换
|
||||
├── crates/design # 设计令牌:真 HCT 色彩 / 排版 / 形状 / 间距 / 高程 / 动效 / 图标 / 组件度量
|
||||
│ # —— 零 UI 依赖、零第三方 crate
|
||||
├── crates/i18n # 语言探测、消息目录、中文字体策略
|
||||
├── crates/palette-extract # 唯一解码图片的 crate,供壁纸取色链路使用
|
||||
├── crates/app # 历史 Slint UI(bin `unlucky-launcher`):已被 workspace `exclude`,
|
||||
│ # 仅作源码参考——不再被构建 / 测试 / 发布
|
||||
├── crates/app-iced # iced UI(bin `unlucky-launcher-iced`):workspace 里唯一的 GUI bin
|
||||
|
||||
Reference in new issue
Block a user