Skip to content

Releases

v0.3.14 — context-injection rows in the reader's line language; user-message text on its own line

Choose a tag to compare

@Vinzelles Vinzelles released this 21 Oct 02:14

0.3.14

  • 修复用户消息里「缩略图与正文并排」:宿主在槽位外再包一层 display:contents 的 [data-slot],真正的 flex 项是它里面的块,原来只约束 .blocks 的直接子元素,文字块因此按内容宽度落在缩略图右侧。补一条穿透槽位的选择器后,真实引擎实测(1440 与 520 两种宽度)都是「88px 方图在上、正文独占整行」:块流 250×120.4 = 88 + 10 gap + 22.4,正文字块 width 250、flex-basis: 100%、位于方图下方 10px;npm test 446 项全绿,新断言锁住槽位选择器。

  • 上下文注入行与系统提示词行改用阅读器自己的行语言:此前是宿主 24px 折叠行(14px 副文本比 13px 标题还大、hover 只有字色变化、展开体是 141px 代码视口),夹在 32px 的过程行之间矮一截。现为同一套 Line:32px 行高、5px/8px 内距、8px 圆角、13px + 宿主字号的正文层级,hover 与展开共享 --cv-row-hover / --cv-row-open 表面,16px 图标槽在 hover/展开时换成右→下箭头;tool-registry 这类生产者名降为 --cc-text-500 副文本,与角色名之间是过程行同形的 2px 圆点(corner-shape: round)。保留 data-context-source、data-context-summary、data-context-injection-body、data-context-form、data-system-prompt-body 与 data-reader-line-* 标记。

  • 展开体改用阅读器共享详情面:1px --cv-detail-border、--cv-detail-radius(10px)、--cv-surface 底色、左缩进 --cv-indent(28px),仍以 --cv-process-max-height(320px) 封顶并在内部滚动,等宽字体与代码字号不变;折叠时不再挂载 body(原来先渲染再由动画裁剪)。

  • 实测(真实引擎,组件 SSR 标记 + 仓库样式表,因为宿主此时仍在服务启动快照里的旧 bundle):行 726×32、padding 5/8、圆角 8、标签 13px/20px;hover 底色 rgba(20,20,19,.055)、展开 rgba(20,20,19,.035);图标 opacity 1→0、箭头 opacity 0→1 并 rotate(90deg);展开体宽 690(726−28−8)、margin 6px 8px 12px 28px、1px rgba(20,20,19,.1)、圆角 10px、max-height 320px、13px/18px 等宽。npm test 446 项全绿,新增 tests/context-injection-row.test.ts 8 项锁住行语法与详情面。

v0.3.11 — 表格单层外框;0.2.x / 0.3.x 首批正式发布

Choose a tag to compare

@Vinzelles Vinzelles released this 19 Oct 18:33

0.3.11

  • 修复表格的双重底边:外层容器统一绘制一层外框,内部表格无外边框,最后一行不再重复画底线。保留行间分隔、表头底色、表格间距和横向滚动;只有表头的表格采用相同规则。

自 v0.1.15 起的累计变更

这是 v0.1.15 之后的第一个正式发布,v0.1.15..v0.3.11 共 104 个提交、199 个文件(+21,701 / −12,196),包含此前未单独发版的 0.2.x 阅读页重构与 0.3.x 全过程(记录呈现、过程分组与折叠、正文/界面/代码字体继承、代码卡片与表格框线、回退可见性、实时跟随与阅读保护等)。逐版明细见 CHANGELOG.md。

兼容与安装

  • 宿主:DeepSeek Harness 0.2.0-rc.2(peer 依赖精确钉在该版本;@deepseek-ai/cordis 4.0.4、react 18.3.1)。
  • 通过 dsh-market 安装,或直接让助手安装 https://github.com/Vinzelles/dsh-clearview;附件的 dsh-clearview-0.3.11.tgz 为同一提交的构建产物。
  • 本版 npm test 共 420 项通过;表格单层边框等视觉结论来自真实主题下的浏览器验证。单元测试通过不等于页面已加载,安装后仍需在真实宿主验证。

v0.1.15 — 0.1.2+ client-store boot fix, generic call card, compat observers

Choose a tag to compare

@Vinzelles Vinzelles released this 12 Sep 13:26

