Skip to content

Releases: Laplace-bit/dsh-smooth-stream

v0.8.0-rc.1 — Harness 兼容性验证候选版

Choose a tag to compare

@Laplace-bit Laplace-bit released this 07 Oct 07:39

Harness 兼容性验证候选版

  • 整合 #35、#40,修复 #36:Harness 0.1.7 / 0.2.x 的插件详情设置页、实时偏好和 Think 自动展开恢复正常。
  • 修复动态 Agent slot 注册重入、卸载组件恢复、通用 Agent 文本队列排空后无法唤醒。
  • 设置写入使用真实 volatile 配置及 revision 校验;移除绕过校验的回退。
  • 现代配置投影内核默认使用 Harness 原生滚动,设置中仍可开启插件接管;旧设置注册表保持默认开启。
  • 含跨行行内代码的段落禁用 text-box-trim,避免 #34 所描述的裁剪组合;保留代码换行。
  • 保留 #39 的助手原地替换、流程分流和单一滚动所有者。

验证状态

独立完整构建 Harness 0.1.7-rc.2、0.2.0-rc.2,真实 Chrome 设置保存/刷新、Think 展开/回答时折叠验证通过,控制台无错误。typecheck、build、产物新鲜度、8 项设置卡产物校验和真实配置服务集成测试通过。

完整 Vitest:275 通过 / 8 失败;剩余失败均在 main 对照中存在,涉及滚动几何与终态测试,仍保留待验证。Windows #25 重影与 #34 中文绘制丢失尚待同平台回归,因此本版为 prerelease,npm 发布到 next,latest 保持 0.7.0。

此版本的 peer 范围面向 Harness 0.1.7-rc.1 起及 0.2.0 预发布线;更旧内核的兼容分支保留,但不再属于声明支持范围。

完整验证记录

v0.7.0

Choose a tag to compare

@Laplace-bit Laplace-bit released this 05 Oct 03:32

更新内容

  • 新增流式输出速度预设,可通过设置界面与 RPC 选择。
  • 调整流式渲染与帧协调,改善对数渐显、结束贴底和行入场动画。
  • 适配 Harness 0.2.x 的 groupPart 行拆分、响应行滚动所有权与状态尾行。
  • 优化思考块折叠时机、高度限制及本地化显示。
  • 合入 PR #39:#39

验证与已知限制

  • 发布前类型检查、构建和产物新鲜度检查通过;设置与设置通道相关的 10 项测试通过。
  • 已在 Harness 0.2.0-rc.2 验证插件加载、设置读取及浏览器生命周期。
  • 旧全量测试尚未全部通过,部分测试仍依赖旧 Harness 接口和注册优先级。
  • Harness 0.2.x 中自定义设置卡仍需迁移至新的设置表单接口。
  • 在内置 assistant-step 尚未注册、插件先使用回退组件的组合下,后续动态注册仍可能触发重复 slot;卸载也可能留下行包装组件。内置组件已注册的常规流程验证正常。

安装 / 更新

dsh plugin --profile web add dsh-smooth-stream@0.7.0

完整变更:v0.6.1...v0.7.0

v0.6.1

Choose a tag to compare

@Laplace-bit Laplace-bit released this 11 Sep 04:48

