# 更新日志 本分支基于上游 [dsh-codex-effort-slider](https://github.com/Microqian2th/dsh-codex-effort-slider) `1.0.0`。 下面是相对上游的**全部**改动(按版本倒序)。 > 文档分工:入门/安装/使用/FAQ → [README.md](README.md); > 实现细节(接管时序、DOM 锚点、色彩与粒子数学、测试台策略)→ [ARCHITECTURE.md](ARCHITECTURE.md); > **真机事故复盘**(现场 → 根因 → 修法 → 断言,九条)→ [INCIDENTS.md](INCIDENTS.md); > 主题式改动清单与移植对照 → [MODIFICATIONS.md](MODIFICATIONS.md)。 > 本文只留"每一版改了什么",每条都指向细节所在。 --- ## 1.3.10 — 再透一档;阴影不再被"一个框"裁掉 - **阴影被裁成矩形**:定位壳 `.cxp-root` 的 `overflow:auto` 会裁掉后代的 `box-shadow`。 滚动安全网挪到面板自己那层(`.cxp-root{overflow:visible}` + `.cxp-panel{overflow:auto}`), 行内 `maxHeight` 两边都给。 - **底色再透一档**:保留官方色相、只降 alpha(浅 `rgba(248,249,250,.46)`、深 `rgba(67,69,74,.40)`, 官方令牌是 `.58` / `.45`)。**没有**用 `color-mix()` 调淡官方值 —— 引擎不支持时整条声明失效, 面板会变成完全没有底色。 - **推理等级卡片也改半透明**(浅 `rgba(255,255,255,.55)`、深 `.06`):实心卡片盖住面板 2/3 面积, 会把毛玻璃整个抵消。 细节与断言 → [INCIDENTS.md 第 6、7 条](INCIDENTS.md)。测试 902 → **908**。 --- ## 1.3.9 — 面板材料对齐官方菜单:毛玻璃 + 浅色主题下看得见的阴影 - 模糊用官方令牌 `--dsw-menu-backdrop-filter`(`blur(40px) saturate(150%)`)+ `-webkit-` 前缀; - 底改用官方**菜单填充**色相的半透明 rgba; - 阴影叠官方 `--dsw-shadow-lv3` 再补一层落地阴影(官方 `elevation-prominent` 只有 4%~5% alpha, 浅色页面上看不见);深色主题另给一套; - 档位弹层与面板同一种材料。 细节与断言 → [INCIDENTS.md 第 6 条](INCIDENTS.md)。测试 887 → **902**。 --- ## 1.3.8 — 换模型时的默认档位改成「正中(偶数档取中间的下一个)」 默认档位 = `floor(n/2)`:4 档 → 第 3 档、5 档 → 第 3 档、2 档 → 第 2 档。 两处共用同一条规则:**点击模型时写回宿主的档位**、**目录里没有明确档位时滑条停在哪**; 会话里明确存着的档位仍优先。宿主的 `defaultEffort` 不再参与定位。 细节(含"为什么以前没被发现")→ [INCIDENTS.md 第 9 条](INCIDENTS.md)。测试 868 → **887**。 --- ## 1.3.7 — 修:面板永久卡在「会话目录未就绪」 插件级 `inject` 补上 **`remote` / `remote.session`**:Cordis 的服务访问跟着调用方 ctx 走, 而接管官方席之后我们是 `directoryFor()` 唯一的调用方(官方组件不再渲染、命中不了它建好的缓存)。 测试台同时复刻了这条规矩 —— 少声明一个服务,离线套件立刻红。 细节 → [INCIDENTS.md 第 2 条](INCIDENTS.md)。测试 864 → **868**。 --- ## 1.3.6 — 把"为什么没就绪"摆到台面上 - `resolve()` 不再静默 `catch`:失败原因记进访问器(`reason()`)、**每换一条新原因往控制台报一次**, 面板在"未就绪"时把**宿主原话**直接显示出来(悬浮给全文)。 - 新增 `no-session` 状态:一个会话 id 都没有时("新会话"空白壳)说 **"还没有会话 —— 发一条消息后就能选模型"**,而不是误导性的"正在重试"。 - 两条会话 id 来路互为备份:kit 的 `sessionId` 优先、`inject` 的 `binding.key` 兜底 (`inject` 只回私有键 `__sessionKey`,**不能**回 `{sessionId}` —— 那会盖掉 kit 里正确的值)。 - 顺手修测试台一处失真:`setupPicker` 以前从不调用 `inject`,所以"inject 覆盖 kit"离线测不到。 测试 853 → **864**。 --- ## 1.3.5 — 空态说人话;两份"宿主侧"的事故 - 空态区分三种处境并给出 `data-phase`:`unresolved`(我们还没拿到)/ `empty`(宿主就绪但没列 provider)/ `no-session`;按钮的悬浮说明同样带上。 - 查清"宿主就绪但空"的来源(账号 provider 拿不到令牌时**静默返回空列表**)→ [INCIDENTS.md 第 3 条](INCIDENTS.md)。 - **`package.json` 的 UTF-8 BOM 让整包被宿主丢弃**(`rows: []`、界面毫无反应)→ [INCIDENTS.md 第 4 条](INCIDENTS.md);同时补上反面规则:两个 `.ps1` **必须**带 BOM。 测试 839 → **853**。 --- ## 1.3.4 — 三条真机反馈 1. **流式输出时面板消失**:聊天区自动滚动触发了"滚动即关闭",改成**只重定位、不关闭**; 触发器几何为 0(宿主 `hidden` 了控件行)时保持原位。 顺带修掉一个隐藏 bug:位置以前是渲染时现读的,重定位不改 state → React bail out → 面板纹丝不动; 现在 `pos` 进入 state。 2. **浅色主题星尘发黑**:星尘固定浅色(它永远落在蓝紫填充层上,跟随主题令牌会在浅色下变深色)。 3. **面板右缘对齐输入框右缘**(以前是左缘贴触发器)。 细节 → [INCIDENTS.md 第 5、8 条](INCIDENTS.md)。测试 823 → **839**。 --- ## 1.3.3 — 空目录不再是一片空白 - 提示/失败清单都渲染出来,且**视口高度算得下它们**(以前 44px 装不下 48px 的提示, 被 `overflow:hidden` 整句裁掉); - 逐 provider 的失败清单按官方文案渲染; - `load` 失败按退避重试 + 心跳兜底;**"就绪但空"主动刷一次全局目录**(8s 冷却、最多 3 次); - 按钮文案如实("正在加载模型…")。 细节 → [INCIDENTS.md 第 1 条](INCIDENTS.md)。测试 806 → **823**。 --- ## 1.3.2 — 接管官方那颗模型席按钮(`priority: -1` 遮蔽) 官方那颗席按钮注册在 **single 槽** `conversation.input.model`(官方没写 `priority` = 0), single 槽"同优先级撞了会抛错、换优先级即遮蔽(最低者渲染)",所以用 `priority: -1` 接管 —— 输入区只剩一颗按钮,**没有第二颗**。三条时序都有退路(官方席先声明 / 工具行先声明 / 官方席始终没有),最差回到"两颗按钮",绝不会两边都没有。随之接过来两条 owner 语义 (`locked`、紧凑态两个 CSS 变量)。代价:官方菜单没有入口了(`/model` 命令仍在)。 细节 → [ARCHITECTURE.md 第 3 节](ARCHITECTURE.md)。测试 771 → **806**。 --- ## 1.3.1 — 二级页模型列表按「新发布 → 旧发布」排序 宿主目录**没有发布日期字段**,所以顺序由 id / 显示名里的两个信号算出: 版本号降序(逐段按数字比)→ 同版本时别名在前、快照版在后 → 同为快照按日期降序 → 认不出的沉底并保持宿主原顺序(稳定排序)。 细节 → [MODIFICATIONS.md 第七节](MODIFICATIONS.md)。测试 751 → **771**。 --- ## 1.3.0 — 自建浮层(第二个界面) 按参考实现复刻自建模型面板:收起态一颗按钮、两级面板(provider → 模型 + 搜索)、 常驻推理等级卡片、档位弹层;写回仍走去抖/去重;新增"无档位模型也能选中(只切模型)"。 官方菜单那条路保留但**默认关闭**(`ENABLE_OFFICIAL_MENU_SLIDER = false`,两套互斥)。 工程上两处踩坑记录(chunk 必须自注册、模块表按包名建表)→ [ARCHITECTURE.md 第 1 节](ARCHITECTURE.md)。测试 465 → **751**。 --- ## 1.2.0 — 官方菜单里的三处只读注记 + 档位字典 - 模型列表每行一颗**档位徽标**(`4 档 / 8 档 / 不支持`)、根面板「模型」行的 **provider 归属标签**、 档位列表每行右侧的**原始 API 取值** —— 三处都只 append,不改官方任何文字。 - `LV` 档位字典(9 键)+ `tiers()` 校验(脏数据返回 null 而不是抛错)+ `resolveModel()` 三级检测 (只作为目录查不到时的兜底)。 - 修复:禁用态改成渲染函数的完整投影、翻页那一帧的滚动稳定化(关 `overflow-anchor` + 清零)、 慢档缓动用参考实现的曲线。 移植对照(哪些原样落地、哪些等价替换、哪些不适用)→ [MODIFICATIONS.md 第七节](MODIFICATIONS.md)。 测试 337 → **465**。 --- ## 1.1.0 — 观感对齐 GPT 客户端 + 手感与性能 - **观感**:球比轨道大(轨道 28→20px、球 28px)、球是真的圆(DSH 的全局超椭圆要显式 opt-out)、 Max 档不再显示其他定位点、修掉 off 档左侧的蓝色月牙。 - **手感**:拖动不再跟手(一档一格)、按下=点哪去哪、快慢两档动画(320/200ms 迟滞)。 - **性能**:写回从 120ms 节流改成 **260ms 停顿去抖**(连续拖动 0 次写回)。 - **交互**:去掉键盘操作,官方菜单的键盘导航恢复原样。 - **工程**:包名改为 `better-dsh-codex-effort-slider`(与上游可并存)、补上 `pack-dist.ps1`、 清理两处死代码。 测试 265 → **337**。