0.1.15

  • 未接入记录统一降级为「工具调用」默认卡片。此前阅读页遇到本构建未接入的记录
    类型(如 AgentTeams 投射的 agent-teams 节点、更新内核新增的 kind、append-surface
    未认领的兜底记录)会显示「此记录类型暂未接入阅读页 / 未识别的会话记录」的
    css.unknown 灰盒,读起来像阅读页自身的缺口。现在这些记录一律渲染为默认提示卡
    (NoticeCard info 样式,与命令记录/工作流记录同款):标题「工具调用」,meta 保留
    记录类型(unknown kind 时取 payload 的 type 或节点 id,记录仍可辨识),展开即见
    原始记录 JSON(RecordJson,与其余卡片同一「卡片唯一可展开」节奏)。新增 DOM 标记
    data-reader-generic-call;command-input 无文本的回退路径共用同一组件。
  • 修复 0.1.2 内核上插件「启动即失败」(启动页 Failed to load plugins)。0.1.14 的
    结论「0.1.2 由 client-modules 的 compat 种子同名承接 dsh-client-runtime/client」
    不成立:0.1.2-rc.1 的启动壳只预置 8 个平台种子(react、react/jsx-runtime、
    react-dom、react-dom/client、@deepseek-ai/cordis、@deepseek-ai/dsh-client-store、
    @deepseek-ai/dsh-client-ui-slots、@deepseek-ai/dsh-client-ui-primitives),
    既没有 runtime 包、也没有它的 compat 别名。当时「看起来能用」只是因为该机内核文件被
    手工打过一次 compat 补丁——内核重装/升级(profile 的 node_modules 是指向内核的
    junction)即失效,插件立刻退回
    client-modules: require("@deepseek-ai/dsh-client-runtime/client") missed the module table。
    该错误是bundle 级硬失败而非局部降级:值导入被客户端构建提升成工厂顶部一次写死的
    require,宿主模块表答不上来时整条 loader entry 的导入抛错,插件全部功能不加载。
    修复:store.ts 不再静态导入 defineStore,改在懒 CJS 工厂作用域内用模块表解析器
    逐条 try/catch 查表——@deepseek-ai/dsh-client-store(0.1.2+ 平台种子)优先,
    @deepseek-ai/dsh-client-runtime/client(0.1.1 真实预载模块)兜底,两条都缺失才抛出
    写明尝试记录的明确错误;类型侧仍走 import type(编译期擦除,不产生 require)。
    构建产物因此只剩 react、react/jsx-runtime、@deepseek-ai/dsh-client-ui-primitives
    三个双版本共有外部依赖(0.1.1 与 0.1.2/0.1.3 的种子表交集的子集)。
    验证方式不再依赖「有人说能用」:把本机内核恢复为未打补丁的 0.1.2-rc.1 原版后,
    用 headless Chrome 真实启动 Web UI——dsh-clearview 五个 compat 补丁
    (composer-readability / memory-tail-keep / perf-guard / rewind-bridge /
    turn-metrics-footer)全部 applied,无任何 loader 报错;恢复打补丁内核后同样零回归
    (两条路径都实测过)。npm test 150 项全绿。
    新增 tests/client-store-resolution.test.ts 回归锁 3 项:① src/client 禁止对已删包做
    值导入(TS 编译器 API 判定,import type 与内联 { type X } 放行);② 引擎解析表必须
    两个拼写齐全且新平台拼写在前(防止宿主另装同名 compat 种子时抢在真实引擎之前);
    ③ 构建产物不得再出现写死的 legacy require。三项均做过反向验证(重新引入值导入后
    测试确实报 store.ts: { defineStore } 失败)。
    另注:同环境里 @dsh-external/dsh-prompt-enhancer,以及 dsh-tavily / dsh-notification
    等插件仍对已删除的 runtime 包做值导入,属同一类缺陷,需各自仓库按同样方式修;
    本仓库的改动只覆盖 dsh-clearview 自身,不再需要任何内核侧补丁。
  • 0.1.5-rc.2 内核实测通过。0.1.5-rc.2 的平台种子表扩到 9 项(新增
    @deepseek-ai/dsh-client-ui-dockkit),本插件依赖的三项外部(react、
    react/jsx-runtime、@deepseek-ai/dsh-client-ui-primitives)与 store 引擎的
    首选拼写 @deepseek-ai/dsh-client-store 仍在表内;用 headless Chrome 实启
    Web UI 复核:插件正常加载,五个 compat 补丁(composer-readability /
    memory-tail-keep / perf-guard / rewind-bridge / turn-metrics-footer)全部
    applied,compat 样式注入成功,无任何 loader 报错。槽位
    conversation.view / conversation.session / conversation.input.dock 与
    entriesOfSlot 在该版内核中同样齐备。

v0.1.14 — DSH 0.1.2 compatibility hardening (0.1.9–0.1.14)

Choose a tag to compare

@Vinzelles Vinzelles released this 07 Sep 09:32

DSH 0.1.2(0.1.2-rc.1)兼容修复总览——自 v0.1.8 以来的全部版本,以 v0.1.14 收口。

