zcode-pro 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +7 -6
- package/README.md +11 -10
- package/dist/inject.js +446 -108
- package/package.json +1 -1
- package/src/host/helper.mjs +15 -6
- package/src/inject/core.js +70 -48
- package/src/inject/features/composer-provider.js +112 -0
- package/src/inject/features/settings-dialog.js +73 -31
- package/src/inject/features/table-copy.js +148 -0
- package/src/inject/features/theme.js +25 -13
- package/src/inject/index.js +4 -0
- package/src/inject/ui.js +19 -3
package/dist/inject.js
CHANGED
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
agentsSave: "\u4FDD\u5B58",
|
|
115
115
|
agentsSaved: "\u5168\u5C40\u63D0\u793A\u8BCD\u5DF2\u4FDD\u5B58",
|
|
116
116
|
agentsLoadFailed: "\u8BFB\u53D6\u5168\u5C40\u63D0\u793A\u8BCD\u5931\u8D25",
|
|
117
|
-
proxyDesc: "\u4E3A ZCode Pro \u672C\u5730\u52A9\u624B\u53D1\u8D77\u7684\u7F51\u7EDC\u8BBF\u95EE\u8BBE\u7F6E HTTP \u4EE3\u7406\uFF1A\u63D2\u4EF6\u5E02\u573A\u7684\u66F4\u65B0\u4E0E\u5B89\u88C5\u3001\u63D2\u4EF6\u4F9D\u8D56\u8F6F\u4EF6\u7684\u5B89\u88C5\u4E0E\u5347\u7EA7\u3001WebDAV \u540C\u6B65\u90FD\u53EF\u8D70\u8BE5\u4EE3\u7406\uFF0C\u7528\u4E0B\u65B9\u5F00\u5173\u9009\u62E9\u751F\u6548\u8303\u56F4\u3002\u4E0D\u5F71\u54CD ZCode \u5E94\u7528\u672C\u8EAB\u4E0E\u6A21\u578B\u8BF7\u6C42\
|
|
117
|
+
proxyDesc: "\u4E3A ZCode Pro \u672C\u5730\u52A9\u624B\u53D1\u8D77\u7684\u7F51\u7EDC\u8BBF\u95EE\u8BBE\u7F6E HTTP \u4EE3\u7406\uFF1A\u63D2\u4EF6\u5E02\u573A\u7684\u66F4\u65B0\u4E0E\u5B89\u88C5\u3001\u63D2\u4EF6\u4F9D\u8D56\u8F6F\u4EF6\u7684\u5B89\u88C5\u4E0E\u5347\u7EA7\u3001WebDAV \u540C\u6B65\u90FD\u53EF\u8D70\u8BE5\u4EE3\u7406\uFF0C\u7528\u4E0B\u65B9\u5F00\u5173\u9009\u62E9\u751F\u6548\u8303\u56F4\u3002\u4E0D\u5F71\u54CD ZCode \u5E94\u7528\u672C\u8EAB\u4E0E\u6A21\u578B\u8BF7\u6C42\u3002",
|
|
118
118
|
proxyPlaceholder: "http://127.0.0.1:7890",
|
|
119
119
|
proxySave: "\u4FDD\u5B58",
|
|
120
120
|
proxySaved: "\u4EE3\u7406\u8BBE\u7F6E\u5DF2\u4FDD\u5B58",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
proxyScopeDeps: "\u63D2\u4EF6\u4F9D\u8D56\u8F6F\u4EF6",
|
|
129
129
|
proxyScopeDepsDesc: "headroom \u4E0E rtk \u7684\u5B89\u88C5\u3001\u68C0\u67E5\u66F4\u65B0\u4E0E\u5347\u7EA7\uFF08pip \u4E0E GitHub \u4E0B\u8F7D\uFF09\u8D70\u4EE3\u7406\u3002",
|
|
130
130
|
proxyScopeSync: "\u540C\u6B65",
|
|
131
|
-
proxyScopeSyncDesc: "WebDAV \u4E0A\u4F20\u4E0E\u4E0B\u8F7D\u8D70\u4EE3\u7406\u3002
|
|
131
|
+
proxyScopeSyncDesc: "WebDAV \u4E0A\u4F20\u4E0E\u4E0B\u8F7D\u8D70\u4EE3\u7406\u3002",
|
|
132
132
|
tabSync: "\u540C\u6B65",
|
|
133
133
|
tabDebug: "\u8C03\u8BD5",
|
|
134
134
|
testNoSessionHint: "\u9009\u62E9\u201C\u8DDF\u968F\u5F53\u524D\u4F1A\u8BDD[\u5F53\u524D\u6A21\u578B]\u201D\u65F6\uFF0C\u9009\u62E9\u4E0A\u6B21\u4F1A\u8BDD\u4E2D\u4F7F\u7528\u7684\u4F9B\u5E94\u5546[\u6A21\u578B]",
|
|
@@ -215,13 +215,13 @@
|
|
|
215
215
|
defaultValue: "\u9ED8\u8BA4",
|
|
216
216
|
resetDefault: "\u6062\u590D\u9ED8\u8BA4",
|
|
217
217
|
featureProjectMenu: "\u9879\u76EE\u83DC\u5355\u589E\u5F3A",
|
|
218
|
-
featureProjectMenuDesc: "\u9879\u76EE\
|
|
218
|
+
featureProjectMenuDesc: "\u9879\u76EE\u66F4\u591A\u83DC\u5355\uFF1A\u6253\u5F00\u6587\u4EF6\u5939\u4E0E\u590D\u5236\u8DEF\u5F84\uFF08\u522B\u540D\u4E0E\u5207\u6362\u6587\u4EF6\u5939\u5DF2\u505C\u7528\uFF09\u3002",
|
|
219
219
|
featureTaskOrder: "\u4FA7\u8FB9\u680F\u4F1A\u8BDD\u62D6\u52A8\u6392\u5E8F",
|
|
220
|
-
featureTaskOrderDesc: "\
|
|
220
|
+
featureTaskOrderDesc: "\u62D6\u52A8\u8C03\u6574\u7F6E\u9876\u3001\u9879\u76EE\u4E0E\u5206\u7EC4\u4E2D\u7684\u4F1A\u8BDD\u987A\u5E8F\uFF0C\u91CD\u542F\u540E\u4E0D\u53D8\u3002",
|
|
221
221
|
featureSessionSwitch: "\u4F1A\u8BDD\u5FEB\u6377\u5207\u6362",
|
|
222
|
-
featureSessionSwitchDesc: "{last} \
|
|
222
|
+
featureSessionSwitchDesc: "{last} \u6765\u56DE\u4E0A\u6B21\u4F1A\u8BDD\uFF1Balt+\u65B9\u5411\u952E/\u5FEB\u6377\u952E\u9009\u6700\u8FD1\u4F1A\u8BDD\uFF1B\u952E\u4F4D\u53EF\u6539",
|
|
223
223
|
featureTitleLock: "\u91CD\u547D\u540D\u4F1A\u8BDD\u540D\u9501\u5B9A",
|
|
224
|
-
featureTitleLockDesc: "\u624B\u52A8\u91CD\u547D\u540D\u8FC7\u7684\u4F1A\u8BDD\u4E0D\
|
|
224
|
+
featureTitleLockDesc: "\u624B\u52A8\u91CD\u547D\u540D\u8FC7\u7684\u4F1A\u8BDD\u4E0D\u88AB\u81EA\u52A8\u6807\u9898\u8986\u76D6\uFF0C\u4FA7\u680F\u59CB\u7EC8\u663E\u793A\u91CD\u547D\u540D\u540E\u7684\u540D\u5B57\u3002",
|
|
225
225
|
tabTitleGen: "\u4EFB\u52A1\u540D\u63D0\u793A\u8BCD",
|
|
226
226
|
titleGenShortDesc: "\u65B0\u4F1A\u8BDD\u5F00\u59CB\u4F5C\u7B54\u65F6\uFF0C\u6309\u6240\u9009\u4F9B\u5E94\u5546\u4E0E\u63D0\u793A\u8BCD\u751F\u6210\u4EFB\u52A1\u540D\u5E76\u6309\u624B\u52A8\u91CD\u547D\u540D\u4FDD\u5B58\uFF0C\u5B98\u65B9\u81EA\u52A8\u6807\u9898\u4E0D\u518D\u8986\u76D6\u3002",
|
|
227
227
|
titleGenEnabled: "\u542F\u7528",
|
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
titleGenTestOk: "\u751F\u6210\u7ED3\u679C\uFF1A",
|
|
248
248
|
titleGenTestFailed: "\u751F\u6210\u5931\u8D25",
|
|
249
249
|
featureWsRunning: "\u6298\u53E0\u65F6\u4EFB\u52A1\u8FD0\u884C\u4E2D\u63D0\u793A",
|
|
250
|
-
featureWsRunningDesc: "\u6709\u4F1A\u8BDD\
|
|
250
|
+
featureWsRunningDesc: "\u6709\u4F1A\u8BDD\u8FD0\u884C\u65F6\uFF0C\u6298\u53E0\u7684\u9879\u76EE\u4E0E\u4EFB\u52A1\u5206\u533A\u5934\u663E\u793A\u52A0\u8F7D\u56FE\u6807\uFF0C\u5168\u90E8\u7ED3\u675F\u6D88\u5931\u3002",
|
|
251
251
|
tabPerformance: "\u6027\u80FD",
|
|
252
252
|
perfDesc: "ZCode \u4E3A\u6BCF\u4E2A\u6253\u5F00\u8FC7\u7684\u9879\u76EE\u5E38\u9A7B\u4E00\u4E2A\u4F1A\u8BDD\u8FDB\u7A0B\uFF0C\u5E94\u7528\u81EA\u8EAB\u4E0D\u4F1A\u56DE\u6536\uFF0C\u9879\u76EE\u591A\u4E86\u5185\u5B58\u5360\u7528\u5C31\u9AD8\u3002\u5F00\u542F\u540E\uFF0C\u957F\u65F6\u95F4\u672A\u4F7F\u7528\u4E14\u6CA1\u6709\u4EFB\u52A1\u5728\u8DD1\u7684\u9879\u76EE\u4F1A\u88AB\u81EA\u52A8\u91CA\u653E\uFF1A\u4F1A\u8BDD\u8BB0\u5F55\u4E0D\u53D7\u5F71\u54CD\uFF0C\u518D\u6B21\u6253\u5F00\u65F6\u81EA\u52A8\u6062\u590D\uFF0C\u4EC5\u9996\u6B21\u56DE\u590D\u6709\u51E0\u79D2\u7B49\u5F85\u3002\u6B63\u5728\u4F7F\u7528\u7684\u9879\u76EE\u3001\u8FD0\u884C\u4E2D\u7684\u4F1A\u8BDD\u4E0E\u540E\u53F0\u547D\u4EE4\u3001\u5B9A\u65F6\u4EFB\u52A1\u90FD\u4E0D\u4F1A\u88AB\u56DE\u6536\u3002\u540E\u53F0\u547D\u4EE4\u68C0\u6D4B\u4F9D\u8D56\u7CFB\u7EDF\u8FDB\u7A0B\u4FE1\u606F\uFF08Linux / macOS / Windows \u5404\u8D70\u7CFB\u7EDF\u81EA\u5E26\u5DE5\u5177\uFF09\uFF0C\u68C0\u6D4B\u4E0D\u53EF\u7528\u65F6\u529F\u80FD\u81EA\u52A8\u505C\u7528\u3002",
|
|
253
253
|
featureIdleReclaim: "\u7A7A\u95F2\u9879\u76EE\u5185\u5B58\u56DE\u6536",
|
|
@@ -257,17 +257,17 @@
|
|
|
257
257
|
idleReclaimStartupHint: "\u5E94\u7528\u542F\u52A8\u4F1A\u4E3A\u6BCF\u4E2A\u6062\u590D\u7684\u9879\u76EE\u9884\u70ED\u8FDB\u7A0B\uFF0C\u5230\u70B9\u628A\u672A\u4F7F\u7528\u7684\u9879\u76EE\u4E00\u6B21\u6536\u6389\uFF1B0 = \u542F\u52A8\u540E\u7ACB\u5373\u56DE\u6536\uFF0C\u8BE5\u6B21\u4E0D\u53D7\u4E0A\u4E00\u9879\u7A7A\u95F2\u65F6\u957F\u9650\u5236",
|
|
258
258
|
idleReclaimUnit: "\u5206\u949F",
|
|
259
259
|
featureToolbarIcons: "\u4FA7\u680F\u83DC\u5355\u5E76\u5165\u9876\u680F",
|
|
260
|
-
featureToolbarIconsDesc: "\
|
|
260
|
+
featureToolbarIconsDesc: "\u65B0\u5EFA\u4EFB\u52A1/\u641C\u7D22/\u81EA\u52A8\u5316/\u63D2\u4EF6\u5E02\u573A\u6536\u6210\u9876\u680F\u56FE\u6807\u6309\u94AE\u3002",
|
|
261
261
|
tbNewTask: "\u65B0\u5EFA\u4EFB\u52A1",
|
|
262
262
|
tbSearch: "\u641C\u7D22",
|
|
263
263
|
tbAutomations: "\u81EA\u52A8\u5316",
|
|
264
264
|
tbPluginStore: "\u63D2\u4EF6\u5E02\u573A",
|
|
265
265
|
featurePinnedCollapse: "\u5DF2\u7F6E\u9876\u5206\u533A\u53EF\u6298\u53E0",
|
|
266
|
-
featurePinnedCollapseDesc: "\u4FA7\u8FB9\u680F\
|
|
266
|
+
featurePinnedCollapseDesc: "\u4FA7\u8FB9\u680F\u5DF2\u7F6E\u9876\u6807\u9898\u53EF\u70B9\u51FB\u6298\u53E0/\u5C55\u5F00\u5176\u4EFB\u52A1\u5217\u8868\u3002",
|
|
267
267
|
featureSandboxReclaim: "\u63D2\u4EF6\u754C\u9762\u6C99\u7BB1\u56DE\u6536",
|
|
268
|
-
featureSandboxReclaimDesc: "\
|
|
268
|
+
featureSandboxReclaimDesc: "\u6C99\u7BB1\u6EE1 64 \u4E2A\u65F6\u81EA\u52A8\u91CA\u653E\u6700\u65E9\u7684\uFF0C\u65B0\u5361\u7247\u4E0D\u518D\u6253\u4E0D\u5F00\uFF1B\u65E7\u5361\u91CD\u65B0\u6253\u5F00\u6240\u5728\u4F1A\u8BDD\u5373\u53EF\u6062\u590D\u3002",
|
|
269
269
|
featurePluginCardRetry: "\u63D2\u4EF6\u5361\u7247\u81EA\u52A8\u91CD\u8BD5",
|
|
270
|
-
featurePluginCardRetryDesc: "\u56E0\u540D\u989D\u4E0A\u9650\u52A0\u8F7D\u5931\u8D25\u7684\u63D2\u4EF6\u5361\u7247\u81EA\u52A8\u70B9\u51FB\
|
|
270
|
+
featurePluginCardRetryDesc: "\u56E0\u540D\u989D\u4E0A\u9650\u52A0\u8F7D\u5931\u8D25\u7684\u63D2\u4EF6\u5361\u7247\u81EA\u52A8\u70B9\u51FB\u91CD\u65B0\u52A0\u8F7D\uFF0C\u540D\u989D\u7A7A\u51FA\u540E\u81EA\u52A8\u6062\u590D\u3002",
|
|
271
271
|
visionCardUi: "\u601D\u8003\u8FC7\u7A0B\u663E\u793A\u8BC6\u56FE\u5361\u7247",
|
|
272
272
|
pinnedToggleAria: "\u6298\u53E0/\u5C55\u5F00\u5DF2\u7F6E\u9876",
|
|
273
273
|
sidebarProjectSpacingName: "\u9879\u76EE\u95F4\u8DDD",
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
switcherAttentionHint: "\u8FD0\u884C\u4E2D / \u8FD0\u884C\u5B8C\u672A\u67E5\u770B\u7684\u4EFB\u52A1 \xB7 {prev} / {next} \u6216 \u2191 / \u2193 \u9009\u62E9\uFF0CEnter \u6216\u677E\u5F00 alt \u5207\u6362",
|
|
291
291
|
switcherAttentionEmpty: "\u6682\u65E0\u8FD0\u884C\u4E2D\u6216\u672A\u67E5\u770B\u7684\u4EFB\u52A1",
|
|
292
292
|
featureNewtabPanels: "\u65B0\u6807\u7B7E\u9875\u63D2\u4EF6\u9762\u677F\u5165\u53E3",
|
|
293
|
-
featureNewtabPanelsDesc: "\
|
|
293
|
+
featureNewtabPanelsDesc: "\u65B0\u6807\u7B7E\u9875\u52A0\u5165\u7B2C\u4E09\u65B9\u63D2\u4EF6\uFF08headroom\u3001rtk \u7B49\uFF09\u7684\u9762\u677F\u5361\u7247\uFF0C\u70B9\u51FB\u5728\u4FA7\u8FB9\u9762\u677F\u6253\u5F00\u3002",
|
|
294
294
|
ntpDescSuffix: "\u63D2\u4EF6\u9762\u677F",
|
|
295
295
|
ntpNeedSession: "\u5148\u6253\u5F00\u4E00\u4E2A\u4EFB\u52A1\u4F1A\u8BDD\uFF0C\u518D\u4ECE\u65B0\u6807\u7B7E\u9875\u6253\u5F00\u63D2\u4EF6\u9762\u677F",
|
|
296
296
|
featureStatusBarDesc: "\u63D0\u95EE\u8F93\u5165\u6846\u53F3\u4E0B\u89D2\u548C\u6BCF\u8F6E\u56DE\u7B54\u6700\u540E\u663E\u793A\u7EDF\u8BA1\u9879\u3002",
|
|
@@ -304,12 +304,12 @@
|
|
|
304
304
|
themeBgRegionRight: "\u53F3\u4FA7\u8FB9\u680F",
|
|
305
305
|
themeBgPane: "\u80CC\u666F\u56FE",
|
|
306
306
|
themeSkinTitle: "\u76AE\u80A4",
|
|
307
|
-
themeSkinDesc: "\u77E5\u540D\u7F16\u8F91\u5668\u4E3B\u9898\u914D\u8272\uFF0C\
|
|
307
|
+
themeSkinDesc: "\u77E5\u540D\u7F16\u8F91\u5668\u4E3B\u9898\u914D\u8272\uFF0C\u81EA\u52A8\u5339\u914D ZCode \u7684\u6D45\u8272 / \u6DF1\u8272\u6A21\u5F0F\uFF1B\u9ED8\u8BA4\u4FDD\u6301 ZCode \u539F\u6837\uFF0C\u81EA\u5B9A\u4E49\u5728\u4E0B\u65B9\u81EA\u884C\u8C03\u8272\u3002",
|
|
308
308
|
themeSkinCustom: "\u81EA\u5B9A\u4E49",
|
|
309
309
|
themeCustomTitle: "\u81EA\u5B9A\u4E49\u4E3B\u9898",
|
|
310
|
-
themeCustomHint: "\u6539\u989C\u8272\u5373\u5B9E\u65F6\u751F\u6548\uFF08\u81EA\u52A8\u5207\u5230\u81EA\u5B9A\u4E49\u76AE\u80A4\uFF09\uFF1B\
|
|
311
|
-
themeCustomLight: "\
|
|
312
|
-
themeCustomDark: "\
|
|
310
|
+
themeCustomHint: "\u6539\u989C\u8272\u5373\u5B9E\u65F6\u751F\u6548\uFF08\u81EA\u52A8\u5207\u5230\u81EA\u5B9A\u4E49\u76AE\u80A4\uFF09\uFF1B\u6D45\u8272\u3001\u6DF1\u8272\u5404\u914D\u4E00\u6B21\uFF0C\u9009\u597D 5 \u4E2A\u989C\u8272\u5373\u53EF\u751F\u6210\u6574\u5957\u754C\u9762\u914D\u8272\u3002",
|
|
311
|
+
themeCustomLight: "\u6D45\u8272",
|
|
312
|
+
themeCustomDark: "\u6DF1\u8272",
|
|
313
313
|
themeCustomBg: "\u80CC\u666F",
|
|
314
314
|
themeCustomCard: "\u5361\u7247",
|
|
315
315
|
themeCustomFg: "\u6B63\u6587",
|
|
@@ -341,8 +341,15 @@
|
|
|
341
341
|
themeBgFitContain: "\u9002\u5E94",
|
|
342
342
|
themeBgFitFill: "\u62C9\u4F38",
|
|
343
343
|
themeBgFitTile: "\u5E73\u94FA",
|
|
344
|
-
|
|
344
|
+
themeBgMask: "\u906E\u7F69\u4E0D\u900F\u660E\u5EA6",
|
|
345
|
+
themeBgMaskHint: "\u6570\u503C\u8D8A\u9AD8\uFF0C\u56FE\u7247\u8D8A\u5411\u4E3B\u9898\u80CC\u666F\u8272\u6DE1\u5316\uFF0C\u6587\u5B57\u5BF9\u6BD4\u8D8A\u6E05\u6670",
|
|
346
|
+
themeBgMaskHint2: "\u56FE\u7247\u5411\u4E3B\u9898\u80CC\u666F\u8272\u6DE1\u5316\u7684\u7A0B\u5EA6",
|
|
347
|
+
themeBgBlur: "\u56FE\u7247\u6A21\u7CCA",
|
|
348
|
+
themeBgPanel: "\u9762\u677F\u4E0D\u900F\u660E\u5EA6",
|
|
349
|
+
themeBgPanelHint: "\u4FA7\u680F\u3001\u9762\u677F\u4E0E\u6807\u7B7E\u680F\u7684\u4E0D\u900F\u660E\u7A0B\u5EA6\u3002\u8D8A\u4F4E\uFF0C\u900F\u51FA\u7684\u56FE\u7247\u8D8A\u591A\u3002",
|
|
345
350
|
themeBgDeletedActive: "\u5F53\u524D\u80CC\u666F\u5DF2\u5220\u9664\uFF0C\u5DF2\u81EA\u52A8\u505C\u7528\u80CC\u666F",
|
|
351
|
+
tableCopyBtn: "\u590D\u5236\u8868\u683C",
|
|
352
|
+
tableCopied: "\u8868\u683C\u5DF2\u590D\u5236",
|
|
346
353
|
sbItemCtx: "\u4E0A\u4E0B\u6587\u5360\u7528",
|
|
347
354
|
sbItemQuestions: "\u63D0\u95EE\u6B21\u6570",
|
|
348
355
|
sbMaster: "\u542F\u7528\u7EDF\u8BA1",
|
|
@@ -395,7 +402,11 @@
|
|
|
395
402
|
featureFileActions: "\u6587\u4EF6\u83DC\u5355\u589E\u5F3A",
|
|
396
403
|
featureFileActionsDesc: "\u5728\u4F1A\u8BDD\u4E2D\u6587\u4EF6\u94FE\u63A5\u7684\u53F3\u952E\u83DC\u5355\u91CC\u65B0\u589E\u201C\u9ED8\u8BA4\u5E94\u7528\u6253\u5F00\u201D\u4E0E\u201C\u6253\u5F00\u6240\u5728\u76EE\u5F55\u201D\u3002",
|
|
397
404
|
featureImageCopy: "\u56FE\u7247\u53F3\u952E\u590D\u5236",
|
|
405
|
+
featureTableCopy: "\u590D\u5236\u8868\u683C",
|
|
406
|
+
featureComposerProvider: "\u6A21\u578B\u540D\u663E\u793A\u4F9B\u5E94\u5546",
|
|
398
407
|
featureImageCopyDesc: "\u53F3\u952E\u4F1A\u8BDD\u4E2D\u7684\u56FE\u7247\u6216\u70B9\u51FB\u653E\u5927\u7684\u9884\u89C8\u56FE\uFF0C\u53EF\u5C06\u56FE\u7247\u590D\u5236\u5230\u526A\u8D34\u677F\u3002",
|
|
408
|
+
featureTableCopyDesc: "\u8868\u683C\u5DE5\u5177\u6761\u65B0\u589E\u590D\u5236\u8868\u683C\uFF0C\u7C98\u8D34\u8FDB Excel / \u5BCC\u6587\u672C\u7F16\u8F91\u5668\u5373\u4E3A\u5E72\u51C0\u8868\u683C\u3002",
|
|
409
|
+
featureComposerProviderDesc: "\u6A21\u578B\u540D\u524D\u663E\u793A\u4F9B\u5E94\u5546\u540D\uFF08\u5982 BigModel-Max1 / glm-5.3\uFF09\uFF0C\u533A\u5206\u540C\u540D\u6A21\u578B\u3002",
|
|
399
410
|
imageCopy: "\u590D\u5236\u56FE\u7247",
|
|
400
411
|
imageCopied: "\u56FE\u7247\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F",
|
|
401
412
|
imageCopyFailed: "\u590D\u5236\u56FE\u7247\u5931\u8D25",
|
|
@@ -418,7 +429,7 @@
|
|
|
418
429
|
pluginsUpdatesAvailable: "zcode-plugins \u6709 {n} \u4E2A\u63D2\u4EF6\u53EF\u66F4\u65B0\uFF08ZCode Pro \u8BBE\u7F6E \u2192 \u529F\u80FD\uFF09",
|
|
419
430
|
pluginsAutoUpdated: "zcode-plugins \u63D2\u4EF6\u5DF2\u66F4\u65B0",
|
|
420
431
|
tabVision: "Vision",
|
|
421
|
-
visionDesc: "\u4E3B\u6A21\u578B\u4E0D\u652F\u6301\u56FE\u7247\u8F93\u5165\u65F6\uFF08\u5982 glm-5.3\uFF09\uFF0C\u81EA\u52A8\u628A\u6D88\u606F\u91CC\u7684\u56FE\u7247\u4EA4\u7ED9\u4E0B\u9762\u7684\u89C6\u89C9\u6A21\u578B\u8BC6\u522B\uFF0C\u628A\u63CF\u8FF0\u5E26\u7ED9\u4E3B\u6A21\u578B\uFF08zcode-vision \u63D2\u4EF6\uFF1B/vision-* \u547D\u4EE4\u7F16\u8F91\u540C\u4E00\u914D\u7F6E\uFF09\u3002
|
|
432
|
+
visionDesc: "\u4E3B\u6A21\u578B\u4E0D\u652F\u6301\u56FE\u7247\u8F93\u5165\u65F6\uFF08\u5982 glm-5.3\uFF09\uFF0C\u81EA\u52A8\u628A\u6D88\u606F\u91CC\u7684\u56FE\u7247\u4EA4\u7ED9\u4E0B\u9762\u7684\u89C6\u89C9\u6A21\u578B\u8BC6\u522B\uFF0C\u628A\u63CF\u8FF0\u5E26\u7ED9\u4E3B\u6A21\u578B\uFF08zcode-vision \u63D2\u4EF6\uFF1B/vision-* \u547D\u4EE4\u7F16\u8F91\u540C\u4E00\u914D\u7F6E\uFF09\u3002",
|
|
422
433
|
visionEnabled: "\u542F\u7528",
|
|
423
434
|
visionForceIntercept: "\u4E3B\u6A21\u578B\u80FD\u770B\u56FE\u4E5F\u62E6\u622A",
|
|
424
435
|
visionMode: "\u94FE\u6A21\u5F0F",
|
|
@@ -449,14 +460,14 @@
|
|
|
449
460
|
visionCompressKBHint: "\u8D85\u8FC7\u8BE5\u5927\u5C0F\u7684\u56FE\u5148\u538B\u7F29\u518D\u8BC6\u522B\uFF08\u6700\u957F\u8FB9 2000\u3001JPEG\uFF09\uFF1B0 = \u4E0D\u538B\u7F29",
|
|
450
461
|
visionLoadFailed: "\u8BFB\u53D6\u89C6\u89C9\u4EE3\u7406\u914D\u7F6E\u5931\u8D25",
|
|
451
462
|
tabRtk: "rtk",
|
|
452
|
-
rtkDesc: "rtk \u63D2\u4EF6\uFF1A\u628A\u5E38\u89C1\u5F00\u53D1\u547D\u4EE4\u7684\u8F93\u51FA\u538B\u7F29 60-90% \u518D\u8FDB\u5165\u4E0A\u4E0B\u6587\uFF08/rtk-* \u547D\u4EE4\u7F16\u8F91\u540C\u4E00\u914D\u7F6E\uFF09\u3002
|
|
463
|
+
rtkDesc: "rtk \u63D2\u4EF6\uFF1A\u628A\u5E38\u89C1\u5F00\u53D1\u547D\u4EE4\u7684\u8F93\u51FA\u538B\u7F29 60-90% \u518D\u8FDB\u5165\u4E0A\u4E0B\u6587\uFF08/rtk-* \u547D\u4EE4\u7F16\u8F91\u540C\u4E00\u914D\u7F6E\uFF09\u3002",
|
|
453
464
|
rtkEnabled: "\u542F\u7528",
|
|
454
465
|
rtkNotInstalled: "\u672A\u5B89\u88C5 rtk \u672C\u4F53\uFF1B\u5B89\u88C5\u540E\u4EE5\u4E0B\u8BBE\u7F6E\u751F\u6548\uFF08\u4F1A\u8BDD\u91CC\u6267\u884C /rtk-setup \u4E5F\u53EF\u4EE5\uFF09",
|
|
455
466
|
rtkInstallBin: "\u5B89\u88C5 rtk \u672C\u4F53",
|
|
456
467
|
rtkBinInstalled: "rtk \u672C\u4F53\u5DF2\u5B89\u88C5\uFF1BPATH \u9700\u6CE8\u9500\u91CD\u767B\u540E\u5BF9\u4F1A\u8BDD\u751F\u6548\uFF0C\u63D2\u4EF6\u94A9\u5B50\u5373\u65F6\u751F\u6548",
|
|
457
468
|
rtkWhitelistTitle: "\u767D\u540D\u5355\uFF08\u4E0D\u538B\u7F29\u76F4\u63A5\u653E\u884C\uFF09",
|
|
458
469
|
rtkBuiltinLabel: "\u5185\u7F6E\u653E\u884C\uFF08\u53EA\u8BFB\uFF0C\u968F\u63D2\u4EF6\u66F4\u65B0\uFF09\uFF1A",
|
|
459
|
-
rtkWhitelistDesc: "\u6BCF\u6761 name\uFF08\u5982 docker\uFF09\u6216 git:name\uFF08\u5982 git:clone\uFF09\
|
|
470
|
+
rtkWhitelistDesc: "\u6BCF\u6761 name\uFF08\u5982 docker\uFF09\u6216 git:name\uFF08\u5982 git:clone\uFF09\uFF0C\u52A0\u5165\u540E\u4E0D\u518D\u538B\u7F29\uFF1B\u5185\u7F6E\u7684 git add/commit/push\u3001mkdir/cp \u7B49\u4E0D\u53EF\u79FB\u9664\u3002",
|
|
460
471
|
rtkWhitelistPlaceholder: "name \u6216 git:name\uFF0C\u56DE\u8F66\u6DFB\u52A0",
|
|
461
472
|
rtkWhitelistAdd: "\u6DFB\u52A0",
|
|
462
473
|
rtkWhitelistClear: "\u6E05\u7A7A",
|
|
@@ -464,18 +475,18 @@
|
|
|
464
475
|
rtkWhitelistInvalid: "\u6761\u76EE\u683C\u5F0F\u5E94\u4E3A name \u6216 git:name",
|
|
465
476
|
rtkLoadFailed: "\u8BFB\u53D6 rtk \u914D\u7F6E\u5931\u8D25",
|
|
466
477
|
tabHeadroom: "Headroom",
|
|
467
|
-
headroomDesc: "Headroom \u63D2\u4EF6\uFF1A\u672C\u5730\u538B\u7F29\u4EE3\u7406\u9A7B\u7559 127.0.0.1\uFF08\u9ED8\u8BA4 8787 \u7AEF\u53E3\uFF09\uFF0C\u538B\u7F29\u53D1\u5F80\u6A21\u578B\u7684\u4E0A\u4E0B\u6587\u4EE5\u7701 token\uFF08/hr-* \u547D\u4EE4\u7F16\u8F91\u540C\u4E00\u914D\u7F6E\uFF09\u3002\
|
|
478
|
+
headroomDesc: "Headroom \u63D2\u4EF6\uFF1A\u672C\u5730\u538B\u7F29\u4EE3\u7406\u9A7B\u7559 127.0.0.1\uFF08\u9ED8\u8BA4 8787 \u7AEF\u53E3\uFF09\uFF0C\u538B\u7F29\u53D1\u5F80\u6A21\u578B\u7684\u4E0A\u4E0B\u6587\u4EE5\u7701 token\uFF08/hr-* \u547D\u4EE4\u7F16\u8F91\u540C\u4E00\u914D\u7F6E\uFF09\u3002\u5207\u6362\u8BBE\u5907\u4F1A\u91CD\u542F\u4EE3\u7406\uFF0C\u6B63\u5728\u5904\u7406\u7684\u8BF7\u6C42\u53EF\u80FD\u4E2D\u65AD\u4E00\u6B21\u3002",
|
|
468
479
|
headroomBinMissing: "\u672A\u627E\u5230 headroom \u7A0B\u5E8F\uFF0C\u4EE3\u7406\u65E0\u6CD5\u542F\u52A8\uFF1B\u5B89\u88C5 headroom \u540E\u4EE5\u4E0B\u8BBE\u7F6E\u81EA\u52A8\u751F\u6548",
|
|
469
480
|
hrInstallBin: "\u5B89\u88C5 headroom \u672C\u4F53",
|
|
470
481
|
hrBinInstalled: "headroom \u672C\u4F53\u5DF2\u5B89\u88C5\uFF1B\u91CD\u65B0\u6253\u5F00\u4F1A\u8BDD\u540E\u4EE3\u7406\u53EF\u7528\uFF08SessionStart \u94A9\u5B50\u81EA\u52A8\u62C9\u8D77\uFF09",
|
|
471
482
|
headroomInstallTitle: "\u672A\u5B89\u88C5 headroom \u63D2\u4EF6",
|
|
472
|
-
headroomInstallDesc: "\u4ECE zcode-plugins \u5E02\u573A\u5B89\u88C5\u540E\u5373\u53EF\u5728\u6B64\u7BA1\u7406\u538B\u7F29\u4EE3\u7406\uFF1B\
|
|
483
|
+
headroomInstallDesc: "\u4ECE zcode-plugins \u5E02\u573A\u5B89\u88C5\u540E\u5373\u53EF\u5728\u6B64\u7BA1\u7406\u538B\u7F29\u4EE3\u7406\uFF1B\u91CD\u542F\u4F1A\u8BDD\u540E\u751F\u6548\u3002",
|
|
473
484
|
headroomInstall: "\u5B89\u88C5",
|
|
474
485
|
headroomInstalling: "\u5B89\u88C5\u4E2D\u2026",
|
|
475
486
|
headroomInstalled: "\u5DF2\u5B89\u88C5 headroom \u63D2\u4EF6",
|
|
476
487
|
headroomInstallRetry: "\u5B89\u88C5\u672A\u751F\u6548\uFF0C\u8BF7\u91CD\u8BD5\u6216\u624B\u52A8\u5728\u63D2\u4EF6\u5E02\u573A\u5B89\u88C5",
|
|
477
488
|
pluginInstallCardTitle: "\u672A\u5B89\u88C5 {name} \u63D2\u4EF6",
|
|
478
|
-
pluginInstallCardDesc: "\u4ECE zcode-plugins \u5E02\u573A\u5B89\u88C5\u540E\u5373\u53EF\u5728\u6B64\u7BA1\u7406\uFF1B\
|
|
489
|
+
pluginInstallCardDesc: "\u4ECE zcode-plugins \u5E02\u573A\u5B89\u88C5\u540E\u5373\u53EF\u5728\u6B64\u7BA1\u7406\uFF1B\u91CD\u542F\u4F1A\u8BDD\u540E\u751F\u6548\u3002",
|
|
479
490
|
pluginInstallDone: "\u5DF2\u5B89\u88C5 {name} \u63D2\u4EF6",
|
|
480
491
|
pluginEnable: "\u542F\u7528",
|
|
481
492
|
hrStarting: "\u6B63\u5728\u542F\u52A8\u538B\u7F29\u4EE3\u7406\u2026",
|
|
@@ -518,7 +529,7 @@
|
|
|
518
529
|
headroomBackendAuto: "\u81EA\u52A8 \xB7 \u663E\u5361\u4F18\u5148",
|
|
519
530
|
headroomBackendCpu: "\u7701\u7535 \xB7 CPU \u4F18\u5148",
|
|
520
531
|
headroomBackendNative: "\uFF08\u539F\u751F\u503C\uFF09",
|
|
521
|
-
headroomBackendDesc: "\u81EA\u52A8\uFF1Aheadroom \u9009\u6700\u5FEB\u8BBE\u5907\uFF08CUDA/MPS \u663E\u5361\u4F18\u5148\uFF09\uFF1BCPU\uFF1A\u5F3A\u5236 CPU \u538B\u7F29\uFF0C\u7701\u7535\u4E14\u4E0D\u5360\u663E\u5B58\u3002\u4E5F\u652F\u6301 headroom \u539F\u751F\u503C\uFF08onnx\u3001pytorch_mps \u7B49\uFF09\u3002
|
|
532
|
+
headroomBackendDesc: "\u81EA\u52A8\uFF1Aheadroom \u9009\u6700\u5FEB\u8BBE\u5907\uFF08CUDA/MPS \u663E\u5361\u4F18\u5148\uFF09\uFF1BCPU\uFF1A\u5F3A\u5236 CPU \u538B\u7F29\uFF0C\u7701\u7535\u4E14\u4E0D\u5360\u663E\u5B58\u3002\u4E5F\u652F\u6301 headroom \u539F\u751F\u503C\uFF08onnx\u3001pytorch_mps \u7B49\uFF09\u3002",
|
|
522
533
|
headroomPower: "\u7701\u7535\u81EA\u52A8\u5207\u6362",
|
|
523
534
|
headroomPowerOff: "\u5173\u95ED",
|
|
524
535
|
headroomPowerOffDesc: "\u4E0D\u81EA\u52A8\u5207\u6362\uFF0C\u59CB\u7EC8\u6309\u201C\u538B\u7F29\u8BBE\u5907\u201D\u8FD0\u884C\u3002",
|
|
@@ -528,7 +539,7 @@
|
|
|
528
539
|
headroomPowerSaverDesc: "\u4EC5\u7CFB\u7EDF\u8FDB\u5165\u7701\u7535\u6A21\u5F0F \u2192 CPU \u538B\u7F29\uFF0C\u9000\u51FA\u5207\u56DE\u3002",
|
|
529
540
|
hrCpuPinnedHint: "\u538B\u7F29\u8BBE\u5907\u5DF2\u56FA\u5B9A\u4E3A CPU\uFF0C\u7701\u7535\u81EA\u52A8\u5207\u6362\u4E0D\u4F1A\u518D\u6539\u53D8\u5B83\u3002",
|
|
530
541
|
headroomInterval: "\u76D1\u89C6\u95F4\u9694",
|
|
531
|
-
headroomIntervalDesc: "\u7701\u7535\u76D1\u89C6\u5668\u8F6E\u8BE2\u7535\u6E90\u72B6\u6001\u7684\u95F4\u9694\uFF0810\u20133600 \u79D2\uFF0C\u9ED8\u8BA4 60\uFF09\uFF1B\u4FDD\u5B58\u540E\u4ECE\u4E0B\u4E00\u8F6E\u5DE1\u68C0\u8D77\u751F\u6548\
|
|
542
|
+
headroomIntervalDesc: "\u7701\u7535\u76D1\u89C6\u5668\u8F6E\u8BE2\u7535\u6E90\u72B6\u6001\u7684\u95F4\u9694\uFF0810\u20133600 \u79D2\uFF0C\u9ED8\u8BA4 60\uFF09\uFF1B\u4FDD\u5B58\u540E\u4ECE\u4E0B\u4E00\u8F6E\u5DE1\u68C0\u8D77\u751F\u6548\u3002",
|
|
532
543
|
headroomSecUnit: "\u79D2",
|
|
533
544
|
upgradeCheck: "\u68C0\u67E5\u66F4\u65B0",
|
|
534
545
|
upgradeChecking: "\u68C0\u67E5\u4E2D\u2026",
|
|
@@ -615,7 +626,7 @@
|
|
|
615
626
|
agentsSave: "Save",
|
|
616
627
|
agentsSaved: "Global prompt saved.",
|
|
617
628
|
agentsLoadFailed: "Failed to load the global prompt",
|
|
618
|
-
proxyDesc: "Set an HTTP proxy for network access made by the local helper: plugin marketplace updates and installs, plugin dependency installs and upgrades, and WebDAV sync can all use it \u2014 pick the scopes with the toggles below. Does not affect the ZCode app itself or model requests.
|
|
629
|
+
proxyDesc: "Set an HTTP proxy for network access made by the local helper: plugin marketplace updates and installs, plugin dependency installs and upgrades, and WebDAV sync can all use it \u2014 pick the scopes with the toggles below. Does not affect the ZCode app itself or model requests.",
|
|
619
630
|
proxyPlaceholder: "http://127.0.0.1:7890",
|
|
620
631
|
proxySave: "Save",
|
|
621
632
|
proxySaved: "Proxy settings saved.",
|
|
@@ -629,7 +640,7 @@
|
|
|
629
640
|
proxyScopeDeps: "Plugin dependencies",
|
|
630
641
|
proxyScopeDepsDesc: "headroom and rtk installs, update checks and upgrades (pip and GitHub downloads) go through the proxy.",
|
|
631
642
|
proxyScopeSync: "Sync",
|
|
632
|
-
proxyScopeSyncDesc: "WebDAV upload and download go through the proxy.
|
|
643
|
+
proxyScopeSyncDesc: "WebDAV upload and download go through the proxy.",
|
|
633
644
|
tabSync: "Sync",
|
|
634
645
|
tabDebug: "Debug",
|
|
635
646
|
testNoSessionHint: "With \u201Cfollow current session [current model]\u201D selected, the provider [model] of the last session is used.",
|
|
@@ -716,13 +727,13 @@
|
|
|
716
727
|
defaultValue: "default",
|
|
717
728
|
resetDefault: "Reset to default",
|
|
718
729
|
featureProjectMenu: "Project menu actions",
|
|
719
|
-
featureProjectMenuDesc:
|
|
730
|
+
featureProjectMenuDesc: "Open folder and copy path in the project More menu (alias and folder switch retired).",
|
|
720
731
|
featureTaskOrder: "Sidebar session drag ordering",
|
|
721
|
-
featureTaskOrderDesc: "
|
|
732
|
+
featureTaskOrderDesc: "Drag to reorder sessions in Pinned, Projects and Groups; survives restarts.",
|
|
722
733
|
featureSessionSwitch: "Session quick switch",
|
|
723
|
-
featureSessionSwitchDesc: "{last} toggles
|
|
734
|
+
featureSessionSwitchDesc: "{last} toggles to the last session; alt + arrows pick recent sessions; keys remappable",
|
|
724
735
|
featureTitleLock: "Keep renamed session titles",
|
|
725
|
-
featureTitleLockDesc: "Sessions you renamed keep their custom title
|
|
736
|
+
featureTitleLockDesc: "Sessions you renamed keep their custom title in the sidebar.",
|
|
726
737
|
tabTitleGen: "Task name prompt",
|
|
727
738
|
titleGenShortDesc: "When a new session starts answering, generates the task name with the chosen provider and prompt and saves it as a manual rename the built-in title never overrides.",
|
|
728
739
|
titleGenEnabled: "Enable",
|
|
@@ -748,7 +759,7 @@
|
|
|
748
759
|
titleGenTestOk: "Result: ",
|
|
749
760
|
titleGenTestFailed: "Generation failed",
|
|
750
761
|
featureWsRunning: "Running indicator when collapsed",
|
|
751
|
-
featureWsRunningDesc: "
|
|
762
|
+
featureWsRunningDesc: "Collapsed project and task headers show a loader while sessions run.",
|
|
752
763
|
tabPerformance: "Performance",
|
|
753
764
|
perfDesc: "ZCode keeps a session process resident for every project you have opened and never reclaims it, so memory grows with projects. When enabled, projects unused for a while with nothing running release their memory automatically: sessions are untouched and reload when reopened, with a few seconds wait on the first reply. The project in use, running sessions, background commands and scheduled tasks are never reclaimed. Background-command detection reads system process info via built-in tools (Linux / macOS / Windows); when unavailable, the feature disables itself.",
|
|
754
765
|
featureIdleReclaim: "Idle project memory reclaim",
|
|
@@ -758,15 +769,15 @@
|
|
|
758
769
|
idleReclaimStartupHint: "Startup pre-spawns a process per restored project; this pass collects the unused ones once. 0 = reclaim right after startup, ignoring the idle minutes above",
|
|
759
770
|
idleReclaimUnit: "min",
|
|
760
771
|
featureToolbarIcons: "Sidebar menu in the top bar",
|
|
761
|
-
featureToolbarIconsDesc: "
|
|
772
|
+
featureToolbarIconsDesc: "New task / search / automations / plugin store become top-bar icon buttons.",
|
|
762
773
|
tbNewTask: "New task",
|
|
763
774
|
tbSearch: "Search",
|
|
764
775
|
tbAutomations: "Automations",
|
|
765
776
|
tbPluginStore: "Plugin store",
|
|
766
777
|
featurePinnedCollapse: "Collapsible Pinned section",
|
|
767
|
-
featurePinnedCollapseDesc:
|
|
778
|
+
featurePinnedCollapseDesc: "The Pinned header collapses/expands its task list.",
|
|
768
779
|
featureSandboxReclaim: "Plugin card sandbox reclaim",
|
|
769
|
-
featureSandboxReclaimDesc: "
|
|
780
|
+
featureSandboxReclaimDesc: "Reclaims the oldest sandboxes at the 64 cap so new cards keep opening; released cards come back when their session is reopened.",
|
|
770
781
|
featurePluginCardRetry: "Plugin card auto-retry",
|
|
771
782
|
featurePluginCardRetryDesc: 'Auto-clicks "Reload" on cards that failed the slot cap; they recover as soon as a slot frees up.',
|
|
772
783
|
visionCardUi: "Vision cards",
|
|
@@ -791,7 +802,7 @@
|
|
|
791
802
|
switcherAttentionHint: "Running / finished but unseen tasks \xB7 {prev} / {next} or \u2191 / \u2193 to choose, Enter or release alt to switch",
|
|
792
803
|
switcherAttentionEmpty: "No running or unseen tasks",
|
|
793
804
|
featureNewtabPanels: "Plugin panels on the new tab page",
|
|
794
|
-
featureNewtabPanelsDesc:
|
|
805
|
+
featureNewtabPanelsDesc: "Adds third-party plugin panels (headroom, rtk, ...) to the new tab page; click to open in the side pane.",
|
|
795
806
|
ntpDescSuffix: "plugin panel",
|
|
796
807
|
ntpNeedSession: "Open a task session first, then open plugin panels from the new tab page",
|
|
797
808
|
featureStatusBarDesc: "Shows statistics at the bottom-right of the input box and at the end of each answer.",
|
|
@@ -805,12 +816,12 @@
|
|
|
805
816
|
themeBgRegionRight: "Right sidebar",
|
|
806
817
|
themeBgPane: "Background",
|
|
807
818
|
themeSkinTitle: "Skins",
|
|
808
|
-
themeSkinDesc: 'Famous editor theme palettes
|
|
819
|
+
themeSkinDesc: 'Famous editor theme palettes, auto-matching ZCode\u2019s light / dark mode; "Default" keeps ZCode as-is, "Custom" is tuned below.',
|
|
809
820
|
themeSkinCustom: "Custom",
|
|
810
821
|
themeCustomTitle: "Custom theme",
|
|
811
|
-
themeCustomHint: "Color changes apply live (auto-switches to the custom skin); light and dark
|
|
812
|
-
themeCustomLight: "Light
|
|
813
|
-
themeCustomDark: "Dark
|
|
822
|
+
themeCustomHint: "Color changes apply live (auto-switches to the custom skin); set light and dark separately \u2014 pick 5 colors and the whole palette is derived.",
|
|
823
|
+
themeCustomLight: "Light",
|
|
824
|
+
themeCustomDark: "Dark",
|
|
814
825
|
themeCustomBg: "Background",
|
|
815
826
|
themeCustomCard: "Card",
|
|
816
827
|
themeCustomFg: "Text",
|
|
@@ -842,8 +853,15 @@
|
|
|
842
853
|
themeBgFitContain: "Fit",
|
|
843
854
|
themeBgFitFill: "Stretch",
|
|
844
855
|
themeBgFitTile: "Tile",
|
|
845
|
-
|
|
856
|
+
themeBgMask: "Mask opacity",
|
|
857
|
+
themeBgMaskHint: "Higher values fade the image toward the theme background color for clearer text",
|
|
858
|
+
themeBgMaskHint2: "How much the image fades toward the theme background color",
|
|
859
|
+
themeBgBlur: "Image blur",
|
|
860
|
+
themeBgPanel: "Panel opacity",
|
|
861
|
+
themeBgPanelHint: "Opacity of sidebar, panels and tab bar. Lower reveals more of the image.",
|
|
846
862
|
themeBgDeletedActive: "Active background was deleted; background disabled",
|
|
863
|
+
tableCopyBtn: "Copy table",
|
|
864
|
+
tableCopied: "Table copied",
|
|
847
865
|
sbItemCtx: "Context usage",
|
|
848
866
|
sbItemQuestions: "Questions asked",
|
|
849
867
|
sbMaster: "Enable statistics",
|
|
@@ -896,7 +914,11 @@
|
|
|
896
914
|
featureFileActions: "File menu actions",
|
|
897
915
|
featureFileActionsDesc: 'Adds "Open with default app" and "Reveal in file manager" to the right-click menu of file links in chat.',
|
|
898
916
|
featureImageCopy: "Image right-click copy",
|
|
917
|
+
featureTableCopy: "Copy table",
|
|
918
|
+
featureComposerProvider: "Provider in model name",
|
|
899
919
|
featureImageCopyDesc: "Right-click an image in chat or the enlarged preview to copy it to the clipboard.",
|
|
920
|
+
featureTableCopyDesc: "Copy-table button on the table toolbar; pastes into Excel / editors as a clean table.",
|
|
921
|
+
featureComposerProviderDesc: "Shows the provider before the model name (e.g. BigModel-Max1 / glm-5.3).",
|
|
900
922
|
imageCopy: "Copy image",
|
|
901
923
|
imageCopied: "Image copied to the clipboard.",
|
|
902
924
|
imageCopyFailed: "Failed to copy the image.",
|
|
@@ -919,7 +941,7 @@
|
|
|
919
941
|
pluginsUpdatesAvailable: "{n} zcode-plugins update(s) available (ZCode Pro settings \u2192 Features)",
|
|
920
942
|
pluginsAutoUpdated: "zcode-plugins updated",
|
|
921
943
|
tabVision: "Vision",
|
|
922
|
-
visionDesc: "When the main model cannot see images (e.g. glm-5.3), images in messages are recognized by the vision models below and passed to the main model as text (zcode-vision plugin; /vision-* commands edit the same file).
|
|
944
|
+
visionDesc: "When the main model cannot see images (e.g. glm-5.3), images in messages are recognized by the vision models below and passed to the main model as text (zcode-vision plugin; /vision-* commands edit the same file).",
|
|
923
945
|
visionEnabled: "Enable",
|
|
924
946
|
visionForceIntercept: "Intercept even if the main model sees images",
|
|
925
947
|
visionMode: "Chain mode",
|
|
@@ -950,14 +972,14 @@
|
|
|
950
972
|
visionCompressKBHint: "Images above this size are compressed first (max edge 2000, JPEG); 0 = never",
|
|
951
973
|
visionLoadFailed: "Failed to load the vision config",
|
|
952
974
|
tabRtk: "rtk",
|
|
953
|
-
rtkDesc: "rtk plugin: compresses common dev command output by 60-90% before it reaches the context (/rtk-* commands edit the same files).
|
|
975
|
+
rtkDesc: "rtk plugin: compresses common dev command output by 60-90% before it reaches the context (/rtk-* commands edit the same files).",
|
|
954
976
|
rtkEnabled: "Enable",
|
|
955
977
|
rtkNotInstalled: "rtk is not installed. The settings below take effect after installation (/rtk-setup in a session).",
|
|
956
978
|
rtkInstallBin: "Install rtk binary",
|
|
957
979
|
rtkBinInstalled: "rtk installed; PATH takes effect for sessions after signing out and back in \u2014 the plugin hook works immediately",
|
|
958
980
|
rtkWhitelistTitle: "Whitelist (pass through without compression)",
|
|
959
981
|
rtkBuiltinLabel: "Built-in exemptions (read-only, follow plugin updates):",
|
|
960
|
-
rtkWhitelistDesc: "Each entry is name (e.g. docker) or git:name (e.g. git:clone)
|
|
982
|
+
rtkWhitelistDesc: "Each entry is name (e.g. docker) or git:name (e.g. git:clone); added commands skip compression. Built-ins (git add/commit/push, mkdir/cp, \u2026) cannot be removed.",
|
|
961
983
|
rtkWhitelistPlaceholder: "name or git:name, press Enter to add",
|
|
962
984
|
rtkWhitelistAdd: "Add",
|
|
963
985
|
rtkWhitelistClear: "Clear",
|
|
@@ -965,18 +987,18 @@
|
|
|
965
987
|
rtkWhitelistInvalid: "Entry must be name or git:name",
|
|
966
988
|
rtkLoadFailed: "Failed to load the rtk config",
|
|
967
989
|
tabHeadroom: "Headroom",
|
|
968
|
-
headroomDesc: "Headroom plugin: a local compression proxy on 127.0.0.1 (port 8787 by default) that compresses context sent to the model to save tokens (/hr-* commands edit the same file).
|
|
990
|
+
headroomDesc: "Headroom plugin: a local compression proxy on 127.0.0.1 (port 8787 by default) that compresses context sent to the model to save tokens (/hr-* commands edit the same file). Switching the device restarts the proxy, so requests in progress may be interrupted once.",
|
|
969
991
|
headroomBinMissing: "The headroom program was not found, so the proxy cannot start. The settings below take effect once it is installed.",
|
|
970
992
|
hrInstallBin: "Install headroom binary",
|
|
971
993
|
hrBinInstalled: "headroom installed; reopen a session and the hook will start the proxy automatically",
|
|
972
994
|
headroomInstallTitle: "headroom plugin not installed",
|
|
973
|
-
headroomInstallDesc: "Install it from the zcode-plugins marketplace to manage the compression proxy here;
|
|
995
|
+
headroomInstallDesc: "Install it from the zcode-plugins marketplace to manage the compression proxy here; takes effect after a session restart.",
|
|
974
996
|
headroomInstall: "Install",
|
|
975
997
|
headroomInstalling: "Installing\u2026",
|
|
976
998
|
headroomInstalled: "headroom plugin installed",
|
|
977
999
|
headroomInstallRetry: "Installation did not take effect; retry or install it from the marketplace manually",
|
|
978
1000
|
pluginInstallCardTitle: "{name} plugin not installed",
|
|
979
|
-
pluginInstallCardDesc: "Install it from the zcode-plugins marketplace to manage it here;
|
|
1001
|
+
pluginInstallCardDesc: "Install it from the zcode-plugins marketplace to manage it here; takes effect after a session restart.",
|
|
980
1002
|
pluginInstallDone: "{name} plugin installed",
|
|
981
1003
|
pluginEnable: "Enable",
|
|
982
1004
|
hrStarting: "Starting compression proxy\u2026",
|
|
@@ -1029,7 +1051,7 @@
|
|
|
1029
1051
|
headroomPowerSaverDesc: "Only the system power-saver mode \u2192 CPU; back when it exits.",
|
|
1030
1052
|
hrCpuPinnedHint: "The compression device is pinned to CPU, so power-save switching no longer changes anything.",
|
|
1031
1053
|
headroomInterval: "Watch interval",
|
|
1032
|
-
headroomIntervalDesc: "Seconds between power checks (10\u20133600, default 60); applies from the next round
|
|
1054
|
+
headroomIntervalDesc: "Seconds between power checks (10\u20133600, default 60); applies from the next round.",
|
|
1033
1055
|
headroomSecUnit: "s",
|
|
1034
1056
|
upgradeCheck: "Check update",
|
|
1035
1057
|
upgradeChecking: "Checking\u2026",
|
|
@@ -1258,8 +1280,8 @@
|
|
|
1258
1280
|
clearTimeout(toastTimer);
|
|
1259
1281
|
toastTimer = setTimeout(() => el.remove(), kind === "error" ? 5e3 : 2600);
|
|
1260
1282
|
}
|
|
1261
|
-
var overlayClass = "fixed inset-0 isolate z-50 flex items-
|
|
1262
|
-
var overlayClassBare = "fixed inset-0 isolate z-50 flex items-
|
|
1283
|
+
var overlayClass = "fixed inset-0 isolate z-50 flex items-start justify-center bg-black/60 supports-backdrop-filter:backdrop-blur-xs duration-100 p-4 platform-linux-desktop:top-12";
|
|
1284
|
+
var overlayClassBare = "fixed inset-0 isolate z-50 flex items-start justify-center duration-100 p-4 platform-linux-desktop:top-12";
|
|
1263
1285
|
var contentClass = "w-full sm:max-w-md rounded-2xl border-none bg-popover/98 p-5 text-ui-base/relaxed text-foreground ring-border shadow-2xl";
|
|
1264
1286
|
var dialogStack = [];
|
|
1265
1287
|
function openDialog({ title, description, onMount, onClose, width = "sm:max-w-md", overlay = "dim", draggable = false, posKey = "", dismissOnOutside = true, bodyClass = "", closable = false }) {
|
|
@@ -1287,7 +1309,8 @@
|
|
|
1287
1309
|
const content = h("div", {
|
|
1288
1310
|
role: "dialog",
|
|
1289
1311
|
"aria-modal": "true",
|
|
1290
|
-
class: contentClass.replace("sm:max-w-md", width) + " zcodepro-card"
|
|
1312
|
+
class: contentClass.replace("sm:max-w-md", width) + " zcodepro-card",
|
|
1313
|
+
style: "margin-top:12vh;max-height:calc(88vh - 3rem);overflow-y:auto;"
|
|
1291
1314
|
});
|
|
1292
1315
|
const overlayEl = h("div", {
|
|
1293
1316
|
"data-overlay": overlay,
|
|
@@ -1608,7 +1631,7 @@
|
|
|
1608
1631
|
"div",
|
|
1609
1632
|
{ class: "min-w-0 flex-1" },
|
|
1610
1633
|
h("div", { class: "text-ui-sm font-medium text-foreground" }, name),
|
|
1611
|
-
h("div", { class: "mt-0.5 text-ui-xs/relaxed text-foreground-subtle", "data-zcodepro-row-desc": "" }, desc ?? "")
|
|
1634
|
+
h("div", { class: "mt-0.5 text-ui-xs/relaxed text-foreground-subtle zcodepro-row-desc", "data-zcodepro-row-desc": "", title: desc ?? "" }, desc ?? "")
|
|
1612
1635
|
),
|
|
1613
1636
|
...extraEl ? [extraEl] : [],
|
|
1614
1637
|
h("button", {
|
|
@@ -1650,6 +1673,14 @@
|
|
|
1650
1673
|
/* \u6EDA\u5230\u5E95\u4E0D\u518D\u628A\u6EDA\u52A8\u4F20\u7ED9\u5F39\u7A97\u540E\u9762\u7684\u9875\u9762 */
|
|
1651
1674
|
overscroll-behavior: contain;
|
|
1652
1675
|
}
|
|
1676
|
+
/* \u53CC\u5217\u7F51\u683C\uFF08\u529F\u80FD\u9875\uFF09\u91CC\u7684\u884C\u63CF\u8FF0\u6700\u591A\u4E24\u884C\u7701\u7565\uFF1A\u957F\u63CF\u8FF0\u6491\u51FA\u7684\u53C2\u5DEE\u884C\u9AD8\u662F
|
|
1677
|
+
\u7F51\u683C\u89C2\u611F\u5DEE\u7684\u6839\u6E90\uFF1B\u5355\u5217\u573A\u666F\uFF08\u5176\u4ED6\u9762\u677F\uFF09\u4E0D\u53D7\u5F71\u54CD */
|
|
1678
|
+
.grid.grid-cols-2 > div > div > .zcodepro-row-desc {
|
|
1679
|
+
display: -webkit-box;
|
|
1680
|
+
-webkit-line-clamp: 2;
|
|
1681
|
+
-webkit-box-orient: vertical;
|
|
1682
|
+
overflow: hidden;
|
|
1683
|
+
}
|
|
1653
1684
|
/* \u5F00\u5173\uFF08\u8BBE\u7F6E\u5F39\u7A97\uFF09\uFF1A\u51E0\u4F55\u56FA\u5B9A\u5199\u5165\uFF0C\u989C\u8272\u968F\u4E3B\u9898\u53D8\u91CF */
|
|
1654
1685
|
[data-zcodepro-switch] {
|
|
1655
1686
|
position: relative;
|
|
@@ -1816,6 +1847,8 @@
|
|
|
1816
1847
|
-webkit-appearance: none;
|
|
1817
1848
|
appearance: none;
|
|
1818
1849
|
width: 100%;
|
|
1850
|
+
/* \u4E0D\u7ED9 padding\uFF1Apadding \u4F1A\u7F29\u5C0F thumb \u7684\u53EF\u6ED1\u533A\u95F4\uFF08\u62D6\u4E0D\u5230\u6700\u5DE6/\u6700\u53F3\uFF09\u3002
|
|
1851
|
+
\u8F68\u9053\u8D77\u70B9\u5BF9\u9F50\u7531\u5F39\u7A97\u91CC\u7684\u56FA\u5B9A\u6807\u7B7E\u5217\u5BBD\u8D1F\u8D23 */
|
|
1819
1852
|
height: 4px;
|
|
1820
1853
|
border-radius: 9999px;
|
|
1821
1854
|
background: color-mix(in oklab, var(--color-foreground, #888) 18%, transparent);
|
|
@@ -1944,6 +1977,9 @@
|
|
|
1944
1977
|
height: 12px;
|
|
1945
1978
|
flex-shrink: 0;
|
|
1946
1979
|
opacity: 0.6;
|
|
1980
|
+
/* 11px \u5B57\u4F53\u7684\u89C6\u89C9\u4E2D\u5FC3\uFF08x-height \u4E2D\u70B9\uFF09\u9AD8\u4E8E\u884C\u76D2\u51E0\u4F55\u4E2D\u5FC3\u7EA6 1px\uFF08\u4E0B\u4F38\u90E8
|
|
1981
|
+
\u9884\u7559\uFF09\uFF0C\u51E0\u4F55\u5C45\u4E2D\u7684\u56FE\u6807\u770B\u8D77\u6765\u504F\u4E0B\u2014\u2014\u6574\u4F53\u4E0A\u79FB 1px \u5BF9\u9F50\u89C6\u89C9\u4E2D\u5FC3 */
|
|
1982
|
+
transform: translateY(-1px);
|
|
1947
1983
|
}
|
|
1948
1984
|
.zcodepro-statusbar b { font-weight: 600; color: var(--color-foreground-subtle, #666); }
|
|
1949
1985
|
.zcodepro-statusbar i {
|
|
@@ -3111,10 +3147,10 @@
|
|
|
3111
3147
|
function startImageMenu() {
|
|
3112
3148
|
if (typeof window === "undefined") return;
|
|
3113
3149
|
if (typeof navigator.clipboard?.write !== "function" || typeof window.ClipboardItem === "undefined") return;
|
|
3114
|
-
let
|
|
3150
|
+
let enabled11 = true;
|
|
3115
3151
|
const refresh = () => {
|
|
3116
3152
|
void getConfig().then((c) => {
|
|
3117
|
-
|
|
3153
|
+
enabled11 = !(c.features && c.features.imageCopy === false);
|
|
3118
3154
|
});
|
|
3119
3155
|
};
|
|
3120
3156
|
refresh();
|
|
@@ -3123,7 +3159,7 @@
|
|
|
3123
3159
|
const img = copyTargetOf(e.target, e.clientX, e.clientY);
|
|
3124
3160
|
if (!img) return;
|
|
3125
3161
|
e.preventDefault();
|
|
3126
|
-
if (
|
|
3162
|
+
if (enabled11) showMenu(e.clientX, e.clientY, img);
|
|
3127
3163
|
refresh();
|
|
3128
3164
|
}, true);
|
|
3129
3165
|
}
|
|
@@ -4131,7 +4167,7 @@
|
|
|
4131
4167
|
var bgStyleEl = null;
|
|
4132
4168
|
var injectedKeys = /* @__PURE__ */ new Set();
|
|
4133
4169
|
var classObserver = null;
|
|
4134
|
-
var currentTheme = { skin: "default", custom: null, bg: { mode: "none",
|
|
4170
|
+
var currentTheme = { skin: "default", custom: null, bg: { mode: "none", maskOpacity: 0.82, blurPx: 0, panelOpacity: 0.3 } };
|
|
4135
4171
|
var lastModeSig = "";
|
|
4136
4172
|
var bgTimer = null;
|
|
4137
4173
|
var regionStyleEl = null;
|
|
@@ -4240,12 +4276,15 @@
|
|
|
4240
4276
|
await applyRegionBackgrounds(bg);
|
|
4241
4277
|
return;
|
|
4242
4278
|
}
|
|
4243
|
-
const
|
|
4244
|
-
const
|
|
4279
|
+
const num01 = (v, dflt) => typeof v === "number" && Number.isFinite(v) ? Math.min(1, Math.max(0, v)) : dflt;
|
|
4280
|
+
const maskOpacity = num01(bg.maskOpacity, 0.82);
|
|
4281
|
+
const alpha = Math.min(0.99, maskOpacity);
|
|
4282
|
+
const blurPx = typeof bg.blurPx === "number" && Number.isFinite(bg.blurPx) ? Math.min(24, Math.max(0, Math.round(bg.blurPx))) : 0;
|
|
4283
|
+
const panelOpacity = num01(bg.panelOpacity, 0.3);
|
|
4245
4284
|
const resolvedBg = resolvedColor("--color-background");
|
|
4246
4285
|
const mHex = resolvedBg.match(/^rgba?\(([\d.]+),\s*([\d.]+),\s*([\d.]+)/);
|
|
4247
4286
|
const rgb = mHex ? [Math.round(+mHex[1]), Math.round(+mHex[2]), Math.round(+mHex[3])].join(",") : isDarkMode() ? "13,13,13" : "248,248,248";
|
|
4248
|
-
const panelMix = Math.
|
|
4287
|
+
const panelMix = Math.round(panelOpacity * 100);
|
|
4249
4288
|
if (panelMix < 100) {
|
|
4250
4289
|
for (const t2 of SURFACE_TOKENS) {
|
|
4251
4290
|
const v = resolvedColor(t2);
|
|
@@ -4255,7 +4294,7 @@
|
|
|
4255
4294
|
}
|
|
4256
4295
|
}
|
|
4257
4296
|
}
|
|
4258
|
-
await applyRegionBackgrounds(bg, {
|
|
4297
|
+
await applyRegionBackgrounds(bg, { rgb, alpha, fit: bg.fit, seq });
|
|
4259
4298
|
if (seq !== applySeq) return;
|
|
4260
4299
|
if (!bgActive) return;
|
|
4261
4300
|
const FIT_CSS = {
|
|
@@ -4265,8 +4304,10 @@
|
|
|
4265
4304
|
tile: "background-size:100% 100%,auto !important;background-repeat:no-repeat,repeat !important;"
|
|
4266
4305
|
};
|
|
4267
4306
|
const fitCss = FIT_CSS[bg.fit] || FIT_CSS.cover;
|
|
4307
|
+
const blurCss = blurPx > 0 ? `filter:blur(${blurPx}px);` : "";
|
|
4308
|
+
const spread = blurPx > 0 ? Math.max(20, blurPx * 2) : 0;
|
|
4268
4309
|
const setImage = (image) => {
|
|
4269
|
-
bgStyleEl.textContent = `html.zcodepro-bg-on{background-color:rgb(${rgb}) !important;background-image:linear-gradient(rgba(${rgb},${alpha}),rgba(${rgb},${alpha})),${image} !important;${fitCss}background-position:center !important
|
|
4310
|
+
bgStyleEl.textContent = `html.zcodepro-bg-on{background-color:rgb(${rgb}) !important;}html.zcodepro-bg-on::before{content:'' !important;position:fixed;inset:-${spread}px;z-index:-1;pointer-events:none;background-image:linear-gradient(rgba(${rgb},${alpha}),rgba(${rgb},${alpha})),${image} !important;${fitCss}background-position:center !important;${blurCss}}`;
|
|
4270
4311
|
root.classList.add("zcodepro-bg-on");
|
|
4271
4312
|
};
|
|
4272
4313
|
const helperUrl = liveBoot().helperUrl || HELPER_URL;
|
|
@@ -4325,7 +4366,7 @@
|
|
|
4325
4366
|
const flush = () => {
|
|
4326
4367
|
regionStyleEl.textContent = [...rules.values()].join("");
|
|
4327
4368
|
};
|
|
4328
|
-
const alpha = pre ? pre.alpha : 0.
|
|
4369
|
+
const alpha = pre ? pre.alpha : 0.82;
|
|
4329
4370
|
const rgb = pre ? pre.rgb : "13,13,13";
|
|
4330
4371
|
const FIT_CSS = {
|
|
4331
4372
|
cover: "100% 100%,cover",
|
|
@@ -4379,7 +4420,7 @@
|
|
|
4379
4420
|
}
|
|
4380
4421
|
function startTheme() {
|
|
4381
4422
|
if (!document.head && !document.documentElement) return;
|
|
4382
|
-
applyAll({ skin: "default", custom: null, bg: { mode: "none",
|
|
4423
|
+
applyAll({ skin: "default", custom: null, bg: { mode: "none", maskOpacity: 0.82, blurPx: 0, panelOpacity: 0.3 } });
|
|
4383
4424
|
void getConfig().then((cfg) => applyAll(cfg.theme)).catch(() => {
|
|
4384
4425
|
});
|
|
4385
4426
|
window.addEventListener("zcodepro:config-changed", () => {
|
|
@@ -4633,8 +4674,12 @@
|
|
|
4633
4674
|
h("span", { class: "inline-block size-2 rounded-full bg-emerald-500" }),
|
|
4634
4675
|
h("span", { class: "text-foreground-subtle/70" }, `${health.version} \xB7 ${HELPER_URL}`)
|
|
4635
4676
|
);
|
|
4636
|
-
const rows = h("div", { class: "
|
|
4677
|
+
const rows = h("div", { class: "grid grid-cols-2 gap-x-0 gap-y-1 rounded-xl border border-border p-2 divide-x divide-border" });
|
|
4637
4678
|
const pluginsStatusLine = h("span", { class: "max-w-40 truncate text-ui-xs/relaxed text-foreground-subtle" }, "\u2026");
|
|
4679
|
+
const setPluginsStatus = (text) => {
|
|
4680
|
+
setPluginsStatus(text);
|
|
4681
|
+
pluginsStatusLine.setAttribute("title", text);
|
|
4682
|
+
};
|
|
4638
4683
|
const pluginsBtn = btnSmall(L.pluginsCheckNow, () => {
|
|
4639
4684
|
void runPluginsUpdate();
|
|
4640
4685
|
});
|
|
@@ -4643,23 +4688,23 @@
|
|
|
4643
4688
|
if (pluginsUpdating) return;
|
|
4644
4689
|
pluginsUpdating = true;
|
|
4645
4690
|
pluginsBtn.disabled = true;
|
|
4646
|
-
|
|
4691
|
+
setPluginsStatus(L.pluginsUpdating);
|
|
4647
4692
|
const res = await rpc("/plugins/update", { method: "POST", body: {} });
|
|
4648
4693
|
pluginsUpdating = false;
|
|
4649
4694
|
pluginsBtn.disabled = false;
|
|
4650
4695
|
if (!res.ok) {
|
|
4651
|
-
|
|
4696
|
+
setPluginsStatus("");
|
|
4652
4697
|
showToast(L.pluginsUpdateFailed + ": " + errText(res), "error");
|
|
4653
4698
|
return;
|
|
4654
4699
|
}
|
|
4655
|
-
|
|
4700
|
+
setPluginsStatus(res.updated > 0 ? L.pluginsUpdatedDone.replaceAll("{n}", String(res.updated)) : L.pluginsUpToDate);
|
|
4656
4701
|
showToast(pluginsStatusLine.textContent, "success");
|
|
4657
4702
|
};
|
|
4658
4703
|
void (async () => {
|
|
4659
4704
|
const cfg = await getConfig(true).catch(() => null);
|
|
4660
4705
|
const res = await rpc("/plugins/status");
|
|
4661
4706
|
if (!res.ok) {
|
|
4662
|
-
|
|
4707
|
+
setPluginsStatus("");
|
|
4663
4708
|
return;
|
|
4664
4709
|
}
|
|
4665
4710
|
const n = (res.updates || []).length;
|
|
@@ -4667,7 +4712,7 @@
|
|
|
4667
4712
|
void runPluginsUpdate();
|
|
4668
4713
|
return;
|
|
4669
4714
|
}
|
|
4670
|
-
|
|
4715
|
+
setPluginsStatus(n > 0 ? L.pluginsUpdatesFound.replaceAll("{n}", String(n)) : L.pluginsUpToDate);
|
|
4671
4716
|
})();
|
|
4672
4717
|
const HK_ACTIONS = [
|
|
4673
4718
|
["switchLast", "hkAltZ"],
|
|
@@ -4735,6 +4780,16 @@
|
|
|
4735
4780
|
if (await setFeature("imageCopy", next)) f.imageCopy = next;
|
|
4736
4781
|
refreshRows();
|
|
4737
4782
|
}),
|
|
4783
|
+
settingRow(L.featureTableCopy, L.featureTableCopyDesc, f.tableCopy !== false, async () => {
|
|
4784
|
+
const next = !(f.tableCopy !== false);
|
|
4785
|
+
if (await setFeature("tableCopy", next)) f.tableCopy = next;
|
|
4786
|
+
refreshRows();
|
|
4787
|
+
}),
|
|
4788
|
+
settingRow(L.featureComposerProvider, L.featureComposerProviderDesc, f.composerProvider !== false, async () => {
|
|
4789
|
+
const next = !(f.composerProvider !== false);
|
|
4790
|
+
if (await setFeature("composerProvider", next)) f.composerProvider = next;
|
|
4791
|
+
refreshRows();
|
|
4792
|
+
}),
|
|
4738
4793
|
settingRow(L.featureSandboxReclaim, L.featureSandboxReclaimDesc, f.sandboxReclaim !== false, async () => {
|
|
4739
4794
|
const next = !(f.sandboxReclaim !== false);
|
|
4740
4795
|
if (await setFeature("sandboxReclaim", next)) f.sandboxReclaim = next;
|
|
@@ -4773,12 +4828,14 @@
|
|
|
4773
4828
|
if (nameEl) {
|
|
4774
4829
|
nameEl.replaceChildren(
|
|
4775
4830
|
document.createTextNode(L.featureAutoUpdatePlugins + " "),
|
|
4776
|
-
repoLink
|
|
4777
|
-
document.createTextNode(" \u63D2\u4EF6")
|
|
4831
|
+
repoLink
|
|
4778
4832
|
);
|
|
4779
4833
|
}
|
|
4780
4834
|
const descEl = row.querySelector("[data-zcodepro-row-desc]");
|
|
4781
|
-
if (descEl)
|
|
4835
|
+
if (descEl) {
|
|
4836
|
+
descEl.replaceChildren(pluginsStatusLine);
|
|
4837
|
+
descEl.setAttribute("title", descEl.textContent.trim());
|
|
4838
|
+
}
|
|
4782
4839
|
return row;
|
|
4783
4840
|
})()
|
|
4784
4841
|
);
|
|
@@ -4971,10 +5028,10 @@
|
|
|
4971
5028
|
const panes = { features: paneFeatures, shortcuts: paneShortcuts, styles: paneStyles, perf: panePerf, agents: paneAgents, proxy: paneProxy, sync: paneSync, vision: paneVision, headroom: paneHeadroom, rtk: paneRtk, debug: paneDebug };
|
|
4972
5029
|
const tabDefs = [
|
|
4973
5030
|
["features", L.tabFeatures],
|
|
4974
|
-
["shortcuts", L.tabShortcuts],
|
|
4975
|
-
["agents", L.tabBehavior],
|
|
4976
5031
|
["styles", L.tabStyles],
|
|
5032
|
+
["agents", L.tabBehavior],
|
|
4977
5033
|
["perf", L.tabPerformance],
|
|
5034
|
+
["shortcuts", L.tabShortcuts],
|
|
4978
5035
|
["proxy", L.tabProxy],
|
|
4979
5036
|
["sync", L.tabSync],
|
|
4980
5037
|
["vision", L.tabVision],
|
|
@@ -5333,21 +5390,18 @@
|
|
|
5333
5390
|
turnList
|
|
5334
5391
|
);
|
|
5335
5392
|
let themeCfg = structuredClone(config.theme || {});
|
|
5393
|
+
const numOrBg = (v, d) => typeof v === "number" && Number.isFinite(v) ? v : d;
|
|
5336
5394
|
themeCfg.skin = themeCfg.skin || "default";
|
|
5337
5395
|
themeCfg.custom = {
|
|
5338
5396
|
light: themeCfg.custom && themeCfg.custom.light || {},
|
|
5339
5397
|
dark: themeCfg.custom && themeCfg.custom.dark || {}
|
|
5340
5398
|
};
|
|
5341
5399
|
themeCfg.bg = {
|
|
5342
|
-
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
intervalMin: 0,
|
|
5348
|
-
fit: "cover",
|
|
5349
|
-
visibility: 0.8,
|
|
5350
|
-
...themeCfg.bg || {}
|
|
5400
|
+
...themeCfg.bg || {},
|
|
5401
|
+
mode: themeCfg.bg?.mode || "none",
|
|
5402
|
+
maskOpacity: numOrBg(themeCfg.bg?.maskOpacity, 0.82),
|
|
5403
|
+
blurPx: numOrBg(themeCfg.bg?.blurPx, 0),
|
|
5404
|
+
panelOpacity: numOrBg(themeCfg.bg?.panelOpacity, 0.3)
|
|
5351
5405
|
};
|
|
5352
5406
|
themeCfg.bg.regions = themeCfg.bg.regions && typeof themeCfg.bg.regions === "object" ? themeCfg.bg.regions : {};
|
|
5353
5407
|
let bgFiles = [];
|
|
@@ -5590,27 +5644,73 @@
|
|
|
5590
5644
|
);
|
|
5591
5645
|
};
|
|
5592
5646
|
const renderThemeBg = () => {
|
|
5593
|
-
const
|
|
5594
|
-
|
|
5595
|
-
|
|
5596
|
-
|
|
5597
|
-
|
|
5598
|
-
|
|
5599
|
-
|
|
5600
|
-
|
|
5601
|
-
|
|
5602
|
-
|
|
5603
|
-
|
|
5604
|
-
|
|
5605
|
-
|
|
5606
|
-
|
|
5607
|
-
|
|
5608
|
-
|
|
5609
|
-
|
|
5610
|
-
|
|
5611
|
-
|
|
5612
|
-
}
|
|
5613
|
-
|
|
5647
|
+
const sliderRow = (label, title, min, max, step, val, unit, commit, hint) => {
|
|
5648
|
+
const lab = h("span", { class: "shrink-0 whitespace-nowrap text-ui-xs font-medium text-foreground-subtle", title, style: "width:72px" }, label);
|
|
5649
|
+
const valLabel = h("span", { class: "w-12 text-right text-ui-xs tabular-nums text-foreground-subtle" }, val + unit);
|
|
5650
|
+
const range = h("input", {
|
|
5651
|
+
type: "range",
|
|
5652
|
+
min: String(min),
|
|
5653
|
+
max: String(max),
|
|
5654
|
+
step: String(step),
|
|
5655
|
+
value: String(val),
|
|
5656
|
+
class: "zcodepro-range",
|
|
5657
|
+
"aria-label": label,
|
|
5658
|
+
style: "flex:1"
|
|
5659
|
+
});
|
|
5660
|
+
let timer = null;
|
|
5661
|
+
range.addEventListener("input", () => {
|
|
5662
|
+
const v = Number(range.value);
|
|
5663
|
+
valLabel.textContent = v + unit;
|
|
5664
|
+
clearTimeout(timer);
|
|
5665
|
+
timer = setTimeout(() => commit(v), 300);
|
|
5666
|
+
});
|
|
5667
|
+
return h(
|
|
5668
|
+
"div",
|
|
5669
|
+
{ class: "flex flex-col gap-0.5" },
|
|
5670
|
+
h("div", { class: "flex items-center gap-3" }, lab, range, valLabel),
|
|
5671
|
+
hint ? h("span", { class: "text-ui-xs/relaxed text-foreground-subtle" }, hint) : null
|
|
5672
|
+
);
|
|
5673
|
+
};
|
|
5674
|
+
const numOr = (v, d) => typeof v === "number" && Number.isFinite(v) ? v : d;
|
|
5675
|
+
const maskRow = () => sliderRow(
|
|
5676
|
+
L.themeBgMask,
|
|
5677
|
+
L.themeBgMaskHint,
|
|
5678
|
+
0,
|
|
5679
|
+
99,
|
|
5680
|
+
1,
|
|
5681
|
+
Math.round(numOr(themeCfg.bg.maskOpacity, 0.82) * 100),
|
|
5682
|
+
"%",
|
|
5683
|
+
(v) => {
|
|
5684
|
+
void saveTheme({ bg: { maskOpacity: v / 100 } });
|
|
5685
|
+
},
|
|
5686
|
+
L.themeBgMaskHint2
|
|
5687
|
+
);
|
|
5688
|
+
const blurRow = () => sliderRow(
|
|
5689
|
+
L.themeBgBlur,
|
|
5690
|
+
"",
|
|
5691
|
+
0,
|
|
5692
|
+
24,
|
|
5693
|
+
1,
|
|
5694
|
+
numOr(themeCfg.bg.blurPx, 0),
|
|
5695
|
+
"px",
|
|
5696
|
+
(v) => {
|
|
5697
|
+
void saveTheme({ bg: { blurPx: v } });
|
|
5698
|
+
},
|
|
5699
|
+
""
|
|
5700
|
+
);
|
|
5701
|
+
const panelRow = () => sliderRow(
|
|
5702
|
+
L.themeBgPanel,
|
|
5703
|
+
"",
|
|
5704
|
+
0,
|
|
5705
|
+
100,
|
|
5706
|
+
1,
|
|
5707
|
+
Math.round(numOr(themeCfg.bg.panelOpacity, 0.3) * 100),
|
|
5708
|
+
"%",
|
|
5709
|
+
(v) => {
|
|
5710
|
+
void saveTheme({ bg: { panelOpacity: v / 100 } });
|
|
5711
|
+
},
|
|
5712
|
+
L.themeBgPanelHint
|
|
5713
|
+
);
|
|
5614
5714
|
const modeBtn = (id, label) => h("button", {
|
|
5615
5715
|
type: "button",
|
|
5616
5716
|
class: "zcodepro-tab",
|
|
@@ -5785,10 +5885,10 @@
|
|
|
5785
5885
|
),
|
|
5786
5886
|
h(
|
|
5787
5887
|
"div",
|
|
5788
|
-
{ class: "mt-3 flex
|
|
5789
|
-
|
|
5790
|
-
|
|
5791
|
-
|
|
5888
|
+
{ class: "mt-3 flex flex-col gap-2" },
|
|
5889
|
+
maskRow(),
|
|
5890
|
+
blurRow(),
|
|
5891
|
+
panelRow()
|
|
5792
5892
|
),
|
|
5793
5893
|
bgInput
|
|
5794
5894
|
);
|
|
@@ -10517,6 +10617,236 @@
|
|
|
10517
10617
|
});
|
|
10518
10618
|
}
|
|
10519
10619
|
|
|
10620
|
+
// src/inject/features/table-copy.js
|
|
10621
|
+
var installed5 = false;
|
|
10622
|
+
var enabled9 = true;
|
|
10623
|
+
function cleanTable(table) {
|
|
10624
|
+
const clone = table.cloneNode(false);
|
|
10625
|
+
const walk = (src, dst) => {
|
|
10626
|
+
for (const node of src.childNodes) {
|
|
10627
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
10628
|
+
if (node.textContent.trim()) dst.append(document.createTextNode(node.textContent));
|
|
10629
|
+
continue;
|
|
10630
|
+
}
|
|
10631
|
+
if (node.nodeType !== Node.ELEMENT_NODE) continue;
|
|
10632
|
+
const tag = node.tagName;
|
|
10633
|
+
const el = document.createElement(tag.toLowerCase());
|
|
10634
|
+
if (tag === "TD" || tag === "TH") {
|
|
10635
|
+
for (const a of ["colspan", "rowspan"]) {
|
|
10636
|
+
const v = node.getAttribute(a);
|
|
10637
|
+
if (v && v !== "1") el.setAttribute(a, v);
|
|
10638
|
+
}
|
|
10639
|
+
}
|
|
10640
|
+
dst.append(el);
|
|
10641
|
+
walk(node, el);
|
|
10642
|
+
}
|
|
10643
|
+
};
|
|
10644
|
+
walk(table, clone);
|
|
10645
|
+
return clone;
|
|
10646
|
+
}
|
|
10647
|
+
function tableToTsv(table) {
|
|
10648
|
+
const rows = [];
|
|
10649
|
+
for (const tr of table.rows) {
|
|
10650
|
+
const cells = [];
|
|
10651
|
+
for (const cell of tr.cells) {
|
|
10652
|
+
cells.push((cell.textContent || "").replace(/[\t\r\n]+/g, " ").trim());
|
|
10653
|
+
}
|
|
10654
|
+
rows.push(cells.join(" "));
|
|
10655
|
+
}
|
|
10656
|
+
return rows.join("\n");
|
|
10657
|
+
}
|
|
10658
|
+
async function copyTable(table) {
|
|
10659
|
+
const L = t();
|
|
10660
|
+
const clean = cleanTable(table);
|
|
10661
|
+
const html = '<meta charset="utf-8"><table>' + clean.innerHTML + "</table>";
|
|
10662
|
+
const tsv = tableToTsv(table);
|
|
10663
|
+
try {
|
|
10664
|
+
if (typeof ClipboardItem !== "undefined" && navigator.clipboard && navigator.clipboard.write) {
|
|
10665
|
+
await navigator.clipboard.write([
|
|
10666
|
+
new ClipboardItem({
|
|
10667
|
+
"text/html": new Blob([html], { type: "text/html" }),
|
|
10668
|
+
"text/plain": new Blob([tsv], { type: "text/plain" })
|
|
10669
|
+
})
|
|
10670
|
+
]);
|
|
10671
|
+
showToast(L.tableCopied, "success");
|
|
10672
|
+
return;
|
|
10673
|
+
}
|
|
10674
|
+
} catch {
|
|
10675
|
+
}
|
|
10676
|
+
try {
|
|
10677
|
+
const holder = document.createElement("div");
|
|
10678
|
+
holder.contentEditable = "true";
|
|
10679
|
+
holder.style.cssText = "position:fixed;left:-9999px;top:0;";
|
|
10680
|
+
holder.append(clean);
|
|
10681
|
+
document.body.append(holder);
|
|
10682
|
+
const range = document.createRange();
|
|
10683
|
+
range.selectNodeContents(holder);
|
|
10684
|
+
const sel = window.getSelection();
|
|
10685
|
+
sel.removeAllRanges();
|
|
10686
|
+
sel.addRange(range);
|
|
10687
|
+
const ok = document.execCommand("copy");
|
|
10688
|
+
sel.removeAllRanges();
|
|
10689
|
+
holder.remove();
|
|
10690
|
+
if (ok) {
|
|
10691
|
+
showToast(L.tableCopied, "success");
|
|
10692
|
+
return;
|
|
10693
|
+
}
|
|
10694
|
+
} catch {
|
|
10695
|
+
}
|
|
10696
|
+
showToast(L.failed, "error");
|
|
10697
|
+
}
|
|
10698
|
+
function makeButton(onClick) {
|
|
10699
|
+
const L = t();
|
|
10700
|
+
const btn = document.createElement("button");
|
|
10701
|
+
btn.type = "button";
|
|
10702
|
+
btn.setAttribute("aria-label", L.tableCopyBtn);
|
|
10703
|
+
btn.title = L.tableCopyBtn;
|
|
10704
|
+
btn.className = "group/button inline-flex items-center justify-center border border-transparent bg-clip-padding whitespace-nowrap transition-colors outline-none select-none text-foreground hover:bg-hover hover:text-foreground size-7 rounded-lg [&_svg:not([class*='size-'])]:size-4 shrink-0";
|
|
10705
|
+
btn.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-table size-3.5" aria-hidden="true"><path d="M12 3v18"></path><path d="M3 9h18"></path><path d="M3 15h18"></path><path d="M5 21h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2"></path></svg>';
|
|
10706
|
+
btn.addEventListener("click", (e) => {
|
|
10707
|
+
e.stopPropagation();
|
|
10708
|
+
onClick();
|
|
10709
|
+
});
|
|
10710
|
+
return btn;
|
|
10711
|
+
}
|
|
10712
|
+
function startTableCopy() {
|
|
10713
|
+
if (installed5 || typeof document === "undefined") return;
|
|
10714
|
+
installed5 = true;
|
|
10715
|
+
ensureStyle();
|
|
10716
|
+
const tableOf = (bar) => {
|
|
10717
|
+
let scope = bar.parentElement;
|
|
10718
|
+
for (let i = 0; i < 3 && scope; i++) {
|
|
10719
|
+
const table = scope.querySelector("table");
|
|
10720
|
+
if (table) return table;
|
|
10721
|
+
scope = scope.parentElement;
|
|
10722
|
+
}
|
|
10723
|
+
return null;
|
|
10724
|
+
};
|
|
10725
|
+
const enhance = (bar) => {
|
|
10726
|
+
if (bar.dataset.zcodeproTableCopy) return;
|
|
10727
|
+
bar.dataset.zcodeproTableCopy = "1";
|
|
10728
|
+
const table = tableOf(bar);
|
|
10729
|
+
if (!table) return;
|
|
10730
|
+
bar.append(makeButton(() => {
|
|
10731
|
+
void copyTable(table);
|
|
10732
|
+
}));
|
|
10733
|
+
};
|
|
10734
|
+
const scan5 = () => {
|
|
10735
|
+
for (const bar of document.querySelectorAll("[data-markdown-table-toolbar]")) enhance(bar);
|
|
10736
|
+
};
|
|
10737
|
+
scan5();
|
|
10738
|
+
void getConfig().then((cfg) => {
|
|
10739
|
+
enabled9 = cfg.features ? cfg.features.tableCopy !== false : true;
|
|
10740
|
+
}).catch(() => {
|
|
10741
|
+
});
|
|
10742
|
+
window.addEventListener("zcodepro:config-changed", () => {
|
|
10743
|
+
void getConfig(true).then((cfg) => {
|
|
10744
|
+
enabled9 = cfg.features ? cfg.features.tableCopy !== false : true;
|
|
10745
|
+
}).catch(() => {
|
|
10746
|
+
});
|
|
10747
|
+
});
|
|
10748
|
+
const observer2 = new MutationObserver(() => {
|
|
10749
|
+
if (enabled9) scan5();
|
|
10750
|
+
});
|
|
10751
|
+
observer2.observe(document.body, { childList: true, subtree: true });
|
|
10752
|
+
}
|
|
10753
|
+
|
|
10754
|
+
// src/inject/features/composer-provider.js
|
|
10755
|
+
var installed6 = false;
|
|
10756
|
+
var enabled10 = true;
|
|
10757
|
+
function labelToDisplay(label) {
|
|
10758
|
+
const i = label.indexOf("/");
|
|
10759
|
+
if (i <= 0) return null;
|
|
10760
|
+
const provider = label.slice(0, i).trim();
|
|
10761
|
+
const rest = label.slice(i + 1);
|
|
10762
|
+
const model = rest.trim().split(/\s+/)[0];
|
|
10763
|
+
if (!provider || !model) return null;
|
|
10764
|
+
return `${provider} / ${model}`;
|
|
10765
|
+
}
|
|
10766
|
+
function apply3() {
|
|
10767
|
+
if (!enabled10) {
|
|
10768
|
+
for (const btn of document.querySelectorAll('[data-testid="chat-model-select-trigger"]')) {
|
|
10769
|
+
if (!btn.dataset.zcodeproProviderShown) continue;
|
|
10770
|
+
const label = btn.getAttribute("aria-label") || "";
|
|
10771
|
+
const i = label.indexOf("/");
|
|
10772
|
+
if (i <= 0) continue;
|
|
10773
|
+
const model = label.slice(i + 1).trim().split(/\s+/)[0];
|
|
10774
|
+
if (!model) continue;
|
|
10775
|
+
for (const sp of btn.querySelectorAll("span[title]")) sp.setAttribute("title", model);
|
|
10776
|
+
for (const el of btn.querySelectorAll("span[title] span:not([title])")) {
|
|
10777
|
+
if (!el.querySelector("span") && el.textContent.includes("/")) el.textContent = model;
|
|
10778
|
+
}
|
|
10779
|
+
delete btn.dataset.zcodeproProviderShown;
|
|
10780
|
+
}
|
|
10781
|
+
return;
|
|
10782
|
+
}
|
|
10783
|
+
for (const btn of document.querySelectorAll('[data-testid="chat-model-select-trigger"]')) {
|
|
10784
|
+
const label = btn.getAttribute("aria-label") || "";
|
|
10785
|
+
const display = labelToDisplay(label);
|
|
10786
|
+
if (!display) continue;
|
|
10787
|
+
const titleSpans = [...btn.querySelectorAll("span[title]")];
|
|
10788
|
+
if (!titleSpans.length) continue;
|
|
10789
|
+
const innermost = titleSpans.filter((sp) => !sp.querySelector("span[title]"));
|
|
10790
|
+
if (!innermost.length) continue;
|
|
10791
|
+
const holders = [];
|
|
10792
|
+
for (const sp of innermost) {
|
|
10793
|
+
sp.querySelectorAll("span:not([title])").forEach((el) => {
|
|
10794
|
+
if (!el.querySelector("span") && el.textContent.trim() && !el.textContent.includes("/")) holders.push(el);
|
|
10795
|
+
});
|
|
10796
|
+
}
|
|
10797
|
+
if (!holders.length) continue;
|
|
10798
|
+
for (const sp of titleSpans) {
|
|
10799
|
+
if (sp.getAttribute("title") !== display) sp.setAttribute("title", display);
|
|
10800
|
+
}
|
|
10801
|
+
for (const el of holders) el.textContent = display;
|
|
10802
|
+
btn.dataset.zcodeproProviderShown = "1";
|
|
10803
|
+
}
|
|
10804
|
+
}
|
|
10805
|
+
function startComposerProvider() {
|
|
10806
|
+
if (installed6 || typeof document === "undefined") return;
|
|
10807
|
+
installed6 = true;
|
|
10808
|
+
const COMPOSER_SEL = '[data-composer-layout], [data-composer-leading-content], [data-testid="chat-model-select-trigger"]';
|
|
10809
|
+
const relevant2 = (muts) => {
|
|
10810
|
+
for (const m of muts) {
|
|
10811
|
+
if (m.type === "childList") {
|
|
10812
|
+
for (const n of [...m.addedNodes, ...m.removedNodes]) {
|
|
10813
|
+
if (n instanceof Element && (n.matches?.(COMPOSER_SEL) || n.querySelector?.(COMPOSER_SEL))) return true;
|
|
10814
|
+
}
|
|
10815
|
+
} else if (m.type === "characterData") {
|
|
10816
|
+
let el = m.target.parentElement;
|
|
10817
|
+
while (el && el !== document.body) {
|
|
10818
|
+
if (el.matches?.("[data-composer-layout], [data-composer-leading-actions], [data-composer-leading-content]")) return true;
|
|
10819
|
+
el = el.parentElement;
|
|
10820
|
+
}
|
|
10821
|
+
}
|
|
10822
|
+
}
|
|
10823
|
+
return false;
|
|
10824
|
+
};
|
|
10825
|
+
const schedule = () => {
|
|
10826
|
+
clearTimeout(schedule.t);
|
|
10827
|
+
schedule.t = setTimeout(apply3, 120);
|
|
10828
|
+
};
|
|
10829
|
+
void getConfig().then((cfg) => {
|
|
10830
|
+
enabled10 = cfg.features ? cfg.features.composerProvider !== false : true;
|
|
10831
|
+
}).catch(() => {
|
|
10832
|
+
});
|
|
10833
|
+
window.addEventListener("zcodepro:config-changed", () => {
|
|
10834
|
+
void getConfig(true).then((cfg) => {
|
|
10835
|
+
const next = cfg.features ? cfg.features.composerProvider !== false : true;
|
|
10836
|
+
if (next !== enabled10) {
|
|
10837
|
+
enabled10 = next;
|
|
10838
|
+
apply3();
|
|
10839
|
+
}
|
|
10840
|
+
}).catch(() => {
|
|
10841
|
+
});
|
|
10842
|
+
});
|
|
10843
|
+
const observer2 = new MutationObserver((muts) => {
|
|
10844
|
+
if (enabled10 && relevant2(muts)) schedule();
|
|
10845
|
+
});
|
|
10846
|
+
observer2.observe(document.body, { childList: true, subtree: true, characterData: true });
|
|
10847
|
+
apply3();
|
|
10848
|
+
}
|
|
10849
|
+
|
|
10520
10850
|
// src/inject/features/plugin-updates.js
|
|
10521
10851
|
var NOTIFIED_KEY = "zcodepro-plugin-updates-notified";
|
|
10522
10852
|
async function startPluginUpdateCheck() {
|
|
@@ -10648,6 +10978,14 @@
|
|
|
10648
10978
|
startTheme();
|
|
10649
10979
|
} catch {
|
|
10650
10980
|
}
|
|
10981
|
+
try {
|
|
10982
|
+
startTableCopy();
|
|
10983
|
+
} catch {
|
|
10984
|
+
}
|
|
10985
|
+
try {
|
|
10986
|
+
startComposerProvider();
|
|
10987
|
+
} catch {
|
|
10988
|
+
}
|
|
10651
10989
|
try {
|
|
10652
10990
|
startSettingsEntry();
|
|
10653
10991
|
} catch {
|