@tianshu-ai/tianshu 0.6.0 → 0.7.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.
Files changed (87) hide show
  1. package/node_modules/@tianshu-ai/plugin-sdk/dist/client.d.ts +40 -0
  2. package/node_modules/@tianshu-ai/plugin-sdk/dist/client.d.ts.map +1 -1
  3. package/node_modules/@tianshu-ai/plugin-sdk/dist/client.js +46 -0
  4. package/node_modules/@tianshu-ai/plugin-sdk/dist/client.js.map +1 -1
  5. package/node_modules/@tianshu-ai/plugin-sdk/src/client.ts +107 -0
  6. package/package.json +1 -1
  7. package/packages/plugin-sdk/dist/client.d.ts +40 -0
  8. package/packages/plugin-sdk/dist/client.d.ts.map +1 -1
  9. package/packages/plugin-sdk/dist/client.js +46 -0
  10. package/packages/plugin-sdk/dist/client.js.map +1 -1
  11. package/packages/server/builtinConfig/plugins/board/locales/en.json +9 -0
  12. package/packages/server/builtinConfig/plugins/board/locales/zh.json +9 -0
  13. package/packages/server/builtinConfig/plugins/cron/locales/en.json +42 -0
  14. package/packages/server/builtinConfig/plugins/cron/locales/zh.json +42 -0
  15. package/packages/server/builtinConfig/plugins/files/locales/en.json +36 -0
  16. package/packages/server/builtinConfig/plugins/files/locales/zh.json +36 -0
  17. package/packages/server/builtinConfig/plugins/microsandbox/locales/en.json +169 -0
  18. package/packages/server/builtinConfig/plugins/microsandbox/locales/zh.json +169 -0
  19. package/packages/server/builtinConfig/plugins/openshell/locales/en.json +38 -0
  20. package/packages/server/builtinConfig/plugins/openshell/locales/zh.json +38 -0
  21. package/packages/server/builtinConfig/plugins/reverse-mcp/locales/en.json +55 -0
  22. package/packages/server/builtinConfig/plugins/reverse-mcp/locales/zh.json +55 -0
  23. package/packages/server/builtinConfig/plugins/web-search/locales/en.json +9 -0
  24. package/packages/server/builtinConfig/plugins/web-search/locales/zh.json +9 -0
  25. package/packages/server/builtinConfig/plugins/wechat/locales/en.json +50 -0
  26. package/packages/server/builtinConfig/plugins/wechat/locales/zh.json +50 -0
  27. package/packages/server/builtinConfig/plugins/wiki/locales/en.json +54 -0
  28. package/packages/server/builtinConfig/plugins/wiki/locales/zh.json +54 -0
  29. package/packages/server/builtinConfig/plugins/workboard/locales/en.json +206 -0
  30. package/packages/server/builtinConfig/plugins/workboard/locales/zh.json +206 -0
  31. package/packages/server/builtinConfig/plugins/workforce-studio/locales/en.json +249 -0
  32. package/packages/server/builtinConfig/plugins/workforce-studio/locales/zh.json +249 -0
  33. package/packages/server/package.json +2 -2
  34. package/packages/web/dist/assets/{bundle-web-DPPIXSkb.js → bundle-web-CcugWwmS.js} +1 -1
  35. package/packages/web/dist/assets/index-D922c3X6.js +80 -0
  36. package/packages/web/dist/assets/{react-force-graph-2d-nI8s8bx_.js → react-force-graph-2d-CNeOEg3N.js} +1 -1
  37. package/packages/web/dist/index.html +1 -1
  38. package/packages/web/package.json +2 -2
  39. package/plugins/board/dist/client.d.ts.map +1 -1
  40. package/plugins/board/dist/client.js +3 -2
  41. package/plugins/board/dist/client.js.map +1 -1
  42. package/plugins/cron/dist/client.d.ts.map +1 -1
  43. package/plugins/cron/dist/client.js +30 -13
  44. package/plugins/cron/dist/client.js.map +1 -1
  45. package/plugins/files/dist/client.d.ts.map +1 -1
  46. package/plugins/files/dist/client.js +49 -35
  47. package/plugins/files/dist/client.js.map +1 -1
  48. package/plugins/microsandbox/dist/client.d.ts.map +1 -1
  49. package/plugins/microsandbox/dist/client.js +94 -67
  50. package/plugins/microsandbox/dist/client.js.map +1 -1
  51. package/plugins/openshell/dist/client.d.ts.map +1 -1
  52. package/plugins/openshell/dist/client.js +15 -11
  53. package/plugins/openshell/dist/client.js.map +1 -1
  54. package/plugins/reverse-mcp/dist/client.d.ts.map +1 -1
  55. package/plugins/reverse-mcp/dist/client.js +6 -4
  56. package/plugins/reverse-mcp/dist/client.js.map +1 -1
  57. package/plugins/wechat/dist/client.d.ts.map +1 -1
  58. package/plugins/wechat/dist/client.js +21 -16
  59. package/plugins/wechat/dist/client.js.map +1 -1
  60. package/plugins/wiki/dist/client.d.ts.map +1 -1
  61. package/plugins/wiki/dist/client.js +36 -17
  62. package/plugins/wiki/dist/client.js.map +1 -1
  63. package/plugins/workboard/dist/client.d.ts.map +1 -1
  64. package/plugins/workboard/dist/client.js +116 -68
  65. package/plugins/workboard/dist/client.js.map +1 -1
  66. package/plugins/workboard/dist/worker-agents-page.d.ts.map +1 -1
  67. package/plugins/workboard/dist/worker-agents-page.js +15 -9
  68. package/plugins/workboard/dist/worker-agents-page.js.map +1 -1
  69. package/plugins/workforce-studio/dist/client.d.ts.map +1 -1
  70. package/plugins/workforce-studio/dist/client.js +62 -52
  71. package/plugins/workforce-studio/dist/client.js.map +1 -1
  72. package/plugins/workforce-studio/dist/solution-editors.d.ts +7 -2
  73. package/plugins/workforce-studio/dist/solution-editors.d.ts.map +1 -1
  74. package/plugins/workforce-studio/dist/solution-editors.js +69 -68
  75. package/plugins/workforce-studio/dist/solution-editors.js.map +1 -1
  76. package/plugins/workforce-studio/dist/solution-inspector.d.ts +5 -1
  77. package/plugins/workforce-studio/dist/solution-inspector.d.ts.map +1 -1
  78. package/plugins/workforce-studio/dist/solution-inspector.js +45 -16
  79. package/plugins/workforce-studio/dist/solution-inspector.js.map +1 -1
  80. package/plugins/workforce-studio/dist/solution-tree.d.ts +5 -2
  81. package/plugins/workforce-studio/dist/solution-tree.d.ts.map +1 -1
  82. package/plugins/workforce-studio/dist/solution-tree.js +26 -24
  83. package/plugins/workforce-studio/dist/solution-tree.js.map +1 -1
  84. package/plugins/workforce-studio/dist/solution-view.d.ts.map +1 -1
  85. package/plugins/workforce-studio/dist/solution-view.js +25 -16
  86. package/plugins/workforce-studio/dist/solution-view.js.map +1 -1
  87. package/packages/web/dist/assets/index-CSsJFBv_.js +0 -78