0.1.9 核心更新导致插件整体失效的修复

  • 0.1.2 客户端平台重组:useSession 快照瘦身(chat/pending 拆分为独立标准钩子)——新增 compat 会话快照桥,合成回旧形状,0.1.1 零开销透传
  • 原生会话 store persist 键收敛 dsh.conversation.chat → dsh.conversation:入口绑定谓词放宽为两版共有身份(persist 前缀 + setView)
  • workspaces 服务失去 openPath/listDirectory:openFile/listDirNames 改按特性检测走 remote.session.openWorkspacePath / remote.directoryPicker.list
  • defineStore 固定走两版唯一共有的 dsh-client-runtime/client 取径(0.1.2 为 compat 种子)

0.1.10 对话流节点全覆盖

  • 接入 0.1.2 新增投影:turn-process(阅读页自有过程折叠,不渲染)、system-prompt(新增「系统提示词」折叠行,含 preamble 定位)
  • 接入条件触发的老节点:command-input(用户样式块)、workflow-run(汇总记录卡)、unknown(重文案为「未识别的会话记录」)
  • 全部载荷防御性窄化(node-payloads),不可读回退原始记录卡,不再出现「暂未接入」误报

0.1.11 轮次统计行修复 + token 用量

  • normalizeSnapshot 双形态归一(0.1.1 完整快照 / 0.1.2 扁平 chat 快照),修复统计行整段消失
  • 0.1.2 新增 tokenUsage:按字段存在性插入「用量 N tok」(原生 formatTokens 同规则);NaN 边界守卫

0.1.12 上下文注入原始键名修复

  • 14 个词典键 0.1.2 迁至 ui-chat 'chat' NS:locale-bridge 在 seat 回显键名时回退内置 zh 词典(与原生文案逐字一致),0.1.1 命中原样透传

0.1.13 折叠区展开即崩修复

  • 0.1.2 primitives 把 JsonTree/TerminalBlock/ReadBlock/DiffBlock/SearchBlock/WebBlock/MarkdownText 的文案从内置默认改为必传 labels:补齐 7 组词典 + 包装层,全部调用点接入

0.1.14 全面兼容性核查收口(本版本)

  • 功能全集 × 0.1.2 实际契约矩阵核查(节点 kind 全集、快照形状、locale 桥、槽位 props、服务注入、compat DOM 锚点、工具证据契约)
  • 修复 JsonBlock.truncatedLabel(0.1.2 删除内置默认且无守卫直调;>20k 原始记录展开即崩——工具大参数卡最易触发):JsonBlockL 包装 + 回归锁测试
  • CodeBlock 复制文案显式回退(0.1.2 内置默认删除,防空白按钮)
  • memory-tail-keep(收尾总结防吞)改用 normalizeSnapshot——该防护在 0.1.2 上自 0.1.9 起静默失效,本版本恢复
  • 退役零消费者的画布色变量计算(每 5s getComputedStyle + 主题观察者)

验证:typecheck 干净;147/147 测试;构建外部依赖仍为四枚双版本共有种子;功能矩阵中未发现其余必现缺陷。

v0.1.8

Choose a tag to compare

@Vinzelles Vinzelles released this 05 Sep 17:04

