Skip to content

Releases

v0.2.4 — 去掉旧截图 + 文档校验

Choose a tag to compare

@shellexy shellexy released this 16 Oct 07:40

按反馈把旧的对话框截图从 README 里去掉了(docs/dialog.png 文件一并删除,需要时可由 git 历史取回),README 现在只保留新的悬浮大纲截图。

新增 tools/verify-docs.mjs 并接入 verify-all.sh(离线验证从三个变四个),把「文档漂移」也变成可复跑的东西:

  • 中英 README 里每个相对链接/图片都必须真实存在(悬空引用直接红)
  • 徽章的图片与其链接目标都必须是绝对地址(页内锚点除外——npm 会改写图片地址,但不会改写链接)
  • 两版互相链接;docs/ 下不允许存在无人引用的孤儿资产(这次删图正是这类改动)
  • files 白名单必须包含两个 README(npm 用发布物里的 README 渲染)

顺手清掉了遗留的旧昵称「稿本」,并把 tools/README 里的「三个离线验证」更正为四个。功能代码与 0.2.2 相同,本版仍是文档层。


Documentation release: the old dialog screenshot is gone from both READMEs (and from the tree), a new tools/verify-docs.mjs keeps relative links, badges and docs/ assets honest, and stale mentions of the pre-rename nickname were cleaned up.

v0.2.3 — 新截图 + 简介改为「显示大纲悬浮栏」

Choose a tag to compare

@shellexy shellexy released this 16 Oct 07:36

README 换用作者提供的新截图(docs/outline.png:右上角悬浮按钮 + 大纲 · 15 面板、1 行提问 + 2 行回答预览、当前轮左侧高亮、面板底部停在输入框上方),中英两版都在编辑对话框截图后引用它。