@@ -293,6 +293,46 @@ export declare function __resetUseThemeForTest(): void;
293
293
  /** Hook plugins call. Returns the live theme state; re-renders
294
294
  * the consuming component on theme change. */
295
295
  export declare function useTheme(): ThemeApi;
296
+ export type PluginLocale = "en" | "zh";
297
+ export interface LocaleApi {
298
+ /** Currently-active locale. Two values today (en / zh); the
299
+ * union may grow when the host adds locales. */
300
+ locale: PluginLocale;
301
+ /** Translate a FULL namespaced key. Plugin components typically
302
+ * reach `t` through `usePluginT(pluginId)` which auto-prefixes
303
+ * `plugin.<id>.`; direct callers pass the full key themselves.
304
+ * `{param}` placeholders in the resolved string are replaced
305
+ * with the matching entry from `params`. Missing translations
306
+ * fall back to the raw key so a call never renders empty. */
307
+ t: (key: string, params?: Record<string, string | number>) => string;
308
+ }
309
+ /** Host-only: install the live `useLocale()` accessor. The web
310
+ * bundle calls this once on bootstrap with a function that reads
311
+ * the host's locale state and merged plugin dictionaries. */
312
+ export declare function __installUseLocale(fn: () => LocaleApi): void;
313
+ /** Test helper. */
314
+ export declare function __resetUseLocaleForTest(): void;
315
+ /** Hook returning the host's current locale + translator. Safe to
316
+ * call outside a host (returns an identity `t` that echoes the
317
+ * key back) so plugin components stay renderable in tests. */
318
+ export declare function useLocale(): LocaleApi;
319
+ /**
320
+ * Convenience wrapper for a plugin's own component code. Returns a
321
+ * `t(shortKey, params?)` that auto-prefixes `plugin.<pluginId>.`
322
+ * before delegating to the host's installed translator.
323
+ *
324
+ * Example — inside the workboard plugin:
325
+ *
326
+ * const t = usePluginT("workboard");
327
+ * t("workers.title"); // → plugin.workboard.workers.title
328
+ * t("workers.busyCount", // → plugin.workboard.workers.busyCount
329
+ * { busy: 2, total: 5 }); // with {busy}/{total} interpolated
330
+ *
331
+ * The returned function re-derives on every render so a locale
332
+ * flip re-renders the consuming component (via the underlying
333
+ * `useLocale()` subscription).
334
+ */
335
+ export declare function usePluginT(pluginId: string): (key: string, params?: Record<string, string | number>) => string;
296
336
  export interface ChatNavApi {
297
337
  /** What the chat area is currently showing. null = webchat. */
298
338
  viewingSessionId: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -147,6 +147,52 @@ export function useTheme() {
147
147
  }
148
148
  return fn();
149
149
  }
