Skip to content

Releases: NativeDog1/dsh-boot-animation

v0.4.0 —— 按会话固定片头

Choose a tag to compare

@NativeDog1 NativeDog1 released this 30 Sep 09:37

0.4.0 — 按会话固定片头

新增:全局片头之外再加一层「会话覆盖」。

片库每行多一个「仅本会话」按钮:只让当前这个会话播这一段,不动全局选择。该行标蓝底
「本会话」徽章,面板顶部写明本会话固定播放哪一段,并带「取消(回到全局)」。

优先级:会话覆盖 → 随机 → 全局选择 → 环境变量 → intro.mp4 → videos/ → 内嵌内置片。
会话覆盖连「随机播放」也压得住(钉住一个会话之后又被塞一段随机片,那不是钉住的意思);
显式 mode=random 仍然不被覆盖。

兼容性

DSH 版本线 状态
0.1.5-rc.x / 0.1.7-rc.x ✅ 支持(桌面版旧内核、npm i -g 那条线)
0.2.0-rc.x ✅ 支持(桌面版新内核、@next 那条线)

本插件不声明任何 @deepseek-ai/dsh-* 的 peerDependencies,因此不会被 0.2.0 起的
版本兼容闸门跳过
(那道闸门会把 peerDependencies 对不上的插件整包跳过,现象是"装上了
但没生效",且不报错)。宿主形状的变化由 verify-blank(13 种宿主形状)、
verify-session-id、verify-client-boot 三项测试兜底。

安装

dsh plugin --profile web add github:NativeDog1/dsh-boot-animation

装完重启一次 DSH 服务,然后在浏览器按 Ctrl+Shift+R 硬刷新(客户端 bundle 是
immutable 长缓存)。

实现要点

  • 覆盖层进 selection.json(schema v3,新增 conversationOverrides),与全局选择
    同一个文件、同一套原子写与损坏自愈;v2 文件自动迁移(补一个空层)。
  • 键值两侧都按与 selectedClipId 相同的规则校验:路径、active 别名、非字符串一律丢弃,
    手改文件也无法从这张表塞进媒体路径。
  • 表有上限(200),淘汰最久没被设置的那个(重新设置会把键移到末尾)。
  • 钉住指向的片段被移走/删除时回落常规链并记 conversation-override-stale ——
    绝不报错、绝不黑屏,也不删除那条钉住(文件回来就自动复活)。
  • videos.json / status.json 只公布发问那个会话的 conversationClipId,整张表不出主机。
  • 不带 ?session= 时每个回答都与 0.3.0 逐字节一致;POST /select {id} 与
    mode=active|random|selected 的语义都没变。

接口

GET  /resolve.json?mode=active&session=<id>
GET  /videos.json?session=<id>   /status.json?session=<id>
POST /select {scope:'conversation', sessionId, id}     # id:null 取消

测试

npm run check 共 15 组,新增 verify:conversation(70 项,驱动真实路由与真实构建产物)。