dsh-plugin-shop 0.8.7-beta.2 → 0.8.7

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.
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The shop's Settings section (design §5.1, amended 2026-10-15): its own
3
+ * entry in the Settings nav, directly after Built-in plugins, where it used
4
+ * to be a tab inside that section. The page carries the title and the one
5
+ * intro line the built-in Models and Built-in plugins pages carry, above the
6
+ * shop body, which is `ShopTab` unchanged.
7
+ */
8
+ import type { ReactNode } from 'react';
9
+ import { type ShopTabProps } from './ShopTab.tsx';
10
+ export declare function ShopSection(props: ShopTabProps): ReactNode;
@@ -62,8 +62,11 @@ export interface ShopTabInjected {
62
62
  reload?: () => void;
63
63
  }
64
64
  /** Full component props assembled by the Settings slot renderer. */
65
- export type ShopTabProps = PropsRuntime<'settings.plugins.tab'> & PropsLocale<'settings.shop'> & InjectFace<ShopTabInjected>;
66
- /** The tab as the settings slot registers it (`index.ts`): the body inside the
67
- * shop's own error boundary. Exported under the name the body used to carry,
68
- * so nothing can register the tab without the boundary. */
65
+ /** The shop body's props: since 2026-10-15 the shop is its own Settings
66
+ * section (design §5.1), whose one owner prop, `close`, the body ignores. */
67
+ export type ShopTabProps = PropsRuntime<'settings.section'> & PropsLocale<'settings.shop'> & InjectFace<ShopTabInjected>;
68
+ /** The shop body inside its own error boundary, as `ShopSection` renders it
69
+ * below the page's title and intro (the settings slot registers `ShopSection`,
70
+ * `index.ts`). Exported under the name the body used to carry, so nothing can
71
+ * render the body without the boundary. */
69
72
  export declare function ShopTab(props: ShopTabProps): ReactNode;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Shop settings surface, browser half — one tab in `settings.plugins.tab`
2
+ * Shop settings surface, browser half — one Settings section (`settings.section`)
3
3
  * that browses the catalog, installs with acknowledgement, toggles
4
4
  * enablement, lists installed plugins, and restarts dsh after installs.
5
5
  * Mounts the shop Remote itself (the assembly does not know this package)
@@ -9,7 +9,7 @@ import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
9
9
  import type { ShopLocaleKey } from './locales.ts';
10
10
  declare module '@deepseek-ai/dsh-client-ui-slots' {
11
11
  interface LocaleNamespaceMap {
12
- /** Shop settings tab copy. */
12
+ /** Shop Settings section copy. */
13
13
  'settings.shop': ShopLocaleKey;
14
14
  }
15
15
  }
@@ -40,5 +40,5 @@ export declare const WARM_TTL_MS: number;
40
40
  * namespace is therefore read through the reflect shop instead (`ctx.get`,
41
41
  * see apply), which has no inject requirement. */
42
42
  export declare const inject: string[];
43
- /** Mount the shop Remote and contribute the shop tab. */
43
+ /** Mount the shop Remote and contribute the shop's Settings section. */
44
44
  export declare function apply(ctx: ClientContext): Promise<void>;
@@ -1,7 +1,12 @@
1
- /** Copy dictionaries for the shop Settings tab. */
1
+ /** Copy dictionaries for the shop's Settings section. */
2
2
  /** Simplified Chinese dictionary and key source of truth. */
3
3
  export declare const zh: {
4
- tab: string;
4
+ /** The shop's name in Settings (design §5.1, amended 2026-10-15): its nav
5
+ * entry and its page title, one key so the two cannot drift apart. */
6
+ title: string;
7
+ /** The shop's Settings page intro line (design §5.1, amended 2026-10-15),
8
+ * as the built-in Models and 内置插件 pages carry one under their title. */
9
+ intro: string;
5
10
  loading: string;
6
11
  error: string;
7
12
  installedError: string;
@@ -48,9 +53,6 @@ export declare const zh: {
48
53
  install: string;
49
54
  cancel: string;
50
55
  dismiss: string;
51
- /** What every install now stands under, on the page rather than in a dialog
52
- * (spec §9.2/§9.3, amended 2026-10-14). */
53
- disclosure: string;
54
56
  /** The fold toggle under a card's collapsed red block. `aria-expanded` plus:
55
57
  * open shows the whole block; closed shows two lines of it. This toggle is
56
58
  * independent of the card's own header-expand. */
@@ -195,7 +197,8 @@ export declare const zh: {
195
197
  export type ShopLocaleKey = keyof typeof zh;
196
198
  /** English dictionary checked against the Chinese key set. */
197
199
  export declare const en: {
198
- tab: string;
200
+ title: string;
201
+ intro: string;
199
202
  loading: string;
200
203
  error: string;
201
204
  installedError: string;
@@ -237,7 +240,6 @@ export declare const en: {
237
240
  install: string;
238
241
  cancel: string;
239
242
  dismiss: string;
240
- disclosure: string;
241
243
  moreRedLines: string;
242
244
  lessRedLines: string;
243
245
  installing: string;
@@ -169,19 +169,6 @@ export declare function refusedPeersText(refused: Readonly<Record<string, string
169
169
  * install it cannot vouch for.
170
170
  */
171
171
  export declare function heldBy(entry: EntryIdentity, specs: Readonly<Record<string, string>> | undefined): string | undefined;
172
- /** The disclosure every install now stands under (spec §9.3, amended
173
- * 2026-10-14). It used to be the acknowledgement dialog's body: the gate asked
174
- * a reader to accept THESE privileges before each community install. The gate
175
- * is gone, and the same facts stand instead as one quiet line on the page, so
176
- * they cannot be missed and cannot be dismissed unread.
177
- *
178
- * Stated in the general case — "a plugin", not "this plugin" — because it now
179
- * describes the tier system rather than one entry, and because the community
180
- * tier is never badged on a card: naming a badge that is not rendered would
181
- * send a reader looking for it. */
182
- export declare const DISCLOSURE_EN = "Once installed, a plugin holds the same privileges as a built-in one: reading and writing your files, running shell commands, and reading and modifying the requests sent to the model. Plugins not marked Verified have not been reviewed.";
183
- /** The same facts in the zh register, with the same force. */
184
- export declare const DISCLOSURE_ZH = "\u5B89\u88C5\u540E\uFF0C\u63D2\u4EF6\u62E5\u6709\u4E0E\u5185\u7F6E\u63D2\u4EF6\u76F8\u540C\u7684\u6743\u9650\uFF1A\u8BFB\u5199\u4F60\u7684\u6587\u4EF6\u3001\u6267\u884C shell \u547D\u4EE4\uFF0C\u4EE5\u53CA\u8BFB\u53D6\u548C\u4FEE\u6539\u53D1\u9001\u7ED9\u6A21\u578B\u7684\u8BF7\u6C42\u3002\u672A\u6807\u300C\u5DF2\u5BA1\u6838\u300D\u7684\u63D2\u4EF6\u672A\u7ECF\u5BA1\u6838\u3002";
185
172
  /** Install rejection code → locale key, for the rejected-state code label
186
173
  * (§7.2): every rejection the host can return has a human label here. */
187
174
  export declare function rejectionCodeKey(code: InstallRejectionCode): ShopLocaleKey;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-shop",
3
- "version": "0.8.7-beta.2",
3
+ "version": "0.8.7",
4
4
  "description": "The DeepSeek Harness plugin shop: browse, install, enable, and update dsh plugins from a git-auditable catalog.",
5
5
  "icon": "./assets/icon.png",
6
6
  "keywords": [