From cbffb908c85ed305bc037d54ae7cae70986129b4 Mon Sep 17 00:00:00 2001 From: yaojin Date: Tue, 18 Aug 2026 16:16:20 +0800 Subject: [PATCH] fix: add missing builtInGroup and customGroup translation keys The agent preset selector uses t('builtInGroup') and t('customGroup') for the Built-in and Custom group labels, but these keys were not defined in either the English or Chinese translation dictionaries. This caused the raw key names to appear in the UI instead of translated labels. Fixes #11 --- ...sh-client-ui-agent-preset+0.1.0-rc.7.patch | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch b/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch index eb357373..e08a9ba0 100644 --- a/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch +++ b/patches/@deepseek-ai+dsh-client-ui-agent-preset+0.1.0-rc.7.patch @@ -2,7 +2,7 @@ diff --git a/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js index 259765c..ca9dd68 100644 --- a/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js +++ b/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js -@@ -64,7 +64,30 @@ window.__ModuleLoader__.load({ +@@ -64,7 +64,32 @@ window.__ModuleLoader__.load({ deleteTitle: "Delete this preset?", deleteDescription: "The preset directory is deleted. Sessions already running on it keep working; new sessions cannot select it.", deleteConfirm: "Delete", @@ -12,6 +12,8 @@ index 259765c..ca9dd68 100644 + awesomePreset: "Awesome preset", + searchPresets: "Search modes…", + recentPresets: "Recent", ++ builtInGroup: "Built-in", ++ customGroup: "Custom", + noMatchingPresets: "No matching modes", + browseAwesomePresets: "Browse Awesome Presets…", + exportPreset: "Export preset", @@ -34,7 +36,7 @@ index 259765c..ca9dd68 100644 }; /** Simplified Chinese copy. */ const zh = { -@@ -120,7 +143,30 @@ window.__ModuleLoader__.load({ +@@ -120,7 +145,32 @@ window.__ModuleLoader__.load({ deleteTitle: "删除该预设?", deleteDescription: "预设目录将被删除。已在其上运行的会话不受影响;新会话将无法再选择它。", deleteConfirm: "删除", @@ -44,6 +46,8 @@ index 259765c..ca9dd68 100644 + awesomePreset: "Awesome preset", + searchPresets: "搜索模式…", + recentPresets: "最近使用", ++ builtInGroup: "内置", ++ customGroup: "自定义", + noMatchingPresets: "没有匹配的模式", + browseAwesomePresets: "浏览 Awesome Presets…", + exportPreset: "导出预设", @@ -66,7 +70,7 @@ index 259765c..ca9dd68 100644 }; const BUILT_IN_PRESET_KEYS = { standard: { -@@ -333,7 +379,7 @@ window.__ModuleLoader__.load({ +@@ -333,7 +383,7 @@ window.__ModuleLoader__.load({ } //#endregion //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-agent-preset/src/client/AgentPresetSeat.module.css.mjs @@ -75,7 +79,7 @@ index 259765c..ca9dd68 100644 const tagId$1 = "@deepseek-ai/dsh-client-ui-agent-preset/AgentPresetSeat.module.css"; if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) { const tag = document.createElement("style"); -@@ -346,6 +392,21 @@ window.__ModuleLoader__.load({ +@@ -346,6 +396,21 @@ window.__ModuleLoader__.load({ "seatIcon": "cubgiG_seatIcon", "introChar": "cubgiG_introChar", "chevron": "cubgiG_chevron", @@ -97,7 +101,7 @@ index 259765c..ca9dd68 100644 "itemName": "cubgiG_itemName", "introIcon": "cubgiG_introIcon", "itemDesc": "cubgiG_itemDesc", -@@ -374,6 +435,8 @@ window.__ModuleLoader__.load({ +@@ -374,6 +439,8 @@ window.__ModuleLoader__.load({ const INTRO_CHAR_STAGGER_MS = 40; const INTRO_TEXT_REVEAL_MS = 200; const INTRO_CHAR_FADE_MS = 400; @@ -106,7 +110,7 @@ index 259765c..ca9dd68 100644 /** * Per-character start offset for the introduce reveal. * @param count - character count of the shown preset name. -@@ -391,6 +454,15 @@ window.__ModuleLoader__.load({ +@@ -391,6 +458,15 @@ window.__ModuleLoader__.load({ function AgentPresetSeat({ load, select, introduced, useAgentPresetSeat, t }) { const state = useAgentPresetSeat((snapshot) => snapshot); const [open, setOpen] = (0, react.useState)(false); @@ -122,7 +126,7 @@ index 259765c..ca9dd68 100644 (0, react.useEffect)(() => { load(); }, [load]); -@@ -430,34 +502,114 @@ window.__ModuleLoader__.load({ +@@ -430,34 +506,114 @@ window.__ModuleLoader__.load({ children: character }, index)) }) : label; @@ -253,7 +257,7 @@ index 259765c..ca9dd68 100644 anchor: (0, react_jsx_runtime.jsxs)("button", { type: "button", className: AgentPresetSeat_module_css_default.seat, -@@ -707,6 +859,8 @@ window.__ModuleLoader__.load({ +@@ -707,6 +863,8 @@ window.__ModuleLoader__.load({ rows: [], copy: null, view: null, @@ -262,7 +266,7 @@ index 259765c..ca9dd68 100644 pendingDelete: null, deleting: false, revealedPaths: {} -@@ -724,6 +878,13 @@ window.__ModuleLoader__.load({ +@@ -724,6 +882,13 @@ window.__ModuleLoader__.load({ if (!PRESET_ID.test(draft.id)) return "idInvalid"; if (rows.some((row) => row.id === draft.id)) return "idTaken"; } @@ -276,7 +280,7 @@ index 259765c..ca9dd68 100644 /** Reads the roster and drives the copy dialog, viewer, and location reveals. */ var AgentPresetSectionController = class { api; -@@ -911,6 +1072,143 @@ window.__ModuleLoader__.load({ +@@ -911,6 +1076,143 @@ window.__ModuleLoader__.load({ this.set({ error: messageOf(error) }); } } @@ -420,7 +424,7 @@ index 259765c..ca9dd68 100644 /** * Ask for confirmation before deleting one preset. * @param id - the preset to delete, or null to dismiss the confirmation. -@@ -974,16 +1272,25 @@ window.__ModuleLoader__.load({ +@@ -974,16 +1276,25 @@ window.__ModuleLoader__.load({ }; //#endregion //#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-agent-preset/src/client/AgentPresetSection.module.css.mjs @@ -448,7 +452,7 @@ index 259765c..ca9dd68 100644 "brokenBadge": "rtSEdW_brokenBadge", "inUse": "rtSEdW_inUse", "cards": "rtSEdW_cards", -@@ -1104,6 +1411,84 @@ window.__ModuleLoader__.load({ +@@ -1104,6 +1415,84 @@ window.__ModuleLoader__.load({ }) }); } @@ -533,7 +537,7 @@ index 259765c..ca9dd68 100644 /** * Render one card's description, clamped by CSS and offered in full on hover. * The tooltip is attached only while the text is actually cut off, so a short -@@ -1151,6 +1536,7 @@ window.__ModuleLoader__.load({ +@@ -1151,6 +1540,7 @@ window.__ModuleLoader__.load({ function AgentPresetSection(props) { const { useAgentPresetSection, t, load } = props; const state = useAgentPresetSection((snapshot) => snapshot); @@ -541,7 +545,7 @@ index 259765c..ca9dd68 100644 const viewedId = state.view?.id; const viewedRow = viewedId === void 0 ? void 0 : state.rows.find((row) => row.id === viewedId); const viewedTitle = state.view === null ? "" : viewedRow === void 0 ? state.view.title : presetDisplayText(viewedRow, t).name; -@@ -1191,9 +1577,40 @@ window.__ModuleLoader__.load({ +@@ -1191,9 +1581,40 @@ window.__ModuleLoader__.load({ return (0, react_jsx_runtime.jsxs)("div", { className: AgentPresetSection_module_css_default.section, children: [ @@ -585,7 +589,7 @@ index 259765c..ca9dd68 100644 }), (0, react_jsx_runtime.jsx)("p", { className: AgentPresetSection_module_css_default.intro, -@@ -1289,7 +1706,7 @@ window.__ModuleLoader__.load({ +@@ -1289,7 +1710,7 @@ window.__ModuleLoader__.load({ }, children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconFolderOpenOutline16, {}) }), @@ -594,7 +598,7 @@ index 259765c..ca9dd68 100644 type: "button", className: AgentPresetSection_module_css_default.iconButton, disabled: !state.authorable || row.broken !== void 0, -@@ -1298,9 +1715,20 @@ window.__ModuleLoader__.load({ +@@ -1298,9 +1719,20 @@ window.__ModuleLoader__.load({ onClick: () => { props.beginCopy(row.id); }, @@ -618,7 +622,7 @@ index 259765c..ca9dd68 100644 type: "button", className: `${AgentPresetSection_module_css_default.iconButton} ${AgentPresetSection_module_css_default.iconDanger}`, "data-tip": t("delete"), -@@ -1329,13 +1757,22 @@ window.__ModuleLoader__.load({ +@@ -1329,13 +1761,22 @@ window.__ModuleLoader__.load({ (0, react_jsx_runtime.jsx)(CopyDialog, { state, t, @@ -644,7 +648,7 @@ index 259765c..ca9dd68 100644 (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Modal, { open: state.view !== null, onClose: () => { -@@ -1689,6 +2126,15 @@ window.__ModuleLoader__.load({ +@@ -1689,6 +2130,15 @@ window.__ModuleLoader__.load({ }, confirmCopy: () => section.confirmCopy(), openLocation: (id) => section.openLocation(id),