dsh-group-status 0.2.1 → 0.2.2
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/lib/types/client/WorkspacePicker.d.ts +2 -2
- package/lib/types/client/WorkspacePicker.d.ts.map +1 -1
- package/lib/types/client/badge-settings.d.ts +3 -15
- package/lib/types/client/badge-settings.d.ts.map +1 -1
- package/lib/types/client/badge-settings.js +6 -38
- package/lib/types/client/badge-settings.js.map +1 -1
- package/lib/types/client/group-status.d.ts +1 -57
- package/lib/types/client/group-status.d.ts.map +1 -1
- package/lib/types/client/group-status.js +0 -77
- package/lib/types/client/group-status.js.map +1 -1
- package/lib/types/client/index.js +1 -31
- package/lib/types/client/index.js.map +1 -1
- package/lib/types/client/locales.d.ts +0 -44
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/locales.js +0 -44
- package/lib/types/client/locales.js.map +1 -1
- package/lib/types/client/rows/GroupBadge.d.ts +1 -2
- package/lib/types/client/rows/GroupBadge.d.ts.map +1 -1
- package/lib/types/client/rows/GroupBadge.js.map +1 -1
- package/lib/types/client/rows/Rows.d.ts +6 -6
- package/lib/types/client/rows/Rows.d.ts.map +1 -1
- package/lib/types/client/rows/WorkspaceBrowser.d.ts +1 -1
- package/lib/types/client/rows/WorkspaceBrowser.d.ts.map +1 -1
- package/lib/types/client/rows/WorkspaceBrowser.js +9 -2
- package/lib/types/client/rows/WorkspaceBrowser.js.map +1 -1
- package/lib/types/client/session-actions/ArchiveSession.d.ts +3 -3
- package/lib/types/client/session-actions/ArchiveSession.d.ts.map +1 -1
- package/lib/types/client/session-actions/ForkSession.d.ts +1 -1
- package/lib/types/client/session-actions/ForkSession.d.ts.map +1 -1
- package/lib/types/client/session-actions/PinSession.d.ts +2 -2
- package/lib/types/client/session-actions/PinSession.d.ts.map +1 -1
- package/lib/types/client/session-actions/RenameSession.d.ts +2 -2
- package/lib/types/client/session-actions/RenameSession.d.ts.map +1 -1
- package/lib/types/client/session-actions/RowActionToast.d.ts +1 -1
- package/lib/types/client/session-actions/RowActionToast.d.ts.map +1 -1
- package/lib/types/client/tree.d.ts +3 -2
- package/lib/types/client/tree.d.ts.map +1 -1
- package/lib/types/client/tree.js +3 -0
- package/lib/types/client/tree.js.map +1 -1
- package/lib/types/index.d.ts +33 -8
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +1 -13
- package/lib/types/index.js.map +1 -1
- package/package.json +1 -1
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/lib/types/client/BadgeSettingsCard.d.ts +0 -24
- package/lib/types/client/BadgeSettingsCard.d.ts.map +0 -1
- package/lib/types/client/BadgeSettingsCard.js +0 -73
- package/lib/types/client/BadgeSettingsCard.js.map +0 -1
- package/lib/types/client/badge-field.d.ts +0 -44
- package/lib/types/client/badge-field.d.ts.map +0 -1
- package/lib/types/client/badge-field.js +0 -77
- package/lib/types/client/badge-field.js.map +0 -1
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* 折叠徽标的设置卡片:插件 → dsh-group-status(bundle 详情页的配置表单)。
|
|
4
|
-
*
|
|
5
|
-
* 为什么需要这张卡片:0.2.0 起宿主把插件 `Config`(`src/index.ts`,根节点
|
|
6
|
-
* `.volatile()`)投影到客户端 `configForms` 服务上,但**不会**自动把表单画进
|
|
7
|
-
* 「插件」页——插件页只在客户端往 `plugins.bundle.config` 注册了卡片时才渲染
|
|
8
|
-
* (见 dsh-later / dsh-gitea-dispatch 的同款做法)。没有它,README「设置项」一节
|
|
9
|
-
* 描述的配置表单在 GUI 里根本不存在。
|
|
10
|
-
*
|
|
11
|
-
* 视觉与交互**不自造**,全部交给官方组件(`@deepseek-ai/dsh-client-ui-primitives`):
|
|
12
|
-
* - `SettingsForm`:表单框架——只读提示、不可用提示、保存按钮、失败行、间距;
|
|
13
|
-
* - `SettingsFormModel`:分步草稿与保存(revision 围栏、宿主拒绝时不丢草稿);
|
|
14
|
-
* - `Switch`:开关本体。
|
|
15
|
-
* 官方设置页(设置 → 内置插件 → 子智能体 / 网页搜索)用的就是这三件,本卡片的
|
|
16
|
-
* 类名与取值也逐条对齐它们的 CSS(见 `BadgeSettingsCard.module.css` 头部)。
|
|
17
|
-
*
|
|
18
|
-
* 字段定义在 `badge-field.ts`(纯逻辑,可单测);这里只管把它们接到模型与槽位上。
|
|
19
|
-
*/
|
|
20
|
-
import { useEffect, useId, useMemo, useSyncExternalStore } from 'react';
|
|
21
|
-
import { SettingsForm, SettingsFormModel, Switch, } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
22
|
-
import { ALL_BADGE_FIELDS, BADGE_FIELDS, isDraftEnabled } from "./badge-field.js";
|
|
23
|
-
import css from './BadgeSettingsCard.module.css';
|
|
24
|
-
/**
|
|
25
|
-
* 渲染折叠徽标的设置表单。
|
|
26
|
-
*
|
|
27
|
-
* 模型与投影都按 `scope` 记忆:宿主换一份表单(条目重新服务)时整体重建,旧模型
|
|
28
|
-
* 在 effect 清理里 `dispose()`,不会留下悬挂订阅。
|
|
29
|
-
* @param props - 宿主设置表单与文案取值器。
|
|
30
|
-
* @returns 官方表单框架包着本插件的开关字段。
|
|
31
|
-
*/
|
|
32
|
-
export function BadgeSettingsCard({ scope, t }) {
|
|
33
|
-
const model = useMemo(() => new SettingsFormModel(scope, ALL_BADGE_FIELDS), [scope]);
|
|
34
|
-
useEffect(() => () => { model.dispose(); }, [model]);
|
|
35
|
-
// 投影:框架状态 + 所有字段的草稿。模型的 publish 会在宿主折叠或草稿变化时重算。
|
|
36
|
-
const store = useMemo(() => model.bind(() => ({
|
|
37
|
-
...model.shell(),
|
|
38
|
-
fields: ALL_BADGE_FIELDS.map(spec => ({ field: spec.field, text: model.field(spec.field).text })),
|
|
39
|
-
})), [model]);
|
|
40
|
-
const state = useSyncExternalStore(store.subscribe, store.getSnapshot);
|
|
41
|
-
const actions = useMemo(() => model.actions(), [model]);
|
|
42
|
-
const badgeSectionId = useId();
|
|
43
|
-
const hoverSectionId = useId();
|
|
44
|
-
const countSectionId = useId();
|
|
45
|
-
const labels = {
|
|
46
|
-
unavailable: t('settings.unavailable'),
|
|
47
|
-
readOnly: t('settings.readOnly'),
|
|
48
|
-
saveFailed: t('settings.saveFailed'),
|
|
49
|
-
save: t('settings.save'),
|
|
50
|
-
saving: t('settings.saving'),
|
|
51
|
-
};
|
|
52
|
-
// 按字段名查草稿文本。
|
|
53
|
-
const fieldText = (field) => {
|
|
54
|
-
const found = state.fields.find(f => f.field === field);
|
|
55
|
-
return found?.text ?? 'true';
|
|
56
|
-
};
|
|
57
|
-
return (_jsxs(SettingsForm, { labels: labels, state: state, onSave: () => { actions.save(); }, onDiscard: () => { actions.discard(); }, children: [_jsxs("section", { className: css.section, "aria-labelledby": badgeSectionId, children: [_jsx("h3", { className: css.heading, id: badgeSectionId, children: t('settings.badge.section') }), _jsx(ToggleRow, { field: BADGE_FIELDS.showRunningInBadge, text: fieldText(BADGE_FIELDS.showRunningInBadge), label: t('settings.badge.showRunning'), hint: t('settings.badge.showRunningHint'), state: state, actions: actions }), _jsx(ToggleRow, { field: BADGE_FIELDS.showPendingInBadge, text: fieldText(BADGE_FIELDS.showPendingInBadge), label: t('settings.badge.showPending'), hint: t('settings.badge.showPendingHint'), state: state, actions: actions }), _jsx(ToggleRow, { field: BADGE_FIELDS.showCompletedInBadge, text: fieldText(BADGE_FIELDS.showCompletedInBadge), label: t('settings.badge.showCompleted'), hint: t('settings.badge.showCompletedHint'), state: state, actions: actions }), _jsx(ToggleRow, { field: BADGE_FIELDS.showScheduledInBadge, text: fieldText(BADGE_FIELDS.showScheduledInBadge), label: t('settings.badge.showScheduled'), hint: t('settings.badge.showScheduledHint'), state: state, actions: actions }), _jsx(ToggleRow, { field: BADGE_FIELDS.showWaitingReviewInBadge, text: fieldText(BADGE_FIELDS.showWaitingReviewInBadge), label: t('settings.badge.showWaitingReview'), hint: t('settings.badge.showWaitingReviewHint'), state: state, actions: actions })] }), _jsxs("section", { className: css.section, "aria-labelledby": hoverSectionId, children: [_jsx("h3", { className: css.heading, id: hoverSectionId, children: t('settings.hover.section') }), _jsx(ToggleRow, { field: BADGE_FIELDS.showHoverDetails, text: fieldText(BADGE_FIELDS.showHoverDetails), label: t('settings.hover.showDetails'), hint: t('settings.hover.showDetailsHint'), state: state, actions: actions })] }), _jsxs("section", { className: css.section, "aria-labelledby": countSectionId, children: [_jsx("h3", { className: css.heading, id: countSectionId, children: t('settings.count.section') }), _jsx(NumberRow, { field: BADGE_FIELDS.countThreshold, text: fieldText(BADGE_FIELDS.countThreshold), label: t('settings.count.threshold'), hint: t('settings.count.thresholdHint'), state: state, actions: actions })] })] }));
|
|
58
|
-
}
|
|
59
|
-
/** 单行开关:label + Switch + hint。 */
|
|
60
|
-
function ToggleRow({ field, text, label, hint, state, actions }) {
|
|
61
|
-
return (_jsxs("div", { className: css.badgeField, children: [_jsxs("div", { className: css.badgeToggleRow, children: [_jsx("span", { className: css.badgeToggleLabel, children: label }), _jsx(Switch, { checked: isDraftEnabled(text), label: label, disabled: !state.writable || state.saving, onChange: next => { actions.edit(field, next ? 'true' : 'false'); } })] }), _jsx("p", { className: css.hint, children: hint })] }));
|
|
62
|
-
}
|
|
63
|
-
/** 单行数字输入:label + 带加减按钮的数字输入 + hint。 */
|
|
64
|
-
function NumberRow({ field, text, label, hint, state, actions }) {
|
|
65
|
-
const disabled = !state.writable || state.saving;
|
|
66
|
-
const currentValue = Number(text) || 0;
|
|
67
|
-
const decrement = () => { if (!disabled && currentValue > 0)
|
|
68
|
-
actions.edit(field, String(currentValue - 1)); };
|
|
69
|
-
const increment = () => { if (!disabled)
|
|
70
|
-
actions.edit(field, String(currentValue + 1)); };
|
|
71
|
-
return (_jsxs("div", { className: css.badgeField, children: [_jsxs("div", { className: css.badgeToggleRow, children: [_jsx("span", { className: css.badgeToggleLabel, children: label }), _jsxs("div", { className: css.badgeNumberControl, children: [_jsx("button", { type: "button", className: css.badgeNumberButton, disabled: disabled || currentValue <= 0, onClick: decrement, "aria-label": "\u51CF\u5C11", children: "\u2212" }), _jsx("span", { className: css.badgeNumberValue, children: text }), _jsx("button", { type: "button", className: css.badgeNumberButton, disabled: disabled, onClick: increment, "aria-label": "\u589E\u52A0", children: "+" })] })] }), _jsx("p", { className: css.hint, children: hint })] }));
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=BadgeSettingsCard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BadgeSettingsCard.js","sourceRoot":"","sources":["../../../src/client/BadgeSettingsCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 折叠徽标设置项的字段定义(纯逻辑,不碰 React / 宿主组件)。
|
|
3
|
-
*
|
|
4
|
-
* 官方设置卡片的模型(`SettingsFormModel`)把每个字段都当**草稿文本**处理:控件读
|
|
5
|
-
* `format(存储值)` 得到文本,用户编辑后 `parse(文本)` 决定这次保存写什么。布尔字段
|
|
6
|
-
* 没有现成的官方 spec(官方只提供 `settingsTextField` / `settingsNumberField`),所以
|
|
7
|
-
* 这里按同一契约写一份:文本就是 schema 的布尔字面量。
|
|
8
|
-
*
|
|
9
|
-
* 单独成文件是为了可测:`parse` 必须对非法草稿返回 `undefined`(模型据此把该字段标为
|
|
10
|
-
* invalid 并挡住保存,而不是把畸形值写下去),`format` 必须把缺失值读成默认 `true`
|
|
11
|
-
* ——与 `Config` 各字段的 schema 默认、`badge-settings.ts` 的解析同源。
|
|
12
|
-
*
|
|
13
|
-
* 类型从 primitives **type-only** 引入:编译期接住官方契约,运行时不留依赖,
|
|
14
|
-
* 测试里也就不必把那个包(及其整棵依赖闭包)拉进来。
|
|
15
|
-
*/
|
|
16
|
-
import type { SettingsFieldSpec } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
17
|
-
/** 卡片字段名(与 `src/index.ts` 的 `Config` 同名同义)。 */
|
|
18
|
-
export declare const BADGE_FIELDS: {
|
|
19
|
-
readonly showCompletedInBadge: "showCompletedInBadge";
|
|
20
|
-
readonly showRunningInBadge: "showRunningInBadge";
|
|
21
|
-
readonly showPendingInBadge: "showPendingInBadge";
|
|
22
|
-
readonly showScheduledInBadge: "showScheduledInBadge";
|
|
23
|
-
readonly showWaitingReviewInBadge: "showWaitingReviewInBadge";
|
|
24
|
-
readonly showHoverDetails: "showHoverDetails";
|
|
25
|
-
readonly countThreshold: "countThreshold";
|
|
26
|
-
};
|
|
27
|
-
/** 存储值解析成开关状态:只有显式 false 才是「关闭」。 */
|
|
28
|
-
export declare function isFieldEnabled(value: unknown): boolean;
|
|
29
|
-
/**
|
|
30
|
-
* 草稿文本解析成开关状态:与 {@link isFieldEnabled} 不同,这里比较的是模型给的
|
|
31
|
-
* **文本**,别把字符串喂给上面那个函数(`'false' !== false` 恒真)。
|
|
32
|
-
*/
|
|
33
|
-
export declare function isDraftEnabled(text: string): boolean;
|
|
34
|
-
/** 各字段的字段转换规格。 */
|
|
35
|
-
export declare const showCompletedField: SettingsFieldSpec;
|
|
36
|
-
export declare const showRunningField: SettingsFieldSpec;
|
|
37
|
-
export declare const showPendingField: SettingsFieldSpec;
|
|
38
|
-
export declare const showScheduledField: SettingsFieldSpec;
|
|
39
|
-
export declare const showWaitingReviewField: SettingsFieldSpec;
|
|
40
|
-
export declare const showHoverDetailsField: SettingsFieldSpec;
|
|
41
|
-
export declare const countThresholdField: SettingsFieldSpec;
|
|
42
|
-
/** 所有字段规格(按卡片渲染顺序)。 */
|
|
43
|
-
export declare const ALL_BADGE_FIELDS: SettingsFieldSpec[];
|
|
44
|
-
//# sourceMappingURL=badge-field.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge-field.d.ts","sourceRoot":"","sources":["../../../src/client/badge-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAE9E,+CAA+C;AAC/C,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAA;AAEV,oCAAoC;AACpC,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AA2BD,kBAAkB;AAClB,eAAO,MAAM,kBAAkB,EAAE,iBAA6E,CAAA;AAC9G,eAAO,MAAM,gBAAgB,EAAE,iBAA2E,CAAA;AAC1G,eAAO,MAAM,gBAAgB,EAAE,iBAA2E,CAAA;AAC1G,eAAO,MAAM,kBAAkB,EAAE,iBAA6E,CAAA;AAC9G,eAAO,MAAM,sBAAsB,EAAE,iBAAiF,CAAA;AACtH,eAAO,MAAM,qBAAqB,EAAE,iBAAyE,CAAA;AAC7G,eAAO,MAAM,mBAAmB,EAAE,iBAajC,CAAA;AAED,uBAAuB;AACvB,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAQ/C,CAAA"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/** 卡片字段名(与 `src/index.ts` 的 `Config` 同名同义)。 */
|
|
2
|
-
export const BADGE_FIELDS = {
|
|
3
|
-
showCompletedInBadge: 'showCompletedInBadge',
|
|
4
|
-
showRunningInBadge: 'showRunningInBadge',
|
|
5
|
-
showPendingInBadge: 'showPendingInBadge',
|
|
6
|
-
showScheduledInBadge: 'showScheduledInBadge',
|
|
7
|
-
showWaitingReviewInBadge: 'showWaitingReviewInBadge',
|
|
8
|
-
showHoverDetails: 'showHoverDetails',
|
|
9
|
-
countThreshold: 'countThreshold',
|
|
10
|
-
};
|
|
11
|
-
/** 存储值解析成开关状态:只有显式 false 才是「关闭」。 */
|
|
12
|
-
export function isFieldEnabled(value) {
|
|
13
|
-
return value !== false;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* 草稿文本解析成开关状态:与 {@link isFieldEnabled} 不同,这里比较的是模型给的
|
|
17
|
-
* **文本**,别把字符串喂给上面那个函数(`'false' !== false` 恒真)。
|
|
18
|
-
*/
|
|
19
|
-
export function isDraftEnabled(text) {
|
|
20
|
-
return text !== 'false';
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* 构造一个布尔字段的字段转换规格。
|
|
24
|
-
*
|
|
25
|
-
* `parse` 只接受 `'true'` / `'false'`:空串、任意其它文本都返回 `undefined`,
|
|
26
|
-
* 让模型把字段判为 invalid 并拒绝保存(官方模型的既定行为)。
|
|
27
|
-
*
|
|
28
|
-
* @param field - 字段名(与 Config 同名)。
|
|
29
|
-
* @param defaultValue - 缺失值时的默认(true = 默认显示,false = 默认隐藏)。
|
|
30
|
-
*/
|
|
31
|
-
function makeBooleanField(field, defaultValue) {
|
|
32
|
-
return {
|
|
33
|
-
field,
|
|
34
|
-
format: value => {
|
|
35
|
-
const enabled = value === undefined || value === null || typeof value !== 'boolean'
|
|
36
|
-
? defaultValue
|
|
37
|
-
: value;
|
|
38
|
-
return enabled ? 'true' : 'false';
|
|
39
|
-
},
|
|
40
|
-
parse: text => text === 'true' ? { kind: 'set', value: true }
|
|
41
|
-
: text === 'false' ? { kind: 'set', value: false }
|
|
42
|
-
: undefined,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/** 各字段的字段转换规格。 */
|
|
46
|
-
export const showCompletedField = makeBooleanField(BADGE_FIELDS.showCompletedInBadge, true);
|
|
47
|
-
export const showRunningField = makeBooleanField(BADGE_FIELDS.showRunningInBadge, true);
|
|
48
|
-
export const showPendingField = makeBooleanField(BADGE_FIELDS.showPendingInBadge, true);
|
|
49
|
-
export const showScheduledField = makeBooleanField(BADGE_FIELDS.showScheduledInBadge, true);
|
|
50
|
-
export const showWaitingReviewField = makeBooleanField(BADGE_FIELDS.showWaitingReviewInBadge, true);
|
|
51
|
-
export const showHoverDetailsField = makeBooleanField(BADGE_FIELDS.showHoverDetails, true);
|
|
52
|
-
export const countThresholdField = {
|
|
53
|
-
field: BADGE_FIELDS.countThreshold,
|
|
54
|
-
format: value => {
|
|
55
|
-
const n = value === undefined || value === null || typeof value !== 'number' || !Number.isFinite(value)
|
|
56
|
-
? 2
|
|
57
|
-
: Math.floor(value);
|
|
58
|
-
return String(n < 0 ? 0 : n);
|
|
59
|
-
},
|
|
60
|
-
parse: text => {
|
|
61
|
-
const n = Number(text);
|
|
62
|
-
if (!Number.isFinite(n) || n < 0 || n !== Math.floor(n))
|
|
63
|
-
return undefined;
|
|
64
|
-
return { kind: 'set', value: n };
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
/** 所有字段规格(按卡片渲染顺序)。 */
|
|
68
|
-
export const ALL_BADGE_FIELDS = [
|
|
69
|
-
showCompletedField,
|
|
70
|
-
showRunningField,
|
|
71
|
-
showPendingField,
|
|
72
|
-
showScheduledField,
|
|
73
|
-
showWaitingReviewField,
|
|
74
|
-
showHoverDetailsField,
|
|
75
|
-
countThresholdField,
|
|
76
|
-
];
|
|
77
|
-
//# sourceMappingURL=badge-field.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge-field.js","sourceRoot":"","sources":["../../../src/client/badge-field.ts"],"names":[],"mappings":"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"}
|