150
+ function localeSlot() {
151
+ return globalThis;
152
+ }
153
+ /** Host-only: install the live `useLocale()` accessor. The web
154
+ * bundle calls this once on bootstrap with a function that reads
155
+ * the host's locale state and merged plugin dictionaries. */
156
+ export function __installUseLocale(fn) {
157
+ localeSlot().__tianshuPluginSdkLocaleHook__ = fn;
158
+ }
159
+ /** Test helper. */
160
+ export function __resetUseLocaleForTest() {
161
+ delete localeSlot().__tianshuPluginSdkLocaleHook__;
162
+ }
163
+ /** Hook returning the host's current locale + translator. Safe to
164
+ * call outside a host (returns an identity `t` that echoes the
165
+ * key back) so plugin components stay renderable in tests. */
166
+ export function useLocale() {
167
+ const fn = localeSlot().__tianshuPluginSdkLocaleHook__;
168
+ if (!fn) {
169
+ return {
170
+ locale: "en",
171
+ t: (k) => k,
172
+ };
173
+ }
174
+ return fn();
175
+ }
176
+ /**
177
+ * Convenience wrapper for a plugin's own component code. Returns a
178
+ * `t(shortKey, params?)` that auto-prefixes `plugin.<pluginId>.`
179
+ * before delegating to the host's installed translator.
180
+ *
181
+ * Example — inside the workboard plugin:
182
+ *
183
+ * const t = usePluginT("workboard");
184
+ * t("workers.title"); // → plugin.workboard.workers.title
185
+ * t("workers.busyCount", // → plugin.workboard.workers.busyCount
186
+ * { busy: 2, total: 5 }); // with {busy}/{total} interpolated
187
+ *
188
+ * The returned function re-derives on every render so a locale
189
+ * flip re-renders the consuming component (via the underlying
190
+ * `useLocale()` subscription).
191
+ */
192
+ export function usePluginT(pluginId) {
193
+ const { t } = useLocale();
194
+ return (key, params) => t(`plugin.${pluginId}.${key}`, params);
195
+ }
150
196
  function chatNavSlot() {
151
197
  return globalThis;
152
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -559,6 +559,113 @@ export function useTheme(): ThemeApi {
559
559
  return fn();
560
560
  }
561
561
 
562
+ // ─── i18n — host-managed locale + translation surface for plugins
563
+ //
564
+ // Design (see feat/plugin-i18n):
565
+ // • Each plugin ships flat JSON dictionaries at
566
+ // `plugins/<id>/locales/{en,zh}.json`. The host merges them
567
+ // into a global dict under the namespace `plugin.<id>.*` —
568
+ // so workboard's `workers.title` key becomes the global key
569
+ // `plugin.workboard.workers.title` after merge.
570
+ // • The host installs ONE global accessor that returns
571
+ // `{ locale, t(fullKey, params?) }`. `t` expects the FULL
572
+ // namespaced key (host UI strings and plugin strings share
573
+ // the same lookup surface).
574
+ // • Plugin components almost always want to write short keys
575
+ // scoped to their own plugin id — so alongside the raw
576
+ // `useLocale()` we expose a tiny helper `usePluginT(id)`
577
+ // that auto-prefixes `plugin.<id>.` before delegating to
578
+ // the host's `t`. Idiomatic plugin usage:
579
+ //
580
+ // const t = usePluginT("workboard");
581
+ // return <h2>{t("workers.title")}</h2>;
582
+ //
583
+ // Same install-once + globalSlot pattern as useTheme /
584
+ // useComposer / useChatNav so duplicated SDK copies in plugin
585
+ // bundles still resolve to the host's installed hook.
586
+ //
587
+ // Fallback (pre-install, unit tests): `useLocale()` returns
588
+ // `{ locale: "en", t: (k) => k }` — a plugin rendered without a
589
+ // host still paints the raw key rather than crashing.
590
+ //
591
+ // `{param}` interpolation matches the host's own `translate`
592
+ // helper: the host is expected to implement the same substitution
593
+ // inside the `t` it installs. Keys with no matching translation
594
+ // fall through to the raw key (again, matching host behaviour).
595
+
596
+ export type PluginLocale = "en" | "zh";
597
+
598
+ export interface LocaleApi {
599
+ /** Currently-active locale. Two values today (en / zh); the
600
+ * union may grow when the host adds locales. */
601
+ locale: PluginLocale;
602
+ /** Translate a FULL namespaced key. Plugin components typically
603
+ * reach `t` through `usePluginT(pluginId)` which auto-prefixes
604
+ * `plugin.<id>.`; direct callers pass the full key themselves.
605
+ * `{param}` placeholders in the resolved string are replaced
606
+ * with the matching entry from `params`. Missing translations
607
+ * fall back to the raw key so a call never renders empty. */
608
+ t: (key: string, params?: Record<string, string | number>) => string;
609
+ }
610
+
611
+ interface LocaleGlobalSlot {
612
+ __tianshuPluginSdkLocaleHook__?: () => LocaleApi;
613
+ }
614
+
615
+ function localeSlot(): LocaleGlobalSlot {
616
+ return globalThis as unknown as LocaleGlobalSlot;
617
+ }
618
+
619
+ /** Host-only: install the live `useLocale()` accessor. The web
620
+ * bundle calls this once on bootstrap with a function that reads
621
+ * the host's locale state and merged plugin dictionaries. */
622
+ export function __installUseLocale(fn: () => LocaleApi): void {
623
+ localeSlot().__tianshuPluginSdkLocaleHook__ = fn;
624
+ }
625
+
626
+ /** Test helper. */
627
+ export function __resetUseLocaleForTest(): void {
628
+ delete localeSlot().__tianshuPluginSdkLocaleHook__;
629
+ }
630
+
631
+ /** Hook returning the host's current locale + translator. Safe to
632
+ * call outside a host (returns an identity `t` that echoes the
633
+ * key back) so plugin components stay renderable in tests. */
634
+ export function useLocale(): LocaleApi {
635
+ const fn = localeSlot().__tianshuPluginSdkLocaleHook__;
636
+ if (!fn) {
637
+ return {
638
+ locale: "en",
639
+ t: (k) => k,
640
+ };
641
+ }
642
+ return fn();
643
+ }
644
+
645
+ /**
646
+ * Convenience wrapper for a plugin's own component code. Returns a
647
+ * `t(shortKey, params?)` that auto-prefixes `plugin.<pluginId>.`
648
+ * before delegating to the host's installed translator.
649
+ *
650
+ * Example — inside the workboard plugin:
651
+ *
652
+ * const t = usePluginT("workboard");
653
+ * t("workers.title"); // → plugin.workboard.workers.title
654
+ * t("workers.busyCount", // → plugin.workboard.workers.busyCount
655
+ * { busy: 2, total: 5 }); // with {busy}/{total} interpolated
656
+ *
657
+ * The returned function re-derives on every render so a locale
658
+ * flip re-renders the consuming component (via the underlying
659
+ * `useLocale()` subscription).
660
+ */
661
+ export function usePluginT(
662
+ pluginId: string,
663
+ ): (key: string, params?: Record<string, string | number>) => string {
664
+ const { t } = useLocale();
665
+ return (key: string, params?: Record<string, string | number>) =>
666
+ t(`plugin.${pluginId}.${key}`, params);
667
+ }
668
+
562
669
  // ─── ChatNav — host-managed selection of which session the chat
563
670
  // area is currently viewing.
564
671
  //
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianshu-ai/tianshu",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "An open AI agent platform with a sidecar browser. Built in public.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/tianshu-ai/tianshu",
@@ -293,6 +293,46 @@ export declare function __resetUseThemeForTest(): void;
293
293
  /** Hook plugins call. Returns the live theme state; re-renders
294
294
  * the consuming component on theme change. */
295
295
  export declare function useTheme(): ThemeApi;
296
+ export type PluginLocale = "en" | "zh";
297
+ export interface LocaleApi {
298
+ /** Currently-active locale. Two values today (en / zh); the
299
+ * union may grow when the host adds locales. */
300
+ locale: PluginLocale;
301
+ /** Translate a FULL namespaced key. Plugin components typically
302
+ * reach `t` through `usePluginT(pluginId)` which auto-prefixes
303
+ * `plugin.<id>.`; direct callers pass the full key themselves.
304
+ * `{param}` placeholders in the resolved string are replaced
305
+ * with the matching entry from `params`. Missing translations
306
+ * fall back to the raw key so a call never renders empty. */
307
+ t: (key: string, params?: Record<string, string | number>) => string;
308
+ }
309
+ /** Host-only: install the live `useLocale()` accessor. The web
310
+ * bundle calls this once on bootstrap with a function that reads
311
+ * the host's locale state and merged plugin dictionaries. */
312
+ export declare function __installUseLocale(fn: () => LocaleApi): void;
313
+ /** Test helper. */
314
+ export declare function __resetUseLocaleForTest(): void;
315
+ /** Hook returning the host's current locale + translator. Safe to
316
+ * call outside a host (returns an identity `t` that echoes the
317
+ * key back) so plugin components stay renderable in tests. */
318
+ export declare function useLocale(): LocaleApi;
319
+ /**
320
+ * Convenience wrapper for a plugin's own component code. Returns a
321
+ * `t(shortKey, params?)` that auto-prefixes `plugin.<pluginId>.`
322
+ * before delegating to the host's installed translator.
323
+ *
324
+ * Example — inside the workboard plugin:
325
+ *
326
+ * const t = usePluginT("workboard");
327
+ * t("workers.title"); // → plugin.workboard.workers.title
328
+ * t("workers.busyCount", // → plugin.workboard.workers.busyCount
329
+ * { busy: 2, total: 5 }); // with {busy}/{total} interpolated
330
+ *
331
+ * The returned function re-derives on every render so a locale
332
+ * flip re-renders the consuming component (via the underlying
333
+ * `useLocale()` subscription).
334
+ */
335
+ export declare function usePluginT(pluginId: string): (key: string, params?: Record<string, string | number>) => string;
296
336
  export interface ChatNavApi {
297
337
  /** What the chat area is currently showing. null = webchat. */
298
338
  viewingSessionId: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -147,6 +147,52 @@ export function useTheme() {
147
147
  }
148
148
  return fn();
149
149
  }
150
+ function localeSlot() {
151
+ return globalThis;
152
+ }
153
+ /** Host-only: install the live `useLocale()` accessor. The web
154
+ * bundle calls this once on bootstrap with a function that reads
155
+ * the host's locale state and merged plugin dictionaries. */
156
+ export function __installUseLocale(fn) {
157
+ localeSlot().__tianshuPluginSdkLocaleHook__ = fn;
158
+ }
159
+ /** Test helper. */
160
+ export function __resetUseLocaleForTest() {
161
+ delete localeSlot().__tianshuPluginSdkLocaleHook__;
162
+ }
163
+ /** Hook returning the host's current locale + translator. Safe to
164
+ * call outside a host (returns an identity `t` that echoes the
165
+ * key back) so plugin components stay renderable in tests. */
166
+ export function useLocale() {
167
+ const fn = localeSlot().__tianshuPluginSdkLocaleHook__;
168
+ if (!fn) {
169
+ return {
170
+ locale: "en",
171
+ t: (k) => k,
172
+ };
173
+ }
174
+ return fn();
175
+ }
176
+ /**
177
+ * Convenience wrapper for a plugin's own component code. Returns a
178
+ * `t(shortKey, params?)` that auto-prefixes `plugin.<pluginId>.`
179
+ * before delegating to the host's installed translator.
180
+ *
181
+ * Example — inside the workboard plugin:
182
+ *
183
+ * const t = usePluginT("workboard");
184
+ * t("workers.title"); // → plugin.workboard.workers.title
185
+ * t("workers.busyCount", // → plugin.workboard.workers.busyCount
186
+ * { busy: 2, total: 5 }); // with {busy}/{total} interpolated
187
+ *
188
+ * The returned function re-derives on every render so a locale
189
+ * flip re-renders the consuming component (via the underlying
190
+ * `useLocale()` subscription).
191
+ */
192
+ export function usePluginT(pluginId) {
193
+ const { t } = useLocale();
194
+ return (key, params) => t(`plugin.${pluginId}.${key}`, params);
195
+ }
150
196
  function chatNavSlot() {
151
197
  return globalThis;
152
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,mCAAmC;AACnC,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,yEAAyE;AA4KzE,SAAS,UAAU;IACjB,kEAAkE;IAClE,OAAO,UAA2C,CAAC;AACrD,CAAC;AAED;;qBAEqB;AACrB,MAAM,UAAU,oBAAoB,CAAC,EAAqB;IACxD,UAAU,EAAE,CAAC,4BAA4B,GAAG,EAAE,CAAC;AACjD,CAAC;AAED;;iBAEiB;AACjB,MAAM,UAAU,yBAAyB;IACvC,OAAO,UAAU,EAAE,CAAC,4BAA4B,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,4BAA4B,CAAC;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CACb,2EAA2E;YACzE,4EAA4E,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AA2BD,SAAS,YAAY;IACnB,OAAO,UAA2C,CAAC;AACrD,CAAC;AAED;;;YAGY;AACZ,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACnD,YAAY,EAAE,CAAC,4BAA4B,GAAG,GAAG,CAAC;AACpD,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,yBAAyB;IACvC,OAAO,YAAY,EAAE,CAAC,4BAA4B,CAAC;AACrD,CAAC;AAED;;;;;gBAKgB;AAChB,gEAAgE;AAChE,gEAAgE;AAChE,+DAA+D;AAC/D,kEAAkE;AAClE,EAAE;AACF,0DAA0D;AAC1D,gEAAgE;AAChE,gEAAgE;AAChE,4DAA4D;AAC5D,yDAAyD;AAEzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,SAAS,oBAAoB;IAC3B,OAAO,UAAmD,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,CAA6C;IAE7C,oBAAoB,EAAE,CAAC,oCAAoC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO,oBAAoB,EAAE,CAAC,oCAAoC,CAAC;AACrE,CAAC;AAED;;iEAEiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAC3B,CAAC,KAAK,EAAE,EAAE;IACR,MAAM,CAAC,GAAG,oBAAoB,EAAE,CAAC,oCAAoC,CAAC;IACtE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AAEJ,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,IAAY,EAAQ,EAAE;QAC5B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC,4BAA4B,CAAC;QACxD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,2DAA2D;YAC3D,4DAA4D;YAC5D,4DAA4D;YAC5D,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,yBAAyB,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AA4HD,SAAS,gBAAgB;IACvB,OAAO,UAA+C,CAAC;AACzD,CAAC;AAED;4CAC4C;AAC5C,MAAM,UAAU,qBAAqB,CAAC,GAAiB;IACrD,gBAAgB,EAAE,CAAC,gCAAgC,GAAG,GAAG,CAAC;AAC5D,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,0BAA0B;IACxC,OAAO,gBAAgB,EAAE,CAAC,gCAAgC,CAAC;AAC7D,CAAC;AAED;;;kDAGkD;AAClD,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC,gCAAgC,CAAC;IAChE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,gFAAgF;YAC9E,wHAAwH,CAC3H,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAuDD,SAAS,SAAS;IAChB,OAAO,UAAwC,CAAC;AAClD,CAAC;AAED;;;0CAG0C;AAC1C,MAAM,UAAU,iBAAiB,CAAC,EAAkB;IAClD,SAAS,EAAE,CAAC,6BAA6B,GAAG,EAAE,CAAC;AACjD,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,sBAAsB;IACpC,OAAO,SAAS,EAAE,CAAC,6BAA6B,CAAC;AACnD,CAAC;AAED;+CAC+C;AAC/C,MAAM,UAAU,QAAQ;IACtB,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC,6BAA6B,CAAC;IACrD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,uDAAuD;QACvD,yDAAyD;QACzD,2CAA2C;QAC3C,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AAuDD,SAAS,UAAU;IACjB,OAAO,UAAyC,CAAC;AACnD,CAAC;AAED;;8DAE8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,EAAmB;IACpD,UAAU,EAAE,CAAC,8BAA8B,GAAG,EAAE,CAAC;AACnD,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,EAAE,CAAC,8BAA8B,CAAC;AACrD,CAAC;AAED;;+DAE+D;AAC/D,MAAM,UAAU,SAAS;IACvB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,8BAA8B,CAAC;IACvD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACZ,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CACxB,QAAgB;IAEhB,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAW,EAAE,MAAwC,EAAE,EAAE,CAC/D,CAAC,CAAC,UAAU,QAAQ,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAiCD,SAAS,WAAW;IAClB,OAAO,UAA0C,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAoB;IACnD,WAAW,EAAE,CAAC,+BAA+B,GAAG,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,WAAW,EAAE,CAAC,+BAA+B,CAAC;AACvD,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,UAAU;IACxB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC,+BAA+B,CAAC;IACzD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO;YACL,gBAAgB,EAAE,IAAI;YACtB,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,CAAC;AACd,CAAC;AAqCD,SAAS,WAAW;IAClB,OAAO,UAA0C,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAe;IACjD,WAAW,EAAE,CAAC,8BAA8B,GAAG,GAAG,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,WAAW,EAAE,CAAC,8BAA8B,CAAC;AACtD,CAAC;AAED;;;yDAGyD;AACzD,MAAM,UAAU,kBAAkB,CAChC,IAAoB,EACpB,OAAgC;IAEhC,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC,8BAA8B,CAAC;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC,SAAS,CAClB,IAAI,EACJ,OAAkE,CACnE,CAAC;AACJ,CAAC;AAED;;yDAEyD;AACzD,MAAM,UAAU,aAAa,CAC3B,GAA+C;IAE/C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC,8BAA8B,CAAC;IACzD,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC"}
@@ -0,0 +1,9 @@
1
+ {
2
+ "manifest.topBarButtons.toggle": "Boards",
3
+ "manifest.rightPanels.main": "Boards",
4
+
5
+ "panel.noBoards": "No boards",
6
+ "panel.refresh": "Refresh",
7
+ "panel.loading": "Loading…",
8
+ "panel.addHint": "Add one at board/<name>/index.html"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "manifest.topBarButtons.toggle": "看板",
3
+ "manifest.rightPanels.main": "看板",
4
+
5
+ "panel.noBoards": "暂无看板",
6
+ "panel.refresh": "刷新",
7
+ "panel.loading": "加载中…",
8
+ "panel.addHint": "在 board/<名称>/index.html 添加一个"
9
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "manifest.adminPages.settings": "Scheduler",
3
+ "manifest.configGroups.schedule.label": "Schedule",
4
+ "manifest.configGroups.schedule.badge": "runtime",
5
+ "manifest.config.defaultTz.label": "Default timezone",
6
+ "manifest.config.defaultTz.description": "IANA timezone (e.g. Asia/Shanghai) applied to cron jobs whose creator didn't specify one. Leave blank to use the server's local timezone. Only affects cron-type jobs; once-type jobs use absolute timestamps.",
7
+ "manifest.topBarButtons.toggle": "Scheduled jobs",
8
+ "manifest.rightPanels.main": "Schedule",
9
+
10
+ "weekday.sun": "Sun",
11
+ "weekday.mon": "Mon",
12
+ "weekday.tue": "Tue",
13
+ "weekday.wed": "Wed",
14
+ "weekday.thu": "Thu",
15
+ "weekday.fri": "Fri",
16
+ "weekday.sat": "Sat",
17
+
18
+ "aria.prevMonth": "Previous month",
19
+ "aria.nextMonth": "Next month",
20
+ "aria.deleteJob": "Delete job",
21
+
22
+ "agenda.jobCountOne": "{n} job",
23
+ "agenda.jobCountMany": "{n} jobs",
24
+ "agenda.noJobs": "No jobs",
25
+ "agenda.today": "Today",
26
+ "agenda.nothingScheduled": "Nothing scheduled",
27
+
28
+ "job.recurring": "Recurring",
29
+ "job.oneTime": "One-time",
30
+ "job.task": "Task",
31
+ "job.message": "Message",
32
+ "job.disabled": "⏸️ disabled",
33
+ "job.executed": "executed",
34
+
35
+ "delete.title": "Delete scheduled job?",
36
+ "delete.confirmPre": "This will permanently remove ",
37
+ "delete.confirmCron": " and stop all future runs.",
38
+ "delete.confirmOnce": ".",
39
+ "delete.confirmSuffix": " This can’t be undone.",
40
+ "delete.cancel": "Cancel",
41
+ "delete.delete": "Delete"
42
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "manifest.adminPages.settings": "调度器",
3
+ "manifest.configGroups.schedule.label": "调度",
4
+ "manifest.configGroups.schedule.badge": "运行时",
5
+ "manifest.config.defaultTz.label": "默认时区",
6
+ "manifest.config.defaultTz.description": "IANA 时区(如 Asia/Shanghai),用于创建者未指定时区的 cron 任务。留空则使用服务器本地时区。仅影响 cron 类型任务;once 类型任务使用绝对时间戳。",
7
+ "manifest.topBarButtons.toggle": "定时任务",
8
+ "manifest.rightPanels.main": "日程",
9
+
10
+ "weekday.sun": "日",
11
+ "weekday.mon": "一",
12
+ "weekday.tue": "二",
13
+ "weekday.wed": "三",
14
+ "weekday.thu": "四",
15
+ "weekday.fri": "五",
16
+ "weekday.sat": "六",
17
+
18
+ "aria.prevMonth": "上个月",
19
+ "aria.nextMonth": "下个月",
20
+ "aria.deleteJob": "删除任务",
21
+
22
+ "agenda.jobCountOne": "{n} 个任务",
23
+ "agenda.jobCountMany": "{n} 个任务",
24
+ "agenda.noJobs": "无任务",
25
+ "agenda.today": "今天",
26
+ "agenda.nothingScheduled": "暂无日程",
27
+
28
+ "job.recurring": "重复",
29
+ "job.oneTime": "一次性",
30
+ "job.task": "任务",
31
+ "job.message": "消息",
32
+ "job.disabled": "⏸️ 已停用",
33
+ "job.executed": "已执行",
34
+
35
+ "delete.title": "删除定时任务?",
36
+ "delete.confirmPre": "此操作将永久移除 ",
37
+ "delete.confirmCron": " 并停止所有未来的运行。",
38
+ "delete.confirmOnce": "。",
39
+ "delete.confirmSuffix": " 此操作无法撤销。",
40
+ "delete.cancel": "取消",
41
+ "delete.delete": "删除"
42
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "manifest.topBarButtons.toggle": "Workspace files",
3
+ "manifest.rightPanels.main": "Files",
4
+ "manifest.composerActions.attach": "Attach file",
5
+
6
+ "size.empty": "—",
7
+ "size.bytes": "{n} B",
8
+ "size.kb": "{n} KB",
9
+ "size.mb": "{n} MB",
10
+ "size.gb": "{n} GB",
11
+
12
+ "modified.empty": "—",
13
+ "modified.justNow": "Just now",
14
+ "modified.minutesAgo": "{n}m ago",
15
+ "modified.hoursAgo": "{n}h ago",
16
+ "modified.daysAgo": "{n}d ago",
17
+
18
+ "panel.upOneLevel": "Up one level",
19
+ "panel.filterPlaceholder": "Filter files...",
20
+ "panel.refresh": "Refresh",
21
+ "panel.toggleView": "Toggle view",
22
+ "panel.col.name": "Name",
23
+ "panel.col.size": "Size",
24
+ "panel.col.modified": "Modified",
25
+ "panel.noMatching": "No matching files",
26
+ "panel.emptyDir": "Empty directory",
27
+ "panel.dash": "—",
28
+ "panel.truncated": "Listing truncated at 5000 entries.",
29
+
30
+ "preview.download": "Download",
31
+ "preview.sizeExceeds": "File is {size}, exceeds the {max} preview cap.",
32
+
33
+ "upload.attachFile": "Attach file",
34
+ "upload.exceedsCap": "File exceeds {mb} MB cap",
35
+ "upload.noBody": "(no body)"
36
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "manifest.topBarButtons.toggle": "工作区文件",
3
+ "manifest.rightPanels.main": "文件",
4
+ "manifest.composerActions.attach": "附加文件",
5
+
6
+ "size.empty": "—",
7
+ "size.bytes": "{n} B",
8
+ "size.kb": "{n} KB",
9
+ "size.mb": "{n} MB",
10
+ "size.gb": "{n} GB",
11
+
12
+ "modified.empty": "—",
13
+ "modified.justNow": "刚刚",
14
+ "modified.minutesAgo": "{n}分钟前",
15
+ "modified.hoursAgo": "{n}小时前",
16
+ "modified.daysAgo": "{n}天前",
17
+
18
+ "panel.upOneLevel": "上一级",
19
+ "panel.filterPlaceholder": "筛选文件…",
20
+ "panel.refresh": "刷新",
21
+ "panel.toggleView": "切换视图",
22
+ "panel.col.name": "名称",
23
+ "panel.col.size": "大小",
24
+ "panel.col.modified": "修改时间",
25
+ "panel.noMatching": "没有匹配的文件",
26
+ "panel.emptyDir": "空目录",
27
+ "panel.dash": "—",
28
+ "panel.truncated": "列表已在 5000 个条目处截断。",
29
+
30
+ "preview.download": "下载",
31
+ "preview.sizeExceeds": "文件大小为 {size},超过 {max} 的预览上限。",
32
+
33
+ "upload.attachFile": "附加文件",
34
+ "upload.exceedsCap": "文件超过 {mb} MB 上限",
35
+ "upload.noBody": "(无内容)"
36
+ }