diff --git a/packages/client/ui-skill/README.i18n.yaml b/packages/client/ui-skill/README.i18n.yaml index 88c72545c3..59386d4b39 100644 --- a/packages/client/ui-skill/README.i18n.yaml +++ b/packages/client/ui-skill/README.i18n.yaml @@ -51,8 +51,8 @@ en: da53c649077dad7e zh: 845f77793f8e10a2 /deepseek-ai-dsh-client-ui-skill/known-limitations-and-deferred-work: - en: cf53f93101c7ef11 - zh: e27ec720dad7b75d + en: 3c5dd1c12e5a5d61 + zh: 19e27163cb94dbc1 /deepseek-ai-dsh-client-ui-skill/known-limitations-and-deferred-work/dev-note: en: e67f633dc6fe7773 zh: 3bb0c20c93f16f98 diff --git a/packages/client/ui-skill/README.md b/packages/client/ui-skill/README.md index 94ef9a1465..fcc361b188 100644 --- a/packages/client/ui-skill/README.md +++ b/packages/client/ui-skill/README.md @@ -104,7 +104,8 @@ These limits define where the reference and the row fall back to generic behavio - **Result-only history pages use the generic row** — keyed dispatch needs the paired call in the runtime window; pagination that leaves the call outside has no tool identity. This client presentation feature does not extend the history wire contract to recover it. - **Text is the truth** — the reference is plain draft text; a hand-typed identical token is the same reference, and the host gesture boundary judges the sent text, not the menu interaction. Chip visuals derive from the lexicon scan; no occurrence identity, position tracking, or structured reference payload exists on the prompt wire. - **A menu opened before the prewarm settles** shows no skill candidates for that keystroke; the next keystroke re-polls the settled cache. -- **Profile changes outside the plugin manager keep cached catalogs** — an HMR reload after a CLI or hand edit announces no `plugin-manager/changed` event, so an open session lists its previous skills until a preset switch or connection reset. +- **Catalog changes without a forwarded event keep cached catalogs** — an HMR reload after a CLI or hand edit announces no `plugin-manager/changed` event, and adding or removing a `SKILL.md` on disk forwards no event at all, so an open session lists its previous skills until a preset switch, plugin manager operation, or connection reset. +- **Draft skill highlighting waits for the next catalog fetch** — a preset switch, plugin manager operation, or connection reset empties the session's lexicon, so with the menu closed an existing `/name` in the draft loses its skill highlight until the `/` menu fetches the catalog again; an open menu fetches it immediately. ### Dev Note diff --git a/packages/client/ui-skill/README.zh.md b/packages/client/ui-skill/README.zh.md index 208f8756fb..6594d3807d 100644 --- a/packages/client/ui-skill/README.zh.md +++ b/packages/client/ui-skill/README.zh.md @@ -104,7 +104,8 @@ source 不实现任何裁决钩子,也没有引用 codec:pick 落下字面 - **仅含工具结果的 history 页使用通用行**:键控分派要求配对的工具调用位于运行时窗口内;分页将工具调用留在窗口外时,工具结果没有工具身份。这项客户端呈现功能不会为了恢复该身份而扩展 history 协议约定。 - **文本是唯一依据**:引用是普通的草稿文本;手动键入的相同 token 就是同一个引用,宿主手势边界评判的是发出的文本,而不是菜单交互。chip 视觉由 lexicon 扫描派生;提示词协议上没有 occurrence 身份、位置跟踪或结构化引用载荷。 - **预热落定之前打开的菜单**:在那次击键下不显示 skill 候选;下一次击键会重新轮询已落定的缓存。 -- **插件管理器之外的 profile 变更保留已缓存的目录**:CLI 或手动编辑后由 HMR 应用的重载不发出 `plugin-manager/changed` 事件,已打开的会话会继续列出之前的 skill,直到切换预设或重置连接。 +- **没有转发事件的目录变更保留已缓存的目录**:CLI 或手动编辑后由 HMR 应用的重载不发出 `plugin-manager/changed` 事件,在磁盘上增删 `SKILL.md` 也不会转发任何事件,已打开的会话会继续列出之前的 skill,直到切换预设、执行插件管理操作或重置连接。 +- **草稿中的 skill 高亮等待下一次目录拉取**:切换预设、插件管理操作或重置连接会清空该会话的 lexicon;菜单关闭时,草稿里已有的 `/name` 会失去 skill 高亮,直到 `/` 菜单重新拉取目录;菜单打开时会立即重新拉取。 ### 开发备注 diff --git a/packages/client/ui-skill/src/client/index.ts b/packages/client/ui-skill/src/client/index.ts index 2de10d2ccb..c00dc119fd 100644 --- a/packages/client/ui-skill/src/client/index.ts +++ b/packages/client/ui-skill/src/client/index.ts @@ -249,8 +249,9 @@ export function apply(ctx: ClientContext): void { // A preset decides which skill providers an agent reads, so a switched // session's cached catalog belongs to the composition it no longer runs. ctx.remote.$on('agent-preset/selected', invalidate) - // The Host announces a manager operation after its reload, and the plugins - // it switched may register providers in the global layer every session reads. + // The Host announces every manager operation after its reload without + // naming what changed, and a switched plugin may register providers in the + // global layer every session reads, so each one drops every cached catalog. ctx.remote.$on('plugin-manager/changed', clearAll) ctx.on('connection/reset', clearAll) ctx.effect(() => {