🛠 修复:设置卡片恒显示「当前连接无法访问插件设置。」(#29)

DSH 0.1.5-rc.1+ 上,插件 Host 半区加载正常(逐字揭示、滚动接管都在跑),但 /smooth-stream RPC 通道从未挂载:内核 connection.rpc.handle() 在服务内部用未注入 webServer 的上下文解析 webServer,被 cordis 4.0.2 的 inject 守卫拒绝(cannot get property "webServer" without inject)。抛错发生在 inject fiber 内被吞掉,浏览器请求落到静态回退(POST 一律 405),卡片因此恒为「无法访问」,点「重试」无效。

本版新增插件侧兼容层(src/settings-channel.ts):

  • connection.rpc.handle() 仍是首选路径,老内核行为完全不变;
  • 服务调用抛错时,把同一 /smooth-stream 前缀路由直接挂到 webServer 上,鉴权沿用 connection 的公开方法 requestRejection(与 /api 同一套 Host/Origin + 浏览器会话闸门;该方法缺失时拒绝挂载,不做无鉴权暴露);
  • 请求/响应信封与端点词汇不变(settings-api.ts 原样保留),卡片控制器零改动;
  • 隔离宿主实测:POST /smooth-stream/settings.read 405 → 401(挂载),认证后读写均 200;新增 3 条宿主回归测试。

内核侧同根因影响面更大(生态内其它插件同样命中),仍在 deepseek-harness#5926 与 #6105 跟进;内核修复后,本插件的回退分支自然退役。

🛠 修复:流式结束时刻的 Y 轴上跳与回弹漂移(#28)

流式输出结束(揭示排空)瞬间,宿主执行 DOM 替换(卸载 turnStatus、挂载 turn-process/turn-tail、live→settled re-key),高度塌缩导致视口单帧上跳或数帧 ±20px 拉锯;此后为排水撑开的临时跑道(runway)与 flowPad 以约 1px/帧慢速退休(约 1.5s),表现为整屏内容像电梯一样缓慢下滑归位。

  • 锚点公式引入 scrollDelta 校正:measureReadingAnchor 此前未剔除滚动增量,把纯视口滚动(宿主贴底、用户滚动)误判为「布局把内容向下推」,向 flowPad 错误发放补偿;
  • 完成时刻快速交接(Fast Handoff):检测到流式结束立即清空跑道与临时 Pad、对齐自然贴底并释放所有权标记,不再启动 1.5s 的垫高与慢速退休循环——结束瞬间的拉锯与下沉回弹随之消除。

📦 安装 / 更新

dsh plugin --profile web add dsh-smooth-stream@0.6.1     # npm(镜像源同步完成后)
dsh plugin --profile web add github:Laplace-bit/dsh-smooth-stream#v0.6.1   # 或从 tag 安装

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@Laplace-bit Laplace-bit released this 04 Sep 08:18

✨ 新特性:动效偏好设置(closes #21)

系统开启「减少动态效果」时,插件的平滑打字机此前被静默绕过——不报错、面板灰灯、正文按官方原生渲染,且用户无从选择。新增三态设置 动效偏好(默认 跟随系统,保持无障碍语义):

  • 跟随系统:系统要求减少动效时直接呈现原始文本(现状默认);
  • 始终平滑:即使系统要求减少动效,仍保持平滑流式渲染(RDP 会话、性能工具、强制浏览器 flags 下的用户可选);
  • 始终原始:无论系统偏好如何,直接呈现原始文本。

修复配套问题:radio 选项若嵌套在外层 <label> 内属非法 HTML,浏览器会把点击路由走导致 onChange 永不触发——设置卡改为外层 div + 选项独立 label。同时修复:会话行挂载早于流式状态翻转时打字机不再启动的重臂问题。

设计与原始验证来自 @Zn-Dk(#21 / PR #22),已在提交中署名致谢;为保留 v0.5.0 的接管滚动设置与既有引用稳定性架构,在 main 重新实现而非直接合并。

🛠 修复:任务完成后折叠中间过程在接管下失效(closes #20)

回复任务完成后,官方宿主会把中间过程折叠为「已思考」摘要行。接管渲染后该折叠对答案内联 Think 失效(过程行折叠由宿主包装层完成,与渲染器无关;但答案内联思考的折叠需要渲染器消费 turnProcess prop 配合)。

修复后:完成后 Think 块正确折入官方摘要行,点击摘要行或浏览器页内查找可重新展开,与内置渲染器行为一致。

📦 安装 / 更新

dsh plugin --profile web add dsh-smooth-stream@0.6.0     # npm(镜像源同步完成后)
dsh plugin --profile web add github:Laplace-bit/dsh-smooth-stream#v0.6.0   # 或从 tag 安装

Full Changelog: v0.5.0...v0.6.0

dsh-smooth-stream v0.5.0

Choose a tag to compare

@Laplace-bit Laplace-bit released this 04 Sep 01:21

✨ 新特性:默认接管滚动

controlScroll 现在默认开启:插件默认接管会话滚动的底部跟随(此前需手动开启)。不希望接管的会话可在设置中关闭,滚动将完全交还宿主。

🛠 修复:完成期滚动回弹(“滚上去又弹回来”)

本次把完成级联期的视觉回弹按根因逐层消除,全部由逐帧轨迹黑匣子实证(新增 scripts/verify-follow-stability.mjs,pnpm probe:stability):

  • 塌缩衰减截断:完成级联(think 收拢 / 状态行交换)使滚动 floor 每帧塌缩 20-30px,scrollTop 1:1 跟随,而 paint-shift 衰减被 8px/帧封顶,未补偿余量直接画成 14-26px/帧的持续视觉下坠。衰减上限改为 max(8, 本帧 floor 降幅);引擎自身的退休滑移不受影响。
  • drain 起点过覆盖:handoff 重开跑道(baseline +72px)与塌缩并发时,任务内绘制的测量在 paint 落地前被 CSS 过渡前进作废,过覆盖量恰为塌缩回撤量(单帧 3-10px dip)。修复:完成期 observer/cleanup 的 shiftCeiling 冻结上升(入场软化契约豁免),上升一律由 settle 的 rAF 原子读-绘帧按确认增长资助;流式路径零接触,换行补偿保持不限。
  • 连同此前入库的交换帧领导权抢占、共享锚点账本、pad 退休循环修复,完成期抖动根因链七层全部关闭。

验证:vitest 182/182;test:smooth 全绿(Y 轴五场景 0 回弹);run-render-audit 10/10(历史 9/10 残余收口)。

🧹 其他

  • 新增滚动稳定性黑匣子探针(setter 间谍调用栈归因 + rAF 采样 + transform 变更监听;--inject-drop 阴性对照自校验、--seed 复现、违规导出 JSON 轨迹)。
  • 清理仓库内会话产物文档与工具残留文件。
  • 文档:记录 DSH 内核兼容版本范围。

📦 安装 / 更新

dsh plugin --profile web add dsh-smooth-stream@0.5.0     # npm(镜像源同步完成后)
dsh plugin --profile web add github:Laplace-bit/dsh-smooth-stream#v0.5.0   # 或从 tag 安装

Full Changelog: v0.4.3...v0.5.0

dsh-smooth-stream v0.4.3

Choose a tag to compare

@Laplace-bit Laplace-bit released this 01 Sep 07:35

🛠 修复:0.1.2-alpha.2+ 内核上主机端(host)入口崩溃

继 v0.4.2 的客户端双内核兼容之后,host 侧还有一处静态导入没覆盖到:@deepseek-ai/dsh-settings 在 0.1.2-alpha.2 起移除了 settingsNamespace() 辅助函数(rc 代际上它只是个校验恒等函数),host 入口的静态 ESM import 在模块链接阶段直接报 does not provide an export named 'settingsNamespace',整个插件树启动失败。

修复方式:host 入口不再导入该辅助函数,直接传原始命名空间字符串(两代行为一致);SettingsNamespace 品牌类型改为 type-only 导入,构建时擦除,host bundle 对 dsh-settings 已零运行时依赖。

已在真实内核台架上双代实测通过:@deepseek-ai/dsh@0.1.0-rc.6 ✅ / @deepseek-ai/dsh@0.1.2-alpha.3 ✅

📦 安装 / 更新

dsh plugin --profile web add dsh-smooth-stream@0.4.3     # npm(镜像源同步完成后)
dsh plugin --profile web add github:Laplace-bit/dsh-smooth-stream#v0.4.3   # 或从 tag 安装

Full Changelog: v0.4.2...v0.4.3

dsh-smooth-stream v0.4.2

Choose a tag to compare

@Laplace-bit Laplace-bit released this 01 Sep 04:29

🛠 修复:DSH 桌面版 2.0.4(内核 0.1.2-alpha)安装后白屏无法启动(#17)

内核 0.1.2 把 store 能力从 @deepseek-ai/dsh-client-runtime 拆分为独立的 @deepseek-ai/dsh-client-store 模块表种子,插件客户端入口顶层 require("@deepseek-ai/dsh-client-runtime/client") 在 0.1.2 内核上找不到模块,加载器一票否决整个插件树——桌面端表现为窗口白屏、仅剩「打开恢复模式」。现在改为运行时探针:优先 @deepseek-ai/dsh-client-store,回退旧路径,0.1.1-rc 与 0.1.2-alpha 两代内核同时兼容。

同时修复打包层:@deepseek-ai/dsh-settings 不再作为固定版本 dependencies 发布(会平铺进桌面 hoisted profile 顶层,触发内核版本一致性拦截),改为 required peerDependency,运行时经模块回退链解析宿主自带副本。

感谢 @MichengAI 在 dsh-archive-manager 的双内核适配先例,以及 issue #17 反馈者的完整复现信息。

✨ 此前未发版的提交(随本版一并发布)

  • 行内代码换行不再与下一列表项重叠(#13):根因是插件自家 li 的 text-box-trim 与宿主 inline-flex code 元素叠加,已实证修复并附 probe-overlap 回归台架
  • 换行平滑激进版定稿:尾行平滑优先、头部允许步进,新增 FOLLOW_PAINT_SHIFT_MAX_STEP_PX 平衡旋钮与悬停挂起守卫
  • 平滑度审计台架:scripts/run-render-audit.mjs 与跟随探针(probe-tailbob / verify-overflow)入库
  • 文档:README 与营销页围绕「丝滑流式、0 重排、0 抖动」重新组织

📦 安装 / 更新

dsh plugin --profile web add dsh-smooth-stream@0.4.2     # npm(镜像源同步完成后)
dsh plugin --profile web add github:Laplace-bit/dsh-smooth-stream#v0.4.2   # 或从 tag 安装

Full Changelog: v0.4.1...v0.4.2

dsh-smooth-stream v0.4.1

Choose a tag to compare

@Laplace-bit Laplace-bit released this 26 Aug 08:44

🔧 修复:外部插件的 flow 兄弟元素随会话滚动(PR #10)

感谢 @qq564020069!其他插件注入会话流的兄弟元素(如 dsh-meow-memory 的折叠栏)此前不参与跟随滚动的位移变换,在滚动到底部时会被滑动的消息行盖住。现在 flow 列的所有直接子级统一参与等量位移,视觉顺序恒定。

同时修复:从 github: 安装时 esbuild 构建脚本被 pnpm 拦截导致 prepare 失败——已在 package.json 声明允许清单,git 安装开箱即用。

📦 安装 / 更新

dsh plugin --profile web add dsh-smooth-stream@0.4.1     # npm(镜像源同步完成后)
dsh plugin --profile web add github:Laplace-bit/dsh-smooth-stream#v0.4.1   # 或从 tag 安装

注意:git 安装首次使用时按 CLI 提示把打印的精确 key 加入 profile 的 pnpm-workspace.yaml allowBuilds。

Full Changelog: v0.4.0...v0.4.1

dsh-smooth-stream v0.4.0

Choose a tag to compare

@Laplace-bit Laplace-bit released this 26 Aug 08:43

✨ 新功能:回合处理完成后自动折叠(#4)

回合结束后(出现结束标记且无运行中工作),思考块、工具调用、上下文注入与中间过程输出收起为一行「已处理 X秒」摘要,只展示最终回复——接近 Codex 的阅读体验。

  • 设置 → 插件 → 丝滑流式 → 完成后自动折叠(默认开启),持久化、即时生效
  • 流式期间不干预;点击摘要可随时展开 / 收起,手动状态独立保留
  • 纯文本回复不生成摘要行
  • 其他插件的自定义工具视图不会被误折叠(如 dsh-pianist 的钢琴卡)
  • 摘要行参与跟随滚动位移,滚动时与上下文严丝合缝

同时从根源解决了 #9:原生实现取代外挂 dsh-auto-collapse,两者不再需要共存。

Full Changelog: b8c5eef...05e1fe2

dsh-smooth-stream v0.3.4

Choose a tag to compare

@Laplace-bit Laplace-bit released this 20 Aug 06:21

dsh-smooth-stream brings fluid streaming rendering and silky scrolling to the DeepSeek Harness Web UI.

v0.3.4

  • Keeps the progressive renderer active through stream completion, including the final Markdown layout change.
  • Holds the continuous scroll follower until growing content has settled.
  • Separates screen-reader announcements from visual animation frames and announces only newly revealed text.
  • Expands the streaming and follow test coverage around completion, layout growth, and accessibility updates.

Install

pnpm dsh plugin --profile web add dsh-smooth-stream

Update

dsh plugin --profile web update dsh-smooth-stream

npm package · installation guide · how it works