Repository navigation
Releases
Releases · huanlin-labs/dsh-skill-cockpit
v1.6.0
v1.5.6 — 备份全部修复与版本串收口
修复
- 修复「备份全部」始终返回 0 个文件 / 0 字节:宿主路由误把根对象数组传给
backupAll()。 /ping、页脚、package.json三处版本串统一为 1.5.6。
工程
- 补齐 issue / PR 模板、CONTRIBUTING、SECURITY、CODE_OF_CONDUCT。
- 新增核心视图渲染测试与四页总览
docs/screenshots/tour.gif。
验证
npm test19/19;verify:install13/13。- Windows DSH 1.5.6 真机:备份全部 76 个技能 / 2242 个文件 / 79,703,006 字节。
v1.5.1
CI 三平台修复:测试沙箱改用 os.tmpdir()(Windows Node 22 的 0xC0000409);POSIX 符号链接改用 unlinkSync(macOS/Linux ENOTDIR);zstd 多帧按帧边界解码(截断尾帧不再拖垮前帧);CI suites 补 macOS,三平台 × Node 20/22/24 全量运行。见 CHANGELOG.md。
v1.5.0 — doctor, verify:install, honest boundaries
1.5.0 — 2026-10-30
自证:verify:install + CI 三平台 + 诚实边界
- 新增
npm run verify:install:npm pack → 装进空临时目录 → 用装机副本启动宿主半 → /ping 读回版本 → 状态目录隔离,8 项断言。抓的是「源码能跑、发出去的包不能跑」这类只有真装才暴露的问题(本轮第一次跑就抓到:lib/state.js不在旧包的安装结果里 → 立刻确认 tarball 必须自带它)。 - 状态路径可用
SKILL_COCKPIT_HOME覆盖(lib/state.js),gloss.json/local.json都走它;测试与 CI 不再污染真实~/.dsh。 - CI 从「ubuntu × Node 20.11 单格」改为:语法三平台 × Node 20/22/24;全量自测 ubuntu + windows × 20/22/24;
verify:install三平台 × 20/22/24;推 tag 时单独核对 registrylatest= package.json 版本。macOS 不跑全量套件,README 如实写明。 - README / README.zh.md 顶部版本漂移修正(0.6.10 → 1.4.1),并新增**「诚实边界 / Honest boundaries」**段:只在 Windows 真机验过、macOS 只跑语法与 verify:install、翻译依赖免费接口、一键修会改文件但有
.bak、不是沙箱、调用次数只是下界。
修「一键修」点了没反应(描述 13 字场景)
- 根因:体检判「过短」是 < 20 字,一键修只处理 < 8 字 —— 13 字两边都不算,点下去返回
changed:false,看起来像按钮坏了。 - 现在两边共用
checks.js的MIN_DESCRIPTION_LENGTH;短描述保留原词并接上正文第一段(≤200 字),不编内容。 - 正文里没有可用句子时不再静默:返回明确原因并显示在提示里,也不连带挡住同文件里 name 的修复。
新增:dsh-skill-cockpit-doctor(自查 CLI)+ 平台矩阵
bin/cockpit-doctor.mjs:一条命令回答「面板为什么没出现」——状态目录可写、user-dsh技能根、技能数、profile 装配里有没有挂这个包、译文缓存条数。--json给机器读;--home <dir>把全部路径重定向到临时 home(测试/CI 用,不碰真实~/.dsh);--fix只补能安全补的(状态目录、缺失的user-dsh);--version在参数解析之前处理。- 退出码:
0就绪 /1有要修的 /2环境问题。 - 新增
docs/platforms.md:平台矩阵,一格一句判断依据 + 验证状态(Windows 真机 / macOS·Linux 只跑语法与我装 / 别的 harness 不支持)。 - 接线:
npm test加「诊断 CLI」套件(11 项,含--dry-run不落盘);verify:install增加 2 项——用装机副本的 bin 跑--version、装机副本doctor --home --fix必须退出 0。 --dry-run:只报「将创建/将修」不写盘,退出码仍表达"有事要做"(1)。--report <file>:把同一份 JSON 报告写到指定文件(只读,不改任何状态);写不出去时退出码降为 2 并说明原因。docs/self-check.md:把提示词第 7 步那 10 条逐条打勾 + 证据;CI 首跑与发版 tag 两条明确留空,不装完成。- doctor 新增
session-logs检查:数得清<home>/.dsh/sessions下的会话日志就报数,读不到就写原因(用量页为 0 时先看这一项)。 - README 安装段改成三步(装包 → 挂 profile → 重启并自查),每步都写「期望看到什么」;顺手修掉示例里过期的
1.0.0。 - 删除兜底回收站也去本地化:
deleteSkill的默认trashRoot从写死D:\回收站\技能面板删除改为与回收站一致的<DSH home>/skill-panel/trash(界面本来就会传配置值,这里是给脚本/库调用兜底)。 - 未安装索引默认不配置:
DEFAULT_UNDECLARED_INDEX不再指向某个作者本机的D:\管家\…文件,改为空字符串(面板显示“未配置”);已有使用者可用undeclaredIndexPath显式指定。 - 界面里“来源目录”输入框的占位符由
D:\path\to\skill-folder改为<path to skill folder>。 - 备份默认根去本地化:
DEFAULT_BACKUP_ROOT从写死D:\回收站\技能面板备份改为<DSH home>/skill-panel/backups(与回收站一致),装到别的机器上不会再往 D 盘写;README 的本机路径也一并清掉。\r\n- 工具侧备份落点跟随配置:skill_panel的action=backup(单个 / 全量)此前绕开backupRoot,总是写默认目录;现在与 HTTP 路由共用同一落点,并加路由级回归(工具与路由各备一次,均落在<dshHome>/skill-panel/backups)。 - 备份根可配置:新增
backupRoot配置键;备份路由统一走backupRootOf(cfg)(默认<dshHome>/skill-panel/backups),不再绕过dshHome直接写~/.dsh。 verify:install加严到 13 项:新增「空 home 上 doctor 必须先报需要修」「--fix后复检全绿」「再--fix仍全绿(幂等)」三条,避免"装完就全绿"掩盖真实状态。- 文档诚实边界校正:README /
docs/platforms.md明确写出 CI 已配置但还没推送跑过,不再把"配好了"写成"跑过了"。 - 新增「文档一致性」自测(第 19 套):README 的 tests 徽章必须等于 run-all 真实套件数(真抓到过一次 17 写死)、每个 doctor 检查项必须在 troubleshooting 表里有条目、README 的
docs/链接必须存在。 - 新增「文案字典」自测(第 18 套):zh / en key 必须一一对应、无空文案、同一 key 的
{placeholder}集合一致——防再出现「界面显示原始 key」。 - doctor 新增
zstd检查项:没有 zstd 解压 API 时直接说明「用量会偏低甚至为 0」,不用再猜。 - 用量页诚实披露:
GET /usage现在返回zstd能力标记,Node 缺 zstd 解压 API 时返回note,页面显示「次数会偏低甚至为 0」而不是静默的 0。 - 修 CI 可移植性(GitHub Actions 三次全红,15 秒即挂):5 个测试文件把
file:///D:/插件/...写死成绝对导入 → 改相对导入;run-routes/run-usage静态导入 Node 24 才有的zstdCompressSync→ 改为能力探测(路由用纯文本 fixture 兜底,用量在无 zstd 时明确 SKIP);run-toggle在干净 home 没有~/.dsh/skills时直接退出 → 自动建空目录。 - 实测:Node 24
17/17;Node 22run-usage61/61;Node 2017/17(run-usage打 SKIP)。 - 新增
test/run-presets.mjs(14 项):预设挂载的安全边界——真实目录 unmount 必须拒绝、detach 只搬技能且同名冲突不覆盖、presetId/技能名不得路径穿越。npm test现 17 套件。 - 新增
docs/troubleshooting.md:六个 doctor 检查 id 各自「在问什么 / 出问题怎么办」,加三个常见现象(面板不出现、用量全 0、一键修修不了)与「它查不到什么」。
小改
- 列表里展开某条技能时,描述按整段显示(不再单行省略)。
v1.4.1 — 翻译好用
按钮就叫「翻译」;真机能用(系统代理 + MyMemory/Google 双源,免 key)。实测新装 20 个英文技能 + 原有 4 个 = 24/24 译成中文,18 秒。
v1.4.0 — 一键翻译
新装 / 后备库拉回来的英文技能,工具栏点「一键翻译」就翻成中文摘要。
- 用宿主自带 translator 服务(google 匿名,免 key;失败回退 bing),结果写 ~/.dsh/skill-cockpit/gloss.json
- 面板中英词条补齐(gloss.* 5 条),修掉按钮显示成英文 Translate
- 只改显示,不动任何 SKILL.md
v1.3.2
修复 1.3.1 回归:分组页计数与列表页同源(tagsOf);顶部口径条整行跨列,左上不再空白
v1.3.1
分组页计数口径(共 N / 已归组 / 未归组 + 残留旧名字另计)· 英文技能中文摘要(只改显示,存本机浏览器)· 自测 15/15
v1.3.0 — 自动加载工具栏化 + 每行必用
自动加载控件收进工具栏(开关 + 严格/标准/宽松三档);每个技能行新增「必用」(pin);修复从 0.6.38 起就存在的「新建技能」整页白屏,并新增渲染冒烟测试;中英 README 补全三档参数、上限与开启代价。
v1.1.2 — 修 skill_autoload 工具从未注册
这一版修什么
1.1.0 的「开 = 自动加载」说了能用 skill_autoload 一句话开关,但真机上这个工具根本不存在。
- 现象:
Tool.listTools里只有skill_panel,没有skill_autoload;面板、README 都写着能用。 - 根因:DSH 的
ToolDefinition必须带output: { schema, render }。skill_autoload漏了这一段,ctx.tools.register()直接抛错,而外层try/catch只打一行日志就吞掉了 —— 表现就是「工具悄悄没出现」。 - 修法:补上
output(与skill_panel同形),并加源码级回归断言,防止下次再漏。
验证
- 重启 DSH 后
Tool.listTools已能看到skill_autoload(10 个参数:action/tier/skill/off)。 npm test14/14 套件全过。
没有其它行为变更;自动加载仍然默认关闭,需要你自己开。
Full Changelog: https://github.com/huanlin-labs/dsh-skill-cockpit/blob/main/CHANGELOG.md