简介统一为 「让 dsh 可以修改 AI 回答内容 + 显示大纲悬浮栏」(英文 Edit an AI answer's content in dsh, and show the outline in a floating panel),package.json 描述与 GitHub 仓库描述同步;原文案里的「常驻大纲侧栏」已不准确,一并去掉。

「目录」一节补上现在的实际行为:提问 1 行 + 回答 2 行预览、纯图片/纯命令的轮次回落成轮次号、面板用满对话栏高度并停在输入框上方、点面板外任意处(或 Esc / ✕ / 再点按钮)收起。

功能代码与 0.2.2 相同,本版只是文档与截图——但 npm 页面用发布物里的 README 渲染,所以要让它看到新截图与新简介,就得发这一版。


Documentation-only release: the READMEs now show the new floating-outline screenshot and the description reads "edit an AI answer + show a floating outline panel".

v0.2.2 — 悬浮大纲更紧凑(去掉轮次行 / 用满栏高 / 点外部收起)

Choose a tag to compare

@shellexy shellexy released this 16 Oct 03:48

悬浮大纲更紧凑,也更顺手

接着上一条反馈调的几处:

  • 去掉「第 N 轮」整行:每行直接是预览内容,一次能多看约两倍的轮次。轮次号没有丢——它留在悬停提示和 aria-label 里;只有该轮既无提问也无回答预览时(纯图片、纯命令的轮次,宿主自己的刻度条也是靠轮次号标注这些),才用轮次号占那一行,避免出现空盒子。
  • 预览密度:提问 1 行、回答 2 行,行内边距略微收紧——一行约 70px。
  • 用满对话栏高度:面板高度不再固定 min(70vh, 560px),而是量出来 = 对话滚动区高度 − composer 高度(读宿主在滚动区上发布的 --dsh-composer-height,读不到时退回刻度条同款 152px 兜底),所以既拿到了整栏高度,也不会盖住发送按钮。
  • 点其他区域自动收起:window 上捕获 pointerdown——面板与其按钮之外的地方按下就收起;面板内部按下(换一轮跳转)不收起;Esc / ✕ / 再点按钮照旧。收起也会记住状态,切会话不会自己弹回来。

验证

bash tools/verify-all.sh --e2e 全绿(18 + 6 + 20 + 7 项)。Browser 半的测试替身这轮又长了一点:tools/lib/mini-react.mjs 现在会把元素挂到 ref 上并实现 contains,所以「点内部不收起 / 点外部收起」这种真实交互也能离线断言;另外新增了「空预览轮次回落成轮次号」和「面板高度按栏高算出」两条断言。


A denser floating outline: no "Turn N" line (the number only stands in for preview-less turns, and stays in the tooltip and aria-label), a one-line question and two-line answer preview per row, a panel as tall as the conversation band above the composer, and a captured pointerdown that collapses it when you press anywhere outside.

v0.2.1 — 悬浮大纲 + 修订分支保留原标题

Choose a tag to compare

@shellexy shellexy released this 16 Oct 03:40

大纲改成悬浮窗,修订分支保留原标题

两个来自使用反馈的调整。

大纲:右侧栏页签 → 对话区悬浮窗

原来把大纲做成右侧栏的常驻页签:不打开侧栏就看不到,打开了又占掉一整列。这一版改成:

  • 对话区右上角一个悬浮按钮(钉在对话滚动区右上角,跟随窗口与侧栏变化),点开是贴着对话列右侧的悬浮列表;
  • 列表内容不变:每个已开始的轮次一行(提问 + 回答预览)、当前轮高亮、点击跳到该轮(未载入的轮次先按 turnOutline 的 seq 翻页再滚动);
  • 悬浮窗不点外部关闭(只在 ✕ / 再点按钮 / Esc 关闭),每个会话记得上次的开关状态——这样才能一边读一边挂着;
  • 不再有任何 sidebar.right.* 注册;宿主原本那条悬停刻度条我们一行都没改。

实现上是「会话作用域桥接 + 根作用域悬浮层」:conversation.input.dock 里的桥接项渲染 null,负责发布轮次数据与携带会话身份的跳转闭包;shell.overlay 里的悬浮项负责渲染。会话没挂载时它整体消失。

修订:新分支不改标题

  • 新分支沿用原标题(连标题一起从提问处 fork 继承),你始终待在「同一条对话」里;
  • 只有被取代的旧会话加上 ·<修改时间> 后缀并归档;反复修订时依次得到 T(当前)、T·11:05、T·10:20,互不重名。

验证

bash tools/verify-all.sh --e2e 全绿。新增 tools/lib/mini-react.mjs(带状态与副作用的最小 React 运行时),因此 verify-client.mjs 现在真的跑交互:按钮出现、面板展开列轮次、当前轮高亮、点未载入轮次先 loadThrough(40) 再 scrollIntoView、关闭、会话卸载后撤回;标题规则也从「只有被取代的会话被改名」这一侧断言。


Two adjustments from use: the outline became a floating panel pinned to the conversation's top-right (no more right-sidebar page), and a revision branch now keeps the original title while only the superseded session is stamped with the edit time.

v0.2.0 — 改名 dsh-revise-chan + 发布 npm

Choose a tag to compare

@shellexy shellexy released this 15 Oct 17:13

改名 + 首次发布到 npm

dsh-manuscript 这个名字在 npm 上已被他人占用(dushaobindoudou/dsh-plugin 里的同名插件),所以从这一版起整体改名为 dsh-revise-chan,并首次发布到 npm。

升级方式(破坏性变更)

包名、profile 里的 bundle 行名、Host 侧服务键都变了,已有安装需要重装一次:

dsh plugin --profile web remove dsh-manuscript
dsh plugin --profile web add dsh-revise-chan        # 或 github:shellexy/dsh-revise-chan / 本地路径

GitHub 会把旧仓库地址 shellexy/dsh-manuscript 自动重定向到新名字,所以老的 github: 安装仍然能解析(但装出来的包名还是旧的,建议按上面重装)。

这一版的内容

  • 包名 / GitHub 仓库名 / npm 名统一为 dsh-revise-chan;Host 侧服务键与 Remote 命名空间从 manuscript 改为 revise-chan(顺带避免与同名 npm 包撞服务名);Browser 半的模块 id、页签名、槽位项 id、locale 命名空间与 CSS class 前缀同步改名。
  • 简介前置一句更直白的说明:让 dsh 可以修改 AI 回答内容 + 固定显示大纲。
  • 功能不变:回答署名(模型 | 提供方)、铅笔 + 对话框改回答正文并新建分支(分支名 ·<保存时间>,原会话 ·<原回答时间> 并归档)、右侧栏常驻大纲页(点击跳到轮次)。
  • 可复跑验证仍在 tools/:bash tools/verify-all.sh --e2e(本次改名后在 dsh 0.2.0-rc.2 上全绿)。

Renamed to dsh-revise-chan (the npm name dsh-manuscript was already taken by another author) and published to npm for the first time. Breaking change: reinstall with dsh plugin --profile web add dsh-revise-chan. Features are unchanged — answer byline, branch-based answer revision, permanent outline sidebar.

v0.1.0 — 稿本 dsh-manuscript

Choose a tag to compare

@shellexy shellexy released this 15 Oct 15:57

dsh-manuscript(稿本)首个版本:给 DeepSeek Harness 的对话补上 署名、修订、目录。

三个功能

  • 署名:每条回答下方的时间行末尾补上 模型 | 提供方,取自这一轮真正被计费的路由(turn-tail.tokenUsage.routes)。
  • 修订:复制按钮右边多一支铅笔。点开应用内对话框改回答正文,保存后从这条回答的提问处新建分支——分支里这条回答就是你改写的正文;分支名加 ·<保存时间>,原会话标题加 ·<原回答时间> 并归档。
  • 目录:标题栏「大纲」按钮打开右侧栏常驻大纲页:每轮一行(提问 + 回答预览),当前轮高亮,点击跳到该轮。

安装

dsh plugin --profile web add github:shellexy/dsh-manuscript
# 或本地: dsh plugin --profile web add ./dsh-manuscript

装完重启 dsh web。

兼容性

目标 dsh 0.2.0-rc.2。纯 JavaScript,无构建步骤、无 npm 依赖:Host 半零 import(手工安装 Remote marker 与 typertRemote binding),Browser 半只 require('react')。未在 0.1.x 上验证。

机制一句话

dsh 的日志只追加,且 assistant/message 不能做 surface replacement(既要引用被遮蔽节点、又禁止携带 sourceEventSeqs),所以稿本不改历史:在提问处 fork,然后往还活着的分支里追加一个完整轮次(turn/start(沿用原轮次号)→ step/start → assistant/message(修订稿,沿用原消息 id / provider / model)→ step/end → turn/end)。模型可见历史随 surface 折叠读作 …, 提问, 修订后的回答;压缩摘要、token 计量、轨迹视图都不受影响。

已知边界

  • 修订会丢掉原轮次的工具调用链(那些工具属于被丢弃的分支);思考块与图片保留。
  • 已被压缩摘要吞掉的轮次无法修订(message-not-found)。
  • 会话标题 80 字节上限:插件先把原标题裁到 62 字节再补时间戳,保证后缀不被宿主截断。
  • 大纲的跳转与当前轮高亮依赖宿主为自己的导航发布的 DOM 锚点([data-conversation-scroll] / [data-chat-turn]);日后改名只会让跳转与高亮失效。

验证

tools/ 里有可复跑的验证脚本:

bash tools/verify-all.sh          # 三个离线验证:宿主半发现与行为、引擎折叠、Browser 半注册与保存事务
bash tools/verify-all.sh --e2e    # 再启一个一次性 profile,走真实 Typert Gateway

全部通过(18 + 6 + 18 项离线检查,7 项端到端检查);真实浏览器里的视觉未覆盖,需要人眼确认。


First release. Three features — answer byline, branch-based answer revision, permanent outline sidebar — for DeepSeek Harness. Targets dsh 0.2.0-rc.2; plain JavaScript, no build step, no dependencies. A revision never rewrites history: it forks at the answer's human prompt and appends one complete turn carrying the edited text. Reproducible verifications live in tools/ (bash tools/verify-all.sh --e2e).