Skip to content

feat(reference): 引用弹窗技能库收藏置顶,并支持按中文展示名搜索 - #89

Merged
darknessomi merged 1 commit into
mainfrom
feat/skill-picker-favorites
Oct 20, 2026
Merged

darknessomi merged 1 commit into
mainfrom
feat/skill-picker-favorites

Conversation

@darknessomi

Copy link
Copy Markdown
Collaborator

问题

  1. 「选择引用内容」弹窗(AI 对话 @ 引用)→ 技能库:在 AI 技能库里收藏过的技能没有置顶,常用技能要滚动查找。
  2. 在该弹窗搜索框输入「战斗描写」搜不到这个技能,只能手动滚动勾选。

原因

写作 Skill 条目的 title 是机器名(如 battle-scene,也是 token 路由用的名字),列表上显示的是 displayTitle(中文展示名「战斗描写」)。弹窗的过滤只比对 item.title,所以按看得见的中文名搜索永远匹配不上。

修复

  • 搜索同时匹配 title 与 displayTitle(展示名被截断成 ... 时先去掉省略号)。
  • 弹窗订阅收藏 store(useFavoriteSkillStore),在技能库各子 tab 中把已收藏的技能(writing:<skillId> / de-ai:<skillId>,与技能库页的收藏键一致)稳定置顶;收藏与非收藏内部保持原顺序。文风、角色灵魂没有收藏入口,不受影响。

测试

  • ReferencePickerDialog.spec.tsx 新增 4 条:中文展示名搜索、收藏置顶渲染顺序、pinFavoriteSkills 稳定排序与按库区分、截断展示名匹配。回退实现后 3 条用例会失败,确认它们能抓到问题。
  • npx vitest run src/components/reference src/lib/reference:7 个文件 69 条全部通过。
  • npm run typecheck:只有 main 上原本就有的 1 个错误(src/lib/novel/outline-context-index.ts:221),与本改动无关。

@darknessomi
darknessomi merged commit 2d34d3c into main Oct 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant