Repository navigation
Releases: pure-craft/dsh-capability-panel
Releases · pure-craft/dsh-capability-panel
Release list
v1.4.2
What's Changed
- fix(settings): prefer the modern describe/replace API over legacy register by @MingShi350 in #8
New Contributors
- @MingShi350 made their first contribution in #8
Full Changelog: v1.4.1...v1.4.2
v1.4.1
v1.4.0
dsh 0.2 兼容与图标整理:依赖声明放宽到 0.2.0-rc 一代(0.1.x / 0.2 两代宿主通吃)、技能行新增指令文档预览入口、插件卡片有了自己的图标,面板入口与行内图标换成宿主语义明确的图形(工具行不再按名字猜类型)。
Added
- 插件在「设置 → 插件」里的卡片有了自己的图标(宿主官方插件同款的 36×36 渐变色标,图形取自宿主图标集里的滑杆一枚,不手绘):此前这张卡片显示的是默认占位图。
icon.svg已加入发布文件白名单,随 npm 包一起发出。 - 面板里每个技能行新增「在文档预览中打开 SKILL.md」入口(悬停行时出现在插入斜杠命令的图标旁):点击即在右侧边栏打开该技能的指令文档。关掉的技能同样可用——关闭只是注册了一层运行时影子,而影子此前丢掉了提供方的指令文件路径;插件现在把它一并继承,所以关掉的技能照样能读自己的 SKILL.md。宿主没挂右侧边栏、或该技能没有指令文件时,入口不出现。
Changed
- 面板入口图标换成宿主图标集里的滑杆(宿主自己的「选项」弹层用的同一族,且宿主没有任何界面在用这一枚):原来那枚「上下文注入」方框读起来像旁边「向下装进方框」的箭头,说不清点开是什么。
- 技能行悬停时的两个动作图标不再是一对箭头:在侧边栏打开指令文件改用宿主两侧边栏自己画的面板图标(面板图标=「把东西放到侧栏」),把
/命令填入输入框改用宿主处处表示「添加」的加号。此前是 ↗ 与 ↑——两枚都朝上、都像箭头,看不出各自做什么。 - 工具行不再按名字猜类型图标:宿主自己是用一张「内置工具名」表定类型的,表里没有的一律算「其他工具」(星形标)——因为工具名并不说明工具干什么,而面板里的工具行大多来自第三方 MCP 服务器、名字由作者自定。此前插件用关键词猜(
get_info猜成「读取」、search_issues猜成「检索」),等于给宿主从不断言的事情编了个类型。现在所有工具行统一用宿主的「其他工具」星形标,前置图标只回答一个问题:这行是什么东西(技能/服务器/工具)。
Fixed
- 能力行不再整列都是箭头:行首改为宿主自己的行布局——一个 18px 方格里同时放领域图标与折叠箭头,悬停行时图标淡出、箭头淡入,展开的行只显示上箭头;并且每行的图标是宿主自己对这类事物用的那一枚(同样 14px,全部取自宿主图标集,不手绘):技能用技能图标,工具用宿主给「其他工具」的星形标,MCP 服务器用宿主标记「已加载扩展」的插件图标。此前每行都是一个常驻箭头,且工具行全用终端的
>_、服务器行借用面板入口的「上下文注入」图标——两枚都读起来像箭头,还把入口的标记挪到了行里。(面板入口自己的图标随后也一并换了,见 Changed。) - 打开能力目录改为优先走宿主的文件打开器(会话控制器):Windows 上 Explorer 的路径编码、WSL 路径翻译、Finder 定位都由宿主负责,并会先经组合文件系统校验路径——沙箱部署因此会明确拒绝根目录之外的路径,而不是静默失败或点了没反应。只有宿主未挂载会话控制器、或拒绝校验该路径时,才回退到插件自己的打开器。
- Windows 下点击来源分组的分隔线现在真的会打开文件夹:此前只在后台闪出一个空控制台,资源管理器没有任何反应。macOS 与 Linux 不受影响。
Internal
- 依赖声明放宽到 dsh 0.2.0-rc.x 一代(
dsh-client-locale、dsh-client-ui-renderer),并新增@deepseek-ai/dsh-util-workspace-path:文档预览地址由宿主的工具按会话生成,插件不自己拼字符串。
Full Changelog: v1.3.0...v1.4.0
v1.3.0
v1.2.1
Fixed
- MCP tools masked by ANOTHER plugin for the session (e.g. a lazy-load manager's session-scoped restrict) no longer display as on in the session panel: rows now reflect the session's actual reachability, matching how system tools and skills were already judged. Previously the MCP list merged the global registry in and only consulted this plugin's own disable tables, so externally masked tools read as callable when the model cannot call them.
v1.2.0
Feature release: offline MCP visibility, late-registration defaults enforcement, and a restyled preset picker.
Added
- MCP servers declared in the host composition stay visible even when they currently register no tools (an on-demand local service that isn't running): the row lists the positions already stored off for it, marked honestly as "no tools registered", with a Reload button that hot-swaps the plugin instance to retry the connection now instead of waiting out the client's backoff. Both the session panel and Settings → Capability Panel show it.
- A GitHub feedback link sits at the foot of the session panel.
Changed
- The preset picker in Settings → Capability Panel is now a borderless pill with a theme-owned popup menu, matching the host's model selector instead of the native
<select>.
Fixed
- Tools that register mid-session (an on-demand MCP server connecting after the session was created) no longer bypass the preset's stored defaults: registry changes now re-apply the session's masks, idempotently and per-session serialized.
- Enabling an MCP server from its row now also clears per-tool masks a partial default left behind — previously the row read on while those tools stayed denied.
- MCP server defaults seeded by a preset now display correctly in the session panel: a stored default that covers every tool a server exposes registers as a server-level mask (what the server row reads), while a partial default stays per-tool. Previously the per-tool restricts did deny the calls, but the server row read the server-level map and showed the server on.
v1.1.1
Bugfix release for the preset-defaults lifecycle and two 0.1.5 host changes.
Fixed
- Preset defaults now apply when a session's agent preset is switched after creation (the picker recomposes a blank session): seeded masks from the original composition survive the scope rebind, so the session's capability state is torn down and re-seeded from the newly selected preset, with the session's own recorded switches replayed on top. Previously the switch left the original preset's defaults in place and never applied the new ones.
- Capability mutations are serialized per session: seeding, restore, re-seed, and panel toggles all interleave skill I/O with the re-seed teardown, so a preset switch landing mid-seed could pile old-preset masks into the fresh state. One queue per session makes every mutation see a coherent state; cross-session work stays parallel.
- The composer's insert-command button no longer replaces an in-progress draft: newer hosts dropped the slot's
inputsnapshot prop, which read as an empty draft and overwrote it. The panel now reads the live draft through theuseInputselector prop and appends the slash command as before. - Settings → Capability Panel no longer 503s the whole preset list when one preset fails to mount (e.g. a host upgrade tightened a plugin's config schema, as dsh 0.1.5 did for the persona row): the failing preset is listed as broken with the mount error, and every other preset lists and toggles normally.
v1.1.0
Added
- Source provenance everywhere: Skills and MCP entries — in both the session panel and Settings → Capability Panel — group under labeled divider rules that say where they come from. Preset-bundled entries group under their preset's name (detected by matching the discovery directory against preset paths); every other group shows its real directory, abbreviated (
~, session-cwd-relative) and middle-ellipsized when long. Hovering a group divider shows the full path and a folder icon; one click opens that source directory in the system file manager (macOSopen, Windowsstart, freedesktopxdg-open) via the new loopback-onlyPOST /api/capability-panel/open-folderroute, which also resolves user/project/host/preset sources without a session. MCP servers report their configuration source too:hostfor the host composition, or the composing preset's name.
Changed
- UI 升级: Settings → Capability Panel now speaks the session panel's visual language — compact rounded rows with a hover background instead of per-row hairlines, section titles restyled as real headings (primary, semibold) instead of uppercase micro-labels, and ruled source dividers with cleaner spacing that replace the stacked separator lines.
Fixed
- Panel-disabled skills no longer misreport their source as
custom: the disable shadow now inherits the original skill's source and provider, so a disabled~/.agentsskill still groups under its real source. - Peer dependency ranges now accept dsh 0.1.3/0.1.5 pre-releases (API compatibility verified through
0.1.5-alpha.1), so installs against newer dsh builds stop warning.
Internal
- Removed dead code left over from the pre-surface read path (
collectReplacements,SurfaceReplacement, theRawEvent.surfaceOpfield, and a compat alias). No behavior change. - Added
pnpm scan:dead-code(scripts/dead-code-scan.mjs), an advisory dead-code report.
Documentation
- npm/CI/license badges; zero-configuration install guidance and both entry points; a Support section; CONTRIBUTING.md (English/中文); READMEs now in 日本語 and 한국어.
v1.0.0
Initial public release. See CHANGELOG.md: https://github.com/pure-craft/dsh-capability-panel/blob/main/CHANGELOG.md#100---2026-09-05