Persist PageTree expand state via control-plane view-state and align chevron/DOM with restored expansion; keep Sidex-style shallow page-tree scan and drop the unused recursive scanner that only added cargo noise. Add password vault workbench routes/runtime/skill/CLI, split page_ai_pi into a module package, and retire Hermes/ACP/OpenHub recycle + root harness evidence from the index while gitignoring recycle and local diag dumps. Archive superseded design/bugs docs under old/, point architecture at ARCHITECTURE.md, and refresh smokes for Pi S1–S7, vault, and editor regressions so the working tree can stay clean.
46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
# [recycle] 7-34 [done][bug] 页面 AI ACP Runtime 默认值回跳 Hermes v1
|
||
|
||
> 发现时间:2026-05-18
|
||
>
|
||
> 状态:`[done]`
|
||
>
|
||
> 关联主线:`07-ai`
|
||
|
||
## 1. 用户可见症状
|
||
|
||
页面 AI 面板中选择 `ACP · Reasonix` 后,会自动回跳到 `ACP · Hermes`。
|
||
|
||
用户期望:
|
||
|
||
- 默认 runtime 为 `ACP · Reasonix`
|
||
- 下拉仍可手动切换到 `ACP · Hermes`
|
||
|
||
## 2. 根因
|
||
|
||
页面 AI 的历史 runtime 语义仍把空 `acpRuntime` 当成旧 `Hermes HTTP` 默认值。当前主线已经退役 HTTP Hermes,但前端 session/localStorage 恢复、后端空 runtime 推导、以及 `/profiles` 尚未返回时的下拉渲染仍可能产生空 runtime。
|
||
|
||
空 runtime 进入旧逻辑后会被解释成 Hermes 路径,导致用户刚选择 Reasonix 后又被历史 session 或空 select value 覆盖。
|
||
|
||
## 3. 修复
|
||
|
||
- 前端 `pageAiAcpRuntime` 初始值改为 `reasonix`。
|
||
- localStorage 版本提升到 `3`,避免旧缓存把 active runtime 覆盖回 Hermes。
|
||
- session 创建、持久化、停止 run、发送 run 默认都写入 `reasonix`。
|
||
- 前端内置 `Reasonix / Hermes` 两个 ACP runtime fallback,`/profiles` 慢或失败时也不会渲染空 select。
|
||
- 后端空 `acpRuntime` 默认归入 ACP 默认 runtime,默认值为 `reasonix`;旧 HTTP proxy 只保留在显式兼容开关后。
|
||
|
||
## 4. 验证
|
||
|
||
新增回归约束:
|
||
|
||
```bash
|
||
cargo test --manifest-path rust/Cargo.toml -p mnote-web page_ai_acp_runtime_defaults_to_reasonix_and_keeps_hermes_switch -- --nocapture
|
||
```
|
||
|
||
覆盖:
|
||
|
||
- `pageAiAcpRuntime` 默认是 `reasonix`
|
||
- 下拉 options 固定包含 `reasonix` / `hermes`
|
||
- 不再包含旧的 `默认 (Hermes HTTP)` 空选项
|
||
- change handler 空值 fallback 到 `reasonix`
|