Skip to content

Releases: Bai-2008/dsh-better-panel

1.3.10 — 自建浮层接管官方模型席 + 毛玻璃观感

Choose a tag to compare

@Bai-2008 Bai-2008 released this 13 Oct 16:37

更新日志

本分支基于上游 dsh-codex-effort-slider 1.0.0。
下面是相对上游的全部改动(按版本倒序)。

文档分工:入门/安装/使用/FAQ → README.md;
实现细节(接管时序、DOM 锚点、色彩与粒子数学、测试台策略)→ ARCHITECTURE.md;
真机事故复盘(现场 → 根因 → 修法 → 断言,九条)→ INCIDENTS.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 条。测试 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 条。测试 887 → 902。


1.3.8 — 换模型时的默认档位改成「正中(偶数档取中间的下一个)」

默认档位 = floor(n/2):4 档 → 第 3 档、5 档 → 第 3 档、2 档 → 第 2 档。
两处共用同一条规则:点击模型时写回宿主的档位、目录里没有明确档位时滑条停在哪;
会话里明确存着的档位仍优先。宿主的 defaultEffort 不再参与定位。

细节(含"为什么以前没被发现")→ INCIDENTS.md 第 9 条。测试 868 → 887。


1.3.7 — 修:面板永久卡在「会话目录未就绪」

插件级 inject 补上 remote / remote.session:Cordis 的服务访问跟着调用方 ctx 走,
而接管官方席之后我们是 directoryFor() 唯一的调用方(官方组件不再渲染、命中不了它建好的缓存)。
测试台同时复刻了这条规矩 —— 少声明一个服务,离线套件立刻红。

细节 → INCIDENTS.md 第 2 条。测试 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 条。
  • package.json 的 UTF-8 BOM 让整包被宿主丢弃(rows: []、界面毫无反应)→
    INCIDENTS.md 第 4 条;同时补上反面规则:两个 .ps1 必须带 BOM。

测试 839 → 853。


1.3.4 — 三条真机反馈

  1. 流式输出时面板消失:聊天区自动滚动触发了"滚动即关闭",改成只重定位、不关闭;
    触发器几何为 0(宿主 hidden 了控件行)时保持原位。
    顺带修掉一个隐藏 bug:位置以前是渲染时现读的,重定位不改 state → React bail out → 面板纹丝不动;
    现在 pos 进入 state。
  2. 浅色主题星尘发黑:星尘固定浅色(它永远落在蓝紫填充层上,跟随主题令牌会在浅色下变深色)。
  3. 面板右缘对齐输入框右缘(以前是左缘贴触发器)。

细节 → INCIDENTS.md 第 5、8 条。测试 823 → 839。


1.3.3 — 空目录不再是一片空白

  • 提示/失败清单都渲染出来,且视口高度算得下它们(以前 44px 装不下 48px 的提示,
    被 overflow:hidden 整句裁掉);
  • 逐 provider 的失败清单按官方文案渲染;
  • load 失败按退避重试 + 心跳兜底;"就绪但空"主动刷一次全局目录(8s 冷却、最多 3 次);
  • 按钮文案如实("正在加载模型…")。

细节 → INCIDENTS.md 第 1 条。测试 806 → 823。


1.3.2 — 接管官方那颗模型席按钮(priority: -1 遮蔽)

官方那颗席按钮注册在 single 槽 conversation.input.model(官方没写 priority = 0),
single 槽"同优先级撞了会抛错、换优先级即遮蔽(最低者渲染)",所以用 priority: -1 接管 ——
输入区只剩一颗按钮,没有第二颗。三条时序都有退路(官方席先声明 / 工具行先声明 /
官方席始终没有),最差回到"两颗按钮",绝不会两边都没有。随之接过来两条 owner 语义
(locked、紧凑态两个 CSS 变量)。代价:官方菜单没有入口了(/model 命令仍在)。

细节 → ARCHITECTURE.md 第 3 节。测试 771 → 806。


1.3.1 — 二级页模型列表按「新发布 → 旧发布」排序

宿主目录没有发布日期字段,所以顺序由 id / 显示名里的两个信号算出:
版本号降序(逐段按数字比)→ 同版本时别名在前、快照版在后 → 同为快照按日期降序 →
认不出的沉底并保持宿主原顺序(稳定排序)。

细节 → MODIFICATIONS.md 第七节。测试 751 → 771。


1.3.0 — 自建浮层(第二个界面)

按参考实现复刻自建模型面板:收起态一颗按钮、两级面板(provider → 模型 + 搜索)、
常驻推理等级卡片、档位弹层;写回仍走去抖/去重;新增"无档位模型也能选中(只切模型)"。
官方菜单那条路保留但默认关闭(ENABLE_OFFICIAL_MENU_SLIDER = false,两套互斥)。

工程上两处踩坑记录(chunk 必须自注册、模块表按包名建表)→
ARCHITECTURE.md 第 1 节。测试 465 → 751。

无二次开发需求仅需下载better-dsh-codex-effort-slider-1.3.10.zip,让DSH安装插件压缩包即可

better-dsh-codex-effort-slider-1.1.0

Choose a tag to compare

@Bai-2008 Bai-2008 released this 09 Oct 14:29
f2a8e5e
v1.1.0

优化制作