diff --git a/lib/canvas-skill-tags.ts b/lib/canvas-skill-tags.ts index e71ca1487..f9283f630 100644 --- a/lib/canvas-skill-tags.ts +++ b/lib/canvas-skill-tags.ts @@ -225,7 +225,7 @@ function appendMissingCanvasSkillTags( return [ ...tags, ...additions.filter((tag) => !existingIds.has(tag.id)), - ].slice(0, 30); + ].slice(0, 50); } export function normalizeCanvasSkillTags(value: unknown): CanvasSkillTag[] { @@ -261,7 +261,7 @@ export function normalizeCanvasSkillTags(value: unknown): CanvasSkillTag[] { return DEFAULT_CANVAS_SKILL_TAGS; } - return normalized.slice(0, 30); + return normalized.slice(0, 50); } export function normalizeCanvasSkillTagSettings( diff --git a/tests/routes/admin-settings.test.ts b/tests/routes/admin-settings.test.ts index 7d685a589..31ea54778 100644 --- a/tests/routes/admin-settings.test.ts +++ b/tests/routes/admin-settings.test.ts @@ -216,6 +216,23 @@ test.describe.serial("/api/admin/settings", () => { expect(normalized.tags).toEqual(customTags); }); + test("canvas skill tag settings retain more than thirty configured skills", () => { + const configuredTags: CanvasSkillTag[] = Array.from({ length: 31 }, (_, index) => ({ + id: `configured-skill-${index + 1}`, + name: `Configured skill ${index + 1}`, + prompt: `Run configured skill ${index + 1}`, + })); + + const normalized = normalizeCanvasSkillTagSettings({ + enabled: true, + title: "Claw 快捷技能", + tags: configuredTags, + version: CANVAS_SKILL_TAGS_CONFIG_VERSION, + }); + + expect(normalized.tags).toEqual(configuredTags); + }); + test("canvas skill tags still use defaults when no stored setting exists", () => { const normalized = normalizeCanvasSkillTagSettings(null, { requireCurrentVersion: true,