Repository navigation
Releases: HaoyanZhang123/dsh-plugin-control-your-development
Release list
v0.7.0 — 面板只读一份「项目读模型」,并长成一块可控的工作区
v0.7.0 — 面板只读一份「项目读模型」,并长成一块可控的工作区
一句话:Markdown 仍是唯一可编辑事实,渲染器每轮原子写出一份带完整指纹的
.view.json,面板与离线页只消费它;同时新增右侧上下文检查器、底部进展/决策抽屉、整链聚焦,以及只作用于当前会话的开始/停止/重试与只读运行投影。Summary: Markdown stays the single editable source; the renderer now emits one fingerprinted read model (
.view.json) that the panel and the offline snapshot both consume. This release also brings the context inspector, a collapsible progress/decisions drawer, whole-chain focus, and current-session-only run controls with a read-only runtime projection.
变更概览 | Summary
| 类别 | 数量 |
|---|---|
| 新增 Added | 4 |
| 优化 Improved | 3 |
| 修复 Fixed | 3 |
| 移除 Removed | 2 |
新增 | Added
- 读模型
dev-dashboard/.view.json:渲染器唯一生成、原子写入(tmp → fsync → replace),带schemaVersion/producer/format/generatedAt/sourceHashes/data。 - 统一工作区:右侧上下文检查器回答「是什么 / 为什么 / 证据在哪 / 能做什么」;底部「进展与决策」抽屉常驻摘要。导航收敛为五个 tab。
- 整链聚焦:悬停与键盘 focus 临时预览祖先 + 后代,点击固定;只改透明度,不动任何坐标。
- 运行控制:统一意图通道与回执四态(
accepted/queued/mailbox/failed);停止当前轮次(保留队列)、停止并清空队列(先确认)、重试上一句(新请求 id)。
优化 | Improved
- 新鲜度门禁:
sourceHashes覆盖事实源与选中的术语表 / TECH / CHANGES、.facts.json、.dashboard-ignore、上一版 TECH 快照,外加@evidence/@sources/@cyd/@prevtech;Python 与 node 两侧逐键一致由跨语言门禁对账。 - 过期不装作新鲜:读模型过期时保留旧图并明确标注、禁用依赖旧上下文的对象动作;「缺读模型 / 版本更高 / 无法校验」各有独立状态。
- 离线
index.html只读化:删掉目录授权与页面内写回,首屏标出导出时间与来源版本。
修复 | Fixed
- 「读不到」不再被当成「没有」:
.inbox.jsonl不存在 = 0 条,只有存在但读取失败才显示—。 - 待生效计数胶囊不再被拉成整行(
align-self+ 宽度上限)。 - 运行投影改用会话公开接口
getSnapshot()/subscribe(),不再永远「观测不到」。
移除 | Removed
- 独立「使用指南」tab 及其全部固中文案与断言;必要提示只留在空态与控件旁。
- JS 侧 Markdown 解析、旧的双解析器差分套件与退役的交叉核对探针。
重要说明 | Important Notes
- 升级方式:DSH 不会自动更新已装插件,同版本也不覆盖 —— 卸载后重装,然后刷新页面或重启 DSH。
- 读模型是一次性换代:安装后首次打开面板,宿主会用现有渲染器重建
.view.json;旧版面板直接解析 Markdown 的路径已删除,两版不要混用。 - 运行控制只作用于当前会话,没有暂停/继续,也没有多 agent 编排;界面在观测不到时显示「运行状态观测不到」,而不是猜。
- 验证边界:静默门禁与交互验收见 CHANGELOG 与仓库
tools/ready.py输出;CDP 真机断言在本轮未跑(需要运行时 token),该项在门禁里显式记为 SKIP,不算通过。 - 逐条明细:CHANGELOG.md
v0.6.2 — DSH 0.2.1-rc.2 上装不上的问题修好了(peer 区间 + 一处读文件分页 bug)
v0.6.2 — DSH 0.2.1-rc.2 上装不上的问题修好了(peer 区间 + 一处读文件分页 bug)
一句话:DSH 在 10-17 升级到 0.2.1-rc.2 后,0.6.1 声明的 peer 区间
>=0.2.0-0 <0.2.1-0被判为不兼容 ⇒ 安装被拒并回滚;已经装着的版本也会在启动时被静默跳过(只在 stderr 留一行)。这一版把区间放宽为>=0.2.0-0,并在 0.2.1-rc.2 上跑完真机断言:可跑项 84/84 全过,3 项因测试实例缺工作区切换器显式跳过,控制台 0 错误。
✨ 这一版修好了什么
1|DSH 升级后"插件坏了/面板没了"(本次的主因)
- 现象:DSH 升级到 0.2.1-rc.2 后,插件装不上(报版本不兼容),或装上后右侧栏没有任何「开发仪表盘」入口。
- 根因有两条,任意一条都足以让面板消失:
- 发布版 peer 区间过窄:
>=0.2.0-0 <0.2.1-0不包含0.2.1-rc.2(宿主用includePrerelease比较,实测判 false)。DSH 在安装前就拒绝并回滚,在加载时会把 bundle 记进skippedBundles直接跳过——所以看起来像"插件没了",而不是报错。 - 本地开发链接路径失效:工作区重构把插件从
plugins/…迁到了projects/<name>/plugin/,profile 里旧的link:指向已删除目录 ⇒ 包解析失败。
- 发布版 peer 区间过窄:
- 修法:三条
@deepseek-ai/dsh-*peer 全部放宽为>=0.2.0-0(保留-0、不设上界——设上界的代价就是"DSH 一升 rc 就装不上");文档补上迁移后的本地安装路径。
2|读文件分页条件写反:>2000 行的文件会被静默截断(既有缺陷)
- 宿主
workspaceFiles.read的eof语义是「本页含文件最后一行」;面板里的分页循环把条件写反(if (!v.eof) break),于是还有下一页时反而提前停止。 - 2000 行以内的文件不受影响(多一次空页读取);超过 2000 行的 NOW / FEATURES 会被悄悄截断,而且不会报错。
- 已改为
if (v.eof) break,超过一页继续翻页。
3|展示元信息对齐 0.2.1 的新清单
- 保留顶层
icon(官方优先级更高),并补上exports["./icon"];locale/en.json、locale/zh.json的meta.title/description保持不变。 - 图标实测 114350 B(<256 KiB)、WebP 头有效。
4|配套 skill v1.6.2
- 仅文档纠错(
plugins/…→projects/…路径、发布说明同步),skill 行为与数据契约不变(契约仍为 v1.6)。 - 插件激活时会把它同步进全局技能目录;同版本不覆盖,所以这次改了版本号才能送达已安装用户。
⬆️ 升级方式
先卸载再装(DSH 不会自动更新已装插件;同版本也不会覆盖):
- DSH → Plugins → 卸载旧版;
- Add plugin → 填
dsh-plugin-control-your-development(或指定@0.6.2); - 刷新页面(Ctrl+R)或重启 DSH(替换已安装的包必须重启才能加载新的 JS 模块代)。
⚠️ 0.6.1 在 DSH 0.2.1-rc.2 上装不上——这不是你的操作问题,正是本版存在的理由。
✅ 质量与兼容
- 真机断言(
smoke/cdp_verify.mjs,在独立测试实例上跑:dsh web+ profileweb,release0.2.1-rc.2/ commit332895e):PASS 84 / FAIL 0 / SKIP 3(环境);3 项跳过原因 = 测试实例缺工作区切换器(首次进入需审批),逐条打印了原因,不计入通过。 - 覆盖到的真实链路:右侧栏 tab 类型与 guide 入口注册、面板渲染与真实数据、整页「功能地图」、节点/边几何断言、打印态、拍板直发(hook 到主对话,inbox=false)、设置保存与 RPC 复核、版本快照与 diff、页面 0 控制台错误。
- 静态门禁 / 冒烟 / 双解析器 / 构建:见仓库
tools/ready.py本轮输出(交付记录另附)。 - 兼容范围:DSH 0.2.1-rc.2 实测通过;声明区间
>=0.2.0-0。0.2.0-rc.2 未在本版重跑(0.6.1 时期验证过)。 - 验证边界:真机验收跑在独立测试实例上,不碰用户的 live profile;本机 live 桌面 profile 已装回 dev 链接,需重启 DSH 后由用户实机确认——"断言全绿"不等于"用户已经看到"。
- 逐条明细:CHANGELOG.md
English release notes:
docs/releases/v0.6.2.en.md
v0.6.1 — 窄栏证据路径不再顶出卡片 · 打印时路径不再整条消失
v0.6.1 — 窄栏证据路径不再顶出卡片 · 打印时路径不再整条消失
一句话:右侧边栏收窄时,证据路径胶囊曾经会整行顶出卡片边框、把复制键挤到框外;这一版把它修好——窄栏下路径走单行省略(悬停看全文),复制键永不消失,面板与离线网页两端一个样;打印/PDF 恢复折行、路径照常印出来。
顺带修掉一条既有缺陷:打印隐藏规则原先连**"整片即复制"的路径片一起隐藏了,纸面上143 条路径**整条不见——现已收窄为只隐藏复制键。
✨ 这一版修好了什么
1|右侧边栏收窄时,证据行不再顶出卡片
2|打印时不再把证据路径整条吃掉(既有缺陷)
⬆️ 升级方式
DSH → Plugins → 填包名 dsh-plugin-control-your-development(也可指定版本 dsh-plugin-control-your-development@0.6.1)→ 刷新页面(Ctrl+R)或重启 DSH。
配套 skill(v1.6.1)随插件自动更新,不需要手动装。
- 逐条明细:CHANGELOG.md
English release notes:
docs/releases/v0.6.1.en.md
v0.6.0 — 技术地图(「功能 | 技术」切换)· 变更规则 · 地图会主动说"过期了"
v0.6.0 — 技术地图(「功能 | 技术」切换)· 变更规则 · 地图会主动说"过期了"
一句话:功能地图回答"做到哪了",这一版多了一张技术地图回答"它是怎么搭起来的"——在同一个 tab 里切换视角,模块按层排开、依赖连成边;
TECH.md(技术地图)与CHANGES.md(变更规则)建立仪表盘时就默认有初稿;地图还会主动指出哪一块已经过期了(证据找不到了、证据文件被删可能搬迁、看板比插件新)。
同时还修掉一条你提过两次的:整页看功能地图时,宿主的输入框不再占着位置(有待审批 / 待提问 / 待复核计划时例外保留)。
✨ 这一版你能做什么
1|功能地图工具栏多了「功能 | 技术」,技术视角看的是"怎么搭起来的"
- 会话页顶部「功能地图」的工具栏上多了「功能 | 技术」切换,不新增 tab(导航里的 tab 数量与顺序不变);
- 切到「技术」:模块按
层纵向排开——层的先后按你在文件里第一次出现的顺序算,不预设层名;模块之间是连到声明的依赖边; 连到指向一个还不存在的模块时不假装它在:画成断头桩 + 空心圆环,并在旁边标出缺的是哪个(同一个模块缺多个只标一条,例如「缺 不存在的模块 等 2 个」);- 每个模块写七项:
模块 / 层 / 职责 / 技术 / 状态 / 证据 / 连到(### 子项可复用); - 还没有
TECH.md时,「技术」按钮照样在(悬停写着"还没有技术地图,点开看怎么建"),空态里给一个「建立技术地图」按钮——面板里点一下直接进你的主对话,离线网页退回复制。
2|技术地图与变更规则:建立仪表盘时就默认有了
init时除了 PRODUCT / FEATURES / NOW 与术语表,还会一并建TECH.md(技术地图)与CHANGES.md(变更规则)的初稿——模块从功能与它们的证据路径归并而来,变更规则把每个功能的证据按目录归并成条目;- 推不出来的条目不编:留
[待确认: 这条改动怎么归置]占位,交付时会告诉你"变更规则和技术地图我也一并建了初稿,它们是从现有证据推出来的,请过一眼"; - 文件名照样不写死:
TECH.md/tech.md/技术地图.md、CHANGES.md/changes.md/变更规则.md都认(认结构,不锁名字); - 模块的证据和功能证据走同一条红线:路径必须真实存在、必须进归置;只被技术地图或变更规则声明的文件会在审计里单列(超过 10 条提醒你复核),防止"用一份没人看的声明文件把改动藏起来"。
3|地图会主动说"这块过期了"(陈旧 / 搬迁)
- 陈旧:和最近一份版本快照里的技术地图比,某个模块当时写下的证据现在一条都找不到 ⇒ 技术视图标题旁出现
⚠(图例下、审计弹层里是同一句话):
技术地图里有 N 个模块的证据找不到了:X。/这份地图可能已经跟不上代码了。/去技术地图里把这几条证据改对。
——图看起来正常、其实是错的,正是最该主动说的时候; - 搬迁:本轮采集里被删掉的文件,如果正好是技术地图模块(或功能 / 使用流程 / 时间线)的证据 ⇒ 提示"证据文件已被删除(可能搬迁)",由你确认是搬走了还是真没了;
- 两类信号都 fail-closed:没有上一份快照、或没有命中,一律不产——不做"永远在报"的假警告。
4|看板比插件新时,会说,而不是默默读错
dev-dashboard/.cyd.json 里记着"这份看板是谁、按哪个格式版本写的"。若它出自更新的插件或 skill(格式超前,或写入者版本比当前插件新),面板与离线网页给出同一条提示:
.cyd.json 是更新版插件写的,当前版本读不全。/所以这次不改它,免得把新内容写坏。/升级插件后再看就行。
这种情况只读、不写回——旧版本不会拿自己去改新数据。同族的另一种情形(格式版本写得不是数字)另有提示,下一步是"把这一项改回一个数字",不混成一句。
5|整页「功能地图」里不再多出一个输入框
- 你在会话框里点开整页功能地图时,宿主的输入框座席不再显示;有待审批 / 待提问 / 待复核计划时例外保留——否则会出现"审批要打字、却没有输入框";
- 同时隐藏宿主的宽度拖拽条:它落在地图中间,横向拖动本来会被宿主拿去改正文列宽,而不是平移地图;
6|关系图不再有压在图上的边标签
边上的关系名不再以可见文字压在图中间(图干净了),但关系名没丢:悬停在边上照样能看到,每条边仍带自己的关系名。切换条宽度也贴合了两个按钮(整页视图与侧栏面板内各有一条断言)。
⬆️ 升级方式
DSH → Plugins → 填包名 dsh-plugin-control-your-development(也可指定版本 dsh-plugin-control-your-development@0.6.0)→ 刷新页面(Ctrl+R)或重启 DSH。
配套 skill(v1.6.0)随插件自动更新,不需要手动装。
- 逐条明细:CHANGELOG.md
English release notes:
docs/releases/v0.6.0.en.md
v0.5.4 — 「📖 术语表」独立 tab · 默认随 init 建立 · 按表头识别不锁文件名
v0.5.4 — 「📖 术语表」独立 tab · 默认随 init 建立 · 按表头识别不锁文件名
一句话:长项目里同一样东西被叫成好几个名字,AI 会跟着越写越飘——这一版把术语表做成了看得见、点得动的一等功能:独立 tab、默认建立、别名写进正文就在数据健康里报警,明细还能逐条「让 AI 统一」。
补的是发现性:此前只有「项目」页里一张卡片,而且没有 GLOSSARY.md 就整块不渲染——文档里写着的能力,界面上根本找不到那个入口。
✨ 这一版你能做什么
1|新增「📖 术语表」tab(导航第 4 个,在「现在」与「使用指南」之间)
四种状态都有出口,不再"没建就一片空白":
- 有表:标准用词 / 指什么 / 别名·曾用名 三列表 + 「共 N 条 · 用词一致 ✅」;有漂移时另起一张明细表(别名 → 应写成、出现位置、次数),每行一个「让 AI 统一」;
- 有歧义(多个文件都像术语表):不猜,列出候选并告诉你怎么指定;
- 文件在但表头不符:提示正确格式,可一键让 AI 改表头;
- 未启用(还没有术语表):讲清价值 + 给出格式 + 一个「让 AI 建立术语表」按钮——面板里这句话直接进你的主对话,离线网页退回复制。
tab 底部始终标注来源文件名;数据健康里也永远有一行状态(正常 / 未启用 / 歧义)。「项目」页那张旧卡片已搬走,不再重复渲染。
2|识别契约:文件名不写死
认的是表头,不是文件名——术语表.md、词汇表.md、glossary.md 都行,改名不用改任何配置。解析优先级:
dev-dashboard/.cyd.json里手写的{"glossary": "<文件名>"}(最高优先,渲染器只读、不覆盖);- 内容嗅探:
dev-dashboard/*.md里唯一一个第一张表表头符合契约的文件; - 命中多个 → 不猜:报警 + 请你在对话里指定,结论写回第 ① 项;
- 一个都没有 → 未启用(不算错误)。
渲染器每轮把结论写进新的机器文件 dev-dashboard/.cyd.json——面板只有按路径读文件的能力、没有列目录,靠它才能知道真实文件名。
3|术语表现在默认就建
- init:建 PRODUCT / FEATURES / NOW 时一并建立术语表——从项目现状(代码标识符、文档、正文里出现过的不同叫法)抽初稿;项目确实一片空白时建骨架并标「待补充」,不编内容。
- 存量项目 / 中途启用:
update会做一次体检,解析不到就在对话里问你要不要建(不静默创建);有歧义就问用哪一个。 - 不需要的话,整份删掉即可——它是默认可得、不是强制。
4|顺手修掉的三个洞
- 离线网页点「🔄 更新」此前漏读术语表:更新一次术语表就凭空消失,现已补上;
- 看护与版本快照改为处理
dev-dashboard/*.md全部:术语表改名后仍被看护、仍进快照; - 全屏兜底补全:
requestFullscreen同步抛错时原实现没有 try/catch(只有 Promise 被拒才兜底),表现为按钮「点了完全没反应」;现在两种失败都退回铺满视口的弹层。
⬆️ 升级方式
DSH → Plugins → 填包名 dsh-plugin-control-your-development(也可指定版本 dsh-plugin-control-your-development@0.5.4)→ 刷新页面(Ctrl+R)或重启 DSH。
配套 skill(v1.4.0)随插件自动更新,不需要手动装。
✅ 质量与兼容
- 门禁:
render_dashboard/collect_facts/watch_dashboard/snapshot_version四项--self-test全绿(含新增的识别矩阵:改名后仍认出、歧义不猜、显式指定优先且不被覆盖、无文件不报错);lint_skill、contract_check通过;node --check通过 - 产物一致:全新克隆里重建
lib/client.js后git diff --exit-code为 0(v0.5.3 起新增的 CI 守卫) - 真点击实测(headless Edge + CDP):三种界面状态都按预期渲染;tab 位置正确;420px 窄侧栏下 5 个 tab 不溢出;其余四个 tab 内容不受影响
- 漂移自证:本项目的仪表盘上线术语表后当场报出 3 处真实用词漂移(
看板×3、技能×6),逐条统一后降到 1 处(唯一剩下的在证据文件名24-全局技能副本刷新.md里——文件名不能为迎合检查器而改,故有意保留) - 兼容:DSH
0.2.0-rc.2(声明区间>=0.2.0-0 <0.2.1-0);不改宿主半、不改数据契约 - 逐条明细:CHANGELOG.md
English (short)
v0.5.4 turns the terminology glossary into a first-class feature: a dedicated "📖 Glossary" tab (4th in the nav, between "Now" and "Guide") with four states — terms + terminology-drift table (each row has a one-click "unify"), ambiguous candidates, wrong-header, and a not-yet-enabled empty state that offers a one-click "let the AI create the glossary" (sent straight into your main conversation in the panel, copied in the offline page). The glossary is now created by default during init, and it is identified by its table header, not its filename (术语表.md / 词汇表.md / glossary.md all work), with the resolution result recorded in the new dev-dashboard/.cyd.json machine file. Also fixed: the offline page's "🔄 Update" silently dropped the glossary, watch/snapshot now cover every *.md, and the fullscreen fallback now also handles a synchronous throw from requestFullscreen (previously the button did nothing in that case).
Gates: four --self-tests (including a new recognition matrix), lint_skill, contract_check, node --check, and a rebuild-to-byte-identical CI guard — all green; real-pointer CDP tests cover the three UI states and a 420px-wide sidebar.
v0.5.3 — 关系图「⛶ 全屏」· 社区 PR 合入 · 退出全屏不再撑破版面
v0.5.3 — 关系图「⛶ 全屏」· 社区 PR 合入 · 退出全屏不再撑破版面
一句话:功能一多,关系图在侧栏里就挤了——这一版给工具栏加了「⛶ 全屏」,点一下进真·窗口全屏看图,再点一次或按 Esc 退出。
本版是社区 PR #3(@cjl520xx)合入后的跟版:先按 Rebase and merge 原样合入(4 笔署名完整、内容一字未改),再用 headless Edge + CDP 真实鼠标手势逐条复核,把两处只在"非整页形态"下出现的缺陷在同一个版本里修掉。
✨ 这一版你能做什么
1|关系图「⛶ 全屏」:真·窗口全屏看图(贡献者 @cjl520xx)
- 位置在工具栏「适应」和「重置」之间;进入后按钮变「⤡ 退出全屏」,Esc 同效
- 为什么必须真全屏:桌面端那条原生标题栏(菜单栏 + 窗口按钮)页面 CSS 盖不住——DSH 自己也只在
html[data-fullscreen]时把那条带子收掉 - 全屏落在
.cyd-app而不是图容器上:这样弹层#ovl仍在同一棵子树里,全屏中点/悬停节点弹出的面板照常可见;同时复用「整页模式只留关系图」那套现成布局,不新增重复 CSS - 有兜底:拿不到
requestFullscreen或被拒绝时,退回「铺满视口的弹层」——点了不会没反应 - 进入时按大画面重新「适应」;退出时还原你亲手调过的视野;数据刷新(重渲染)不会把你踢出全屏
2|合入复核发现、并在本版修掉的两处(只在侧栏 / 离线网页形态触发)
- 退出全屏后图卡被撑到比视口还高:全屏期间算出的 SVG 行内高度在退出时没有清掉(容器 433px → 870px,而视口只有 868),页面凭空多出滚动条;现在非整页/非全屏一律交回 CSS
- 全屏中发生过重渲染后再退出,整页被"沉浸布局"吞掉:
cyd-immersive摘不掉(导航、筛选、进度、页脚全被隐藏)且视野还原失效;原因是全屏状态里有两个标志位是重渲染就归零的局部变量,现已提升为跨重渲染保留 - 复核结果:退出全屏后的画面与进入前逐像素一致(三张截图 SHA256 相同)
3|顺手补上的工程缺口
src/client.src.js补回产物里已有、源里却缺失的直发通道源码——此前每次重建都会静默抹掉约 2.4 KB,而node --check照样通过、看不出异常tools/build_panel.py的渲染核查找顺序:本仓skill/优先,再退回<工作区>/.dsh/skills/(此前在仓库布局下,文档里那条python tools/build_panel.py直接 FATAL)release.yml新增守卫:重建产物 →git diff --exit-code -- lib/client.js,挡住这一类"源码与产物静默分叉"再次发生
⬆️ 升级方式
DSH → Plugins → 填包名 dsh-plugin-control-your-development(也可指定版本 dsh-plugin-control-your-development@0.5.3)→ 刷新页面(Ctrl+R)或重启 DSH。
配套 skill(v1.3.2)随插件自动更新,不需要手动装。
✅ 质量与兼容
- 独立复算贡献者的硬指标:第 1 笔重建与仓库产物逐字节相同(sha256
7df864cc…、132,582 B);base 处重建确实少 2,437 B;第 2/3 笔 137,044 B 且两次构建 sha256 一致;命中数requestFullscreen 2 / fullscreenchange 3 / cyd-immersive 5 / data-gz="fs" 3全部吻合 - 真手势实测(headless Edge + CDP,1484×868):进入全屏后
document.fullscreenElement=.cyd-app.cyd-immersive、图容器铺满视口、按钮变「⤡ 退出全屏」、Esc 可退;requestFullscreen被拒时走兜底并铺满;全屏中悬停节点,节点面板 235×128 完整可见 - 回归:进入 / Esc / 兜底 / 全屏中悬停节点四条路径无回归;退出后
boxHeight=433、scrollHeight=1250均回到进入前 - 门禁:
render_dashboard/collect_facts/watch_dashboard三项--self-testPASS;node --check通过;全新克隆main后重建产物逐字节一致(新增守卫 exit 0) - 兼容:DSH
0.2.0-rc.2(声明区间>=0.2.0-0 <0.2.1-0);不改宿主半、不改数据契约 - 逐条明细:CHANGELOG.md
English (short)
v0.5.3 adds a ⛶ Fullscreen button to the feature-graph toolbar — real window fullscreen, click again or press Esc to exit, with a viewport-filling overlay as fallback. It lands community PR #3 (@cjl520xx), merged as-is via rebase and merge and then re-verified with real-pointer CDP tests, which surfaced and fixed two defects that only appeared outside the full-page layout: the graph box staying at fullscreen height after exit (433px → 870px against an 868px viewport) and a stuck cyd-immersive mode plus lost viewport restore when a re-render happened while fullscreen. Also in this release: restored source that a rebuild would silently drop (~2.4 KB), fixed build_panel.py's render-core lookup for repo layouts, and added a CI guard (rebuild → git diff --exit-code) against that class of divergence.
Gates: three skill --self-tests PASS, node --check clean, and a fresh clone of main rebuilds byte-identically.
v0.5.2
v0.5.2 — 功能地图整页化 · 拖节点跟手 · 点节点直接和 AI 对话
会话页的「功能地图」从"能看的图"变成"能用的入口"——新增会话页面的整页关系图、点击节点直接把内容发给agent,不再复制粘贴。
本版是按真实使用反馈迭代,欢迎进一步优化。
✨ 这一版你能做什么
1|会话页「功能地图」= 一整页的关系图
点会话页顶部的「功能地图」,整页只留关系图并铺满可用高度:标题栏、掌控条、筛选按钮、进度条、功能卡网格、页脚都不再挤占版面。
宿主自己的「对话 / 轨迹 / 功能地图」标签栏与输入框保持原样(不做隐藏)。会话列被挤窄时,图有保底高度,不会塌成一条线。
2|点节点 = 直接和 AI 对话(本轮重点)
- 点关系图上任意节点 → 打开节点面板:速览(状态/简介/子项/证据/依赖)+ 一句话输入框 + 快捷追问(问问进展 / 怎么验收 / 下一步建议)+ 常用动作(开始做 / 标记验证 / 返工 / 撤销 / 废弃)
- 点一下,消息直接进你与 AI 的主对话——走 DSH 官方会话通道,与你在输入框回车是同一条路,AI 当场接着干
- 拿不到直发通道时依次退回:面板 RPC(
steer直达)→ 收件箱dev-dashboard/.inbox.jsonl(下次更新生效)→ 复制;失败会把原因显示出来,不再闷声复制
3|关系图本身好用多了
- 拖节点 1:1 跟手:旧版坐标换算有误(按等比缩放估算,实际是等比 + 居中),拖起来会"乱窜";现在按真实屏幕变换换算,并保留抓取偏移
- 位置记得住:手动摆好的节点位置、缩放与平移跨刷新保留;新增「↺ 重置」一键回到自动分层布局
- 不再被刷新打断:拖动期间到来的文件变更押后到松手后再应用,不会把图重排
- 悬停速览不闪了:气泡改放节点旁边 + 收起延迟,鼠标进气泡不会自己消失,点得动
4|新增日志功能
⬆️ 升级方式
DSH → Plugins → 填包名 dsh-plugin-control-your-development(也可指定版本 dsh-plugin-control-your-development@0.5.2)→ 刷新页面(Ctrl+R)或重启 DSH。
配套 skill(v1.3.1)随插件自动更新,不需要手动装。
English (short)
v0.5.2 turns the session-page Feature Map into a workspace: a full-page dependency graph, 1:1 node dragging (position and zoom survive refreshes), and clicking a node sends a message straight into your main conversation with the agent — through the official DSH session channel, with panel-RPC → inbox → clipboard fallbacks and the failure reason surfaced. Also fixed: flickering hover tooltip, an inconspicuous send button, and no way back from a version diff.
Verified on a real DSH instance: 40 CDP assertions green; offline gates 17/17, regression 12/12, edge 30/30, independent review 33/33, dual-parser diff 27/27.
v0.5.1
v0.5.0
v0.4.2 — 网页端修复 + 文档对齐
v0.4.2 — 网页端修复 + 文档对齐
修复
- 网页版点「🔄 更新」报
norm is not defined:共享核与网页层是两个<script>,网页层误把核心内部函数norm()当成同作用域调用。已改为走导出接口CYD.norm(),并新增运行时回归测试——真实跑通网页端的「刷新」与「写回」两条路径(这条测试会拦住同类作用域错误)。
文档
- README 全面对照现实修订:npm 包名一键安装为唯一首选、补「macOS 与 Windows 实机验证可用」、4 张实拍截图配正式图注、新增能力说明(按工作区显示 / 标签带项目名 / 装插件即装 skill / 证据一键打开 / 覆盖性门禁)、FAQ 补「网页端更新报错」「如何更新到新版本」
- INSTALL / PLUGIN / 发布清单同步版本号;版本纪律:GitHub tag = npm 版本号 = package.json(自 0.4.x 起)
安装
DSH → Plugins → Add plugin → dsh-plugin-control-your-development
English
Fixes the web build's norm is not defined failure on refresh (now goes through CYD.norm and is covered by a runtime test), and brings README/INSTALL in line with the current npm-first install flow. Install: Add plugin → dsh-plugin-control-your-development.
