From 751ae80f28a66edd851e04f91d0bfd5bc2c9ffef Mon Sep 17 00:00:00 2001 From: AskaEth Date: Thu, 12 Nov 2026 12:06:46 +0800 Subject: [PATCH] =?UTF-8?q?chore(release):=20=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=200.2.5=EF=BC=88=E5=8A=A8=E6=95=88=E7=AC=AC=E4=B8=80=E6=89=B9?= =?UTF-8?q?=20+=20=E5=8F=91=E5=B8=83=E9=93=BE=E8=B7=AF=E4=B8=89=E5=A4=84?= =?UTF-8?q?=E6=A0=B9=E5=9B=A0=E4=BF=AE=E5=A4=8D=20+=20=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=94=B6=E5=8F=A3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 26 +++++++++++++++++++++++++- Cargo.lock | 16 ++++++++-------- Cargo.toml | 2 +- crates/agent/Cargo.toml | 2 +- crates/app-iced/Cargo.toml | 10 +++++----- crates/cli/Cargo.toml | 4 ++-- crates/palette-extract/Cargo.toml | 2 +- crates/presenter/Cargo.toml | 6 +++--- 8 files changed, 46 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d15937..ecd46e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,31 @@ --- -## 0.2.4 — 未发布(当前 `dev`) +## 0.2.5 — 当前版本 + +> 0.2.4 打过 tag 但**发布流水线全红、没有生成发布包**,其内容整体并入本版。所以本版是 0.2.4 + 下面这些。 + +**动效(本版主线)** +- **切页有方向了**:同级页按导航栏的上下顺序左右移动,进详情页/返回按层级纵深移动;旧页同时反向退场, + 不是「只挪新页」那种一闪而过 +- **对话框改成绕中心缩放**(0.96→1.0)+ 背景渐暗,不再是硬切;关闭时反向 + (此前实现把缩放的平移项写反了,实际是「从左上斜滑进来」,本版修正) +- **跟随系统「减少动效」设置**:系统关掉动画时全站动效归零(首次真正接上系统偏好,此前只有环境变量入口) +- 过渡中途再次切页会干净接管,不会叠三层或卡住;过渡结束后不再保留上一页 + +**发布与构建** +- 修复「英文系统上构建校验误报失败」:检查器把中文打到非 UTF-8 输出流会抛异常,判据其实全过 +- 修复「旧版系统上链接失败」:构建缓存跨系统串用,导致用新系统编译的中间产物在旧系统上链接 +- 修复一处只在新系统上才暴露的编译告警(Windows 侧永远看不到) +- 发布工作流的运行名改为固定格式(不再显示提交信息原文) + +**稳定性** +- 三条「只在特定平台/特定时序才红」的测试改成确定性判据:路径写法、全局状态竞争、文件时间戳精度 +- 修复一处会让 Windows 桌面闪黑框的子进程启动(动效探针未走静默启动) + +--- + +## 0.2.4 — 已并入 0.2.5(原 tag 发布失败) 这一批的主线是「把存档区做成真正能用」,以及把验证方式从「看起来对」改成「能被证伪」。 diff --git a/Cargo.lock b/Cargo.lock index 0018be4..1dab906 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5129,7 +5129,7 @@ checksum = "ca718471876992059f251e33aafc334346ada08042b7661dd1fe313a9bced557" [[package]] name = "unlucky-agent" -version = "0.2.4" +version = "0.2.5" dependencies = [ "axum", "futures-util", @@ -5144,7 +5144,7 @@ dependencies = [ [[package]] name = "unlucky-app-iced" -version = "0.2.4" +version = "0.2.5" dependencies = [ "iced", "image", @@ -5159,7 +5159,7 @@ dependencies = [ [[package]] name = "unlucky-cli" -version = "0.2.4" +version = "0.2.5" dependencies = [ "serde", "serde_json", @@ -5171,7 +5171,7 @@ dependencies = [ [[package]] name = "unlucky-core" -version = "0.2.4" +version = "0.2.5" dependencies = [ "ed25519-dalek", "flate2", @@ -5191,15 +5191,15 @@ dependencies = [ [[package]] name = "unlucky-design" -version = "0.2.4" +version = "0.2.5" [[package]] name = "unlucky-i18n" -version = "0.2.4" +version = "0.2.5" [[package]] name = "unlucky-palette-extract" -version = "0.2.4" +version = "0.2.5" dependencies = [ "image", "unlucky-design", @@ -5207,7 +5207,7 @@ dependencies = [ [[package]] name = "unlucky-presenter" -version = "0.2.4" +version = "0.2.5" dependencies = [ "ed25519-dalek", "serde", diff --git a/Cargo.toml b/Cargo.toml index 5dd957e..1ead8b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ members = [ exclude = ["crates/app"] [workspace.package] -version = "0.2.4" +version = "0.2.5" edition = "2021" license = "Apache-2.0" authors = ["AskaEth "] diff --git a/crates/agent/Cargo.toml b/crates/agent/Cargo.toml index db18ec1..89bcc71 100644 --- a/crates/agent/Cargo.toml +++ b/crates/agent/Cargo.toml @@ -13,7 +13,7 @@ publish.workspace = true # 端口层(src/port*.rs)让 agent 能在没有 core 实现时独立编译与测试;装配层用 core 实现 # 填充 `Ports`(GUI 侧是 `crates/app`,headless 侧是 `crates/cli` 的 `ull agent serve`)。 [dependencies] -unlucky-core = { path = "../core", version = "0.2.4" } +unlucky-core = { path = "../core", version = "0.2.5" } # 序列化:工具 JSON Schema 是手写 serde_json::Value(不引 schemars), # 工具结果 / 审计记录 / 事件流都用 serde derive。 diff --git a/crates/app-iced/Cargo.toml b/crates/app-iced/Cargo.toml index 1605a4c..e7af930 100644 --- a/crates/app-iced/Cargo.toml +++ b/crates/app-iced/Cargo.toml @@ -22,15 +22,15 @@ path = "src/lib.rs" [dependencies] # 令牌唯一真源(M61):颜色/排版/形状/间距/图标几何全部只从这里取。 -unlucky-design = { path = "../design", version = "0.2.4" } +unlucky-design = { path = "../design", version = "0.2.5" } # 平台识别(Termux / $PREFIX 路径)唯一真源:字体注册这类平台适配不再各写一份环境判断。 -unlucky-core = { path = "../core", version = "0.2.4" } +unlucky-core = { path = "../core", version = "0.2.5" } # M85:UI 框架无关的宿主层(DTO / 状态 reducer / host)。**只登记依赖,本 mission 不接线**—— # 页面用它的时机由后续 iced 页面 mission 决定(接线流程见 crates/presenter/src/lib.rs 的 crate 文档)。 # 与 Slint 版共用同一套 host 与状态语义,这是 D26「重写只换渲染」的落点。 -unlucky-presenter = { path = "../presenter", version = "0.2.4" } +unlucky-presenter = { path = "../presenter", version = "0.2.5" } # UI 框架(D26 锁定 iced 0.14)。**不得依赖 slint**。 # 关掉默认 features 后必须显式给执行器(M60 踩坑 Q2:否则 `No futures executor has been enabled`), @@ -60,11 +60,11 @@ image = { version = "0.25", default-features = false, features = [ # 进 UI 之前分发,命中就把控制权交给 `unlucky_cli::run`。依赖方向 app-iced → cli → # core/agent 不违反 core 零 UI 铁律(core 的依赖树里没有 cli)。零 UI 依赖的 `ull` # 仍在 `crates/cli`,给没有图形库的机器用——两者不是重复品。 -unlucky-cli = { path = "../cli", version = "0.2.4" } +unlucky-cli = { path = "../cli", version = "0.2.5" } # M92(D28):国际化地基(语言探测 / 消息目录 / 中文字体策略)。零依赖 crate——它拿不到 iced, # 所以系统字体扫描留在这里(`src/fonts/cjk.rs`),本 crate 只把族名喂给它的纯函数。 -unlucky-i18n = { path = "../i18n", version = "0.2.4" } +unlucky-i18n = { path = "../i18n", version = "0.2.5" } # M97:判据表第 8 行的取证通道。`iced_wgpu` 在真创建设备时会 `log::info!("Selected: {adapter:#?}")`, # 但进程里从来没人装 logger,于是「看不见」被当成了「没发生」。这里装一个只放行 `iced_wgpu*` / diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index d91ef7e..4244c5f 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -22,10 +22,10 @@ path = "src/lib.rs" # 参数解析手写(不引 clap):子命令集小,没必要为它多引一棵依赖树(Win10+ 单基线, # 但 CLI 是 headless/服务器场景的产物,体积与启动开销仍是关注项)。 [dependencies] -unlucky-core = { path = "../core", version = "0.2.4" } +unlucky-core = { path = "../core", version = "0.2.5" } # agent:`redact`(输出脱敏)+ `ull agent serve`(M39 的 MCP server:注册表 → rmcp 双投影, # core 侧五个端口在 src/commands/agent/ports/ 装配)。 -unlucky-agent = { path = "../agent", version = "0.2.4" } +unlucky-agent = { path = "../agent", version = "0.2.5" } # `ull agent serve` 要长驻跑 rmcp 的 stdio / Streamable HTTP 传输(tokio 运行时)。 tokio.workspace = true serde.workspace = true diff --git a/crates/palette-extract/Cargo.toml b/crates/palette-extract/Cargo.toml index 1a8989b..6dc99ff 100644 --- a/crates/palette-extract/Cargo.toml +++ b/crates/palette-extract/Cargo.toml @@ -12,7 +12,7 @@ publish.workspace = true # 分层纪律(D40):`crates/design` 保持零第三方依赖,**图片解码只能在这里**。 # 本 crate 的职责边界很窄:解码 + 限尺寸 + 把像素交给 design,不碰 UI、不碰设置、不碰壁纸探测。 [dependencies] -unlucky-design = { path = "../design", version = "0.2.4" } +unlucky-design = { path = "../design", version = "0.2.5" } # 只开两个编解码器(MIT OR Apache-2.0,deny.toml 白名单内): # - png:启动器背景图最常见的无损格式,也是截图通道用的格式; diff --git a/crates/presenter/Cargo.toml b/crates/presenter/Cargo.toml index eab59d7..78c1fcf 100644 --- a/crates/presenter/Cargo.toml +++ b/crates/presenter/Cargo.toml @@ -22,12 +22,12 @@ serde_json.workspace = true # 边界(01c §5 / D3):presenter 只经 DTO 消费 core,**不 import core 的领域类型到 DTO 里**。 # host 是 core 的快照/事件流与本 crate DTO 之间的唯一翻译层,所以它需要 core。 -unlucky-core = { path = "../core", version = "0.2.4" } +unlucky-core = { path = "../core", version = "0.2.5" } # M251(D54 第 1/4 条):截图缩略图在**后台线程**里解码,解码能力只能来自 palette-extract # (`image` 一个字节都不进 presenter,否则「解码集中在一处」这条边界当场作废)。 # 方向只能是 presenter → palette-extract(反向不许);那边也不许反过来依赖 core/presenter。 -unlucky-palette-extract = { path = "../palette-extract", version = "0.2.4" } +unlucky-palette-extract = { path = "../palette-extract", version = "0.2.5" } [lints] workspace = true @@ -45,6 +45,6 @@ update-test-source = ["unlucky-core/update-test-source"] # `manifest.json.sig`,没有它 core 一律拒装)。这里打开 core 的 `update-test-key`:它**只**把一把 # **公开**的测试公钥并进信任表,不开任何数据源开关(与 `update-test-source` 是两件事)。 # 只出现在 `[dev-dependencies]`:库/发布构建拿不到它。守门:`packaging/check_test_key_off.py`。 -unlucky-core = { path = "../core", version = "0.2.4", features = ["update-test-key"] } +unlucky-core = { path = "../core", version = "0.2.5", features = ["update-test-key"] } # 夹具用同一套种子现签清单(与 `crates/core/src/update/tests/support_sign.rs` 同源)。 ed25519-dalek.workspace = true