0.1.8

  • 修复「一直停在最底部、结束时却出现回到最新按钮且位置有偏移」:阅读视图的
    「阅读守卫」里 focused() 此前把任意位于阅读器内、持有 DOM 焦点的元素都当作
    暂停自动跟随的依据。但用户在阅读中点一下任意控件(展开/收起过程的 Disclosure、
    过程/工具页签、可滚动的思考卡片 tabIndex=0)就会留下「偶然焦点」,它并非用户
    正在键盘操作,却会静默暂停跟随——末尾的内容追加便拉开真实偏移,回合结束时活动条
    消失、跳转坞(detached && !activity.key)随之出现,点下去才看见位置其实偏了。
    修复:focused() 收窄为仅文本编辑面(textarea / 文本 input / contenteditable)
    才视为焦点守卫;阅读器内本无文本输入,故偶然焦点不再停摆跟随,视口继续贴底,
    偏移与误报的跳转坞消失。文本选择守卫(selected())与决策表不变(选中文本时仍
    应暂停跟随),97 项测试全绿。DOM 复现:聚焦 Disclosure 按钮后底部追加 400px 内容,
    修复前 gap 444/视口停摆/跳转坞出现,修复后 gap≈0/视口贴底/无跳转坞。

  • 修复思考卡片吞掉滚轮导致「鼠标在主流程区滚动无反应」:.reasonViewport
    (思考卡片视口,overflow: auto 的嵌套垂直滚动区)此前设了
    overscroll-behavior-y: contain。当滚轮落在这个视口的顶部或底部滚动边缘时,
    滚轮事件被完全吞掉(既不滚动卡片、也不回传外层阅读器滚动区),实测
    outerDelta=0;而多轮会话里几乎每轮都有思考卡片、且思考内容常超出 224px
    折叠预览(或 560px 展开上限)形成可滚动视口,主流程大面积出现滚轮死区——
    表现为「鼠标处于 mainFlow 区域时滚动无反应、必须移到两侧空白才能滚动」,
    是否触发取决于鼠标位置与卡片内部滚动位置,故非必现。修复:去掉该
    contain,边缘滚轮按嵌套滚动惯例回传外层(实测恢复 -100 量级回传,与
    .toolRaw、pre、上下文注入块等其他嵌套滚动区一致),CSS 处加了注释防止
    回归。

  • 修复长会话向上滚动时滚动位置突然跳到更上方(content-visibility 占位跳变 + 原生 scroll anchoring 误补偿):重会话(内容规模或轮次数超阈值)下 perf-guard 点亮 data-dshcp-heavy,已关闭轮次以 content-visibility: auto 离屏渲染;但从未渲染过的轮次使用 480px 回退占位。向上滚动读历史时,滚动手势中途发生占位 → 真实高度(数千 px)的交换,原生 scroll anchoring 的锚点位于交换盒内部或相邻处,会按「交换引发的重排」做补偿,把视口拽到明显更早的位置(用户报告的「向上滚动时突然跑到上方得多的位置」;真实环境实测每次交换步 ~146px 反向跳变,且 contain-intrinsic-size: auto 的「记住上次高度」在当前 Chromium 的后续滚动轮次里不可靠——占位回退仍复现,多次上滚反复触发)。修复:只有真实高度已测得的轮次才参与离屏渲染——perf-guard 的 2s 低频轮询为已关闭轮次点亮 data-cv-armed 并把实测高度写入内联 contain-intrinsic-size(CSS 规则相应加上 [data-cv-armed="1"] 门控);从未渲染的轮次保持完整布局(真实几何,向上滚进入时不发生尺寸跳变),已渲染轮次再离屏时占位 = 真实尺寸,elide/render 交换尺寸中性。真实环境实测:修复前 18 步上滚在交换步出现 -146px 跳变,修复后 18 步 0 跳变,重会话的离屏渲染收益保持不变。新增 tests/cv-arm.test.ts 覆盖 cvArmSize 边界。

  • 新增「本会话文件改动」面板:会话结束后在对话流末尾按 新增/修改/删除 三类汇总:
    阅读视图在对话流最底部(回合结束后出现)展示一个只读汇总卡片,把本会话实际发生
    的文件变更按三类分组列出,路径用相对路径(越出会话工作区时保留绝对路径并折叠),
    点击路径按会话 cwd 解析后交给工作区打开器打开。分类基于工具调用证据而非猜测:
    write/str_replace_editor 等文件工具的创建/更新结果视图(「Created file」/
    「Updated file」文本、空 diffs 元数据)判新增或修改;edit 恒为修改;无视图时回退
    参数里的文件路径(默认修改);删除没有专用文件工具,只能来自终端命令——对
    rm/Remove-Item/del/git rm 等移除动词与 mv/Move-Item/git mv 移动(两路径才计:删源

    • 增目标)做成功命令的词法解析(失败命令、动态变量、通配、根目录等一律不计),
      并按路径净状态折叠(先建后删=净零不显示、最后删除=删除、首次创建=新增、否则
      修改)。宁缺勿错:无法判定的调用不计入,未知工具默认修改而非新增。可见性与
      对话流一致地收敛:对话执行中、有排队消息、本会话有后台任务(运行/停止中)或
      窗口仍在加载时整卡卸载,回合结束且无运行内容时淡入出现;窗口未覆盖全部历史时
      标注「仅已加载记录」,被回滚(rewind)隐藏的轮次不计入(与可见转写一致)。
      无任何文件改动时显示「无文件改动」。纯展示,不改动对话流原有内容与交互;新增
      tests/file-changes.test.ts 22 项(分类、shell 词法、净状态折叠、路径相对化等)。
  • 补齐非命令类单行操作执行时的状态动画:工具行的状态呼吸(状态徽标脉冲 + 摘要扫光)
    此前只挂在 running 相位上。终端命令执行期长,扫光可见;而 write/edit 的大部分可见
    时间处于 preparing(模型正在流式生成工具输入,写文件时即整个文件内容),read/搜索等
    的真实执行耗时又在毫秒级——running 一闪而过,这些行只剩一个小圆点在呼吸,观感上
    「没有动画」。现在两个在途相位(preparing/running)共用同一套状态动效,与行底色高亮
    (本就覆盖两相位)对齐;data-motion=off 与 prefers-reduced-motion 降级清单同步
    补上 preparing 选择器。

v0.1.6

Choose a tag to compare

@Vinzelles Vinzelles released this 04 Sep 03:16

dsh-clearview 0.1.6 — prebuilt plugin tarball (npm-style package layout).