Skip to content

Releases: daha1216/dsh-skills-manager

v0.3.2 — 修复 GitHub 安装缺 cordis.patch.yml

Choose a tag to compare

@daha1216 daha1216 released this 19 Oct 03:44

v0.3.2 — 修复 GitHub 安装缺 overlay

修复

  • GitHub 方式安装不再缺 cordis.patch.yml:dsh.bundle.patch 指向该文件,但 package.json 的 files 白名单之前遗漏了它。pnpm 打包 git 依赖时按 files 出包,导致 tarball 里没有 overlay,DSH 启动校验报 failed to read overlay ...: ENOENT,插件显示为红色「异常」,设置里也不会出现「技能」页。本地 link: / file: 安装因为整棵树都在,不受影响。
  • 感谢 @lanslot4n93r 的 #3:定位、复现与修复验证。

升级

dsh plugin --profile web add github:daha1216/dsh-skills-manager#v0.3.2

之前安装失败或显示异常的用户,重跑一次安装 / 更新命令即可;本地 link: 开发环境无需处理。

说明

  • 本次只改打包白名单,无运行时代码变更,不需要为功能重启 DSH。
  • 测试:node --test "test/*.test.mjs" → 21 项全部通过;npm pack 产物已包含 cordis.patch.yml。

v0.3.1 — 深色模式视觉修复

Choose a tag to compare

@daha1216 daha1216 released this 18 Oct 11:56

修复

设置页在 DSH 深色主题下按钮与开关失形、强调色不可读。根因是几个令牌语义用错、还有几个令牌在 DSH 里根本不存在。

  • 主按钮前景与底色:.skm-btn-primary 原用 --dsw-alias-brand-primary 配 color:#ffffff。该令牌是宿主单色主按钮的底色(深色下为近白 #f9fafb),于是变成白底白字。改用宿主自己的配对 --dsw-alias-button-primary-fill + --dsw-alias-label-primary-foreground;hover 由 filter: brightness(1.06) 改为 --dsw-alias-button-primary-hover。
  • 危险按钮:.skm-btn-danger 文字改 --dsw-alias-label-primary-foreground;hover 由 filter: brightness(1.08) 改为按主题色混合,深色下不再糊成一团。
  • 强调色:13 处 --dsw-alias-brand-primary 统一改为 --dsw-alias-link(浅色 #4176e6 / 深色 #7aaaff)。
  • 失效令牌:4 处 --dsh-code-font-family 改为 --ds-font-family-code;3 处 --dsw-alias-state-warning-primary(少个 ing)改为 --dsw-alias-state-warn-primary。
  • 开关:按宿主 ._switch_1ik0f_5 / ._thumb_1ik0f_33 的令牌配对重写。此前选中态的旋钮与轨道在深色下对比度仅约 2:1;现在未选中轨道用 --dsw-alias-border-l3、旋钮用 --dsw-alias-switch-thumb,选中轨道用 --dsw-alias-button-primary-fill、旋钮单独覆盖为 --dsw-alias-label-primary-foreground,并合并了原先重复的两条选中态选择器。
  • 阴影:卡片展开与编辑器面板的硬编码 rgba(0,0,0,…) 阴影改为 --dsw-shadow-lv2。

测试

npm test 21 项通过、0 失败。

升级

dsh plugin --profile web add github:daha1216/dsh-skills-manager

或通过插件目录更新。客户端改动刷新页面即可生效。

v0.3.0 — 一键打开技能安装目录

Choose a tag to compare

@daha1216 daha1216 released this 17 Oct 21:32

新增

  • 设置页工具栏新增「打开目录」按钮:一键在系统文件管理器中打开技能安装目录(~/.dsh/skills)。
  • 每个技能卡片新增「打开目录」:目录型技能直接定位到该技能目录,单文件型技能定位到技能根目录。

平台支持

  • Windows:explorer.exe + file-URL 编码(非 ASCII 路径、逗号/等号安全转义),与 DSH 内置打开方式一致。
  • macOS:open;Linux:xdg-open(WSL 走 Windows 资源管理器)。

安全

  • POST /skills-manager/api/open 仅接受 POST,沿用 Host/Origin 信任围栏与 application/json 校验。
  • 打开目标限定在技能根目录内,拒绝越界路径;spawn 仅传 argv,不拼接 shell。
  • 根目录不存在时自动创建。

测试与文档

  • 新增 3 项测试(根目录/技能目录打开、缺目录创建与不安全请求拒绝、Windows 路径编码),共 21 项测试通过。
  • README 补充 /open API、客户端功能与安全边界说明。

升级

dsh plugin --profile web add github:daha1216/dsh-skills-manager

或通过插件目录更新。宿主与客户端改动需要重启 DSH 后生效。

v0.2.0 — 安全与数据保真修复

Choose a tag to compare

@daha1216 daha1216 released this 17 Oct 20:58

安全与数据保真修复

本版针对设置页「技能」管理插件的审查结果做了整体修复。

数据安全(P0)

  • frontmatter 改为分段解析与序列化:支持 > / | 块标量、引号、行内注释、多行 plain 值;未知键、注释与 metadata 原样保留。
  • 修复切换调用策略时块标量 description 被清空的数据丢失:此前写回后官方 provider 会因 description 为空而静默忽略整个技能。
  • 修复 --- 之后空行每次保存递增的问题。

安全边界(P1)

  • API 增加与 DSH 自身 /api 一致的信任围栏:Host 必须为 loopback/受信主机(可用 DSH_SKILLS_MANAGER_TRUSTED_HOSTS 扩展)、拒绝 sec-fetch-site: cross-site、Origin 必须同源、写请求必须是 application/json、请求体上限 1 MB。
  • 原子写(临时文件 + rename),写前旧内容备份到 <root>/.backups/;删除改为移入 <root>/.trash/,不再永久删除。
  • 保存与策略切换支持 expectedMtimeMs,编辑器打开期间文件被外部修改会返回 409 而不是静默覆盖。
  • 单个技能读取失败降级为卡片上的 problem,不再让整个列表 500。

正确性与体验(P2)

  • 符号链接 / junction 技能可被发现(与官方 provider 行为一致);flat 技能保存不再产生重复条目。
  • 客户端:保存后自动回填预览、未保存修改确认、保存/删除成功提示、busy 状态防重复点击、错误横幅不再双前缀。
  • 可访问性:label 关联、role=alert / aria-live、键盘可达开关、窄屏响应式。
  • 文案改走 ctx.locale(zh / en 字典),导航 label 函数化,语言切换会刷新。
  • 新增 node:test 测试 18 项,覆盖解析往返、鉴权、体积上限、改名冲突、mtime 冲突、.trash、路径穿越等。

安装 / 更新

dsh plugin --profile web add github:daha1216/dsh-skills-manager

宿主 index.js 改动需重启 DSH 桌面端生效;设置页客户端改动刷新页面即可。