dsh-sessions-manager 3.7.0 → 3.7.1
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 +1 -1
- package/README.md +1 -1
- package/lib/client.js +24 -24
- package/lib/client.js.map +2 -2
- package/lib/index.js +1 -1
- package/package.json +1 -1
- package/src/client/index.jsx +14 -14
package/README.en.md
CHANGED
|
@@ -18,7 +18,7 @@ A persistent DSH plugin (host + browser halves) covering both the **settings pan
|
|
|
18
18
|
|
|
19
19
|
### Settings panel: Session Manager
|
|
20
20
|
|
|
21
|
-
- **Unified panel**: three always-visible top-level views — **All / Active / Archived** — while the low-frequency ones (**Starred / Empty / Recycle bin**) are tucked behind an arrow button at the end of the filter row and slide out horizontally on click (they stay expanded automatically while a low-frequency view is selected). Search across title, session ID, and workspace, plus workspace filters and creation-time/title sorting. The result line is a single sentence such as "Showing 5 sessions, 4 more subagents folded under their parents". A maintenance row below the filters holds the **Storage usage** and **Auto-archive** tools, which expand on demand instead of taking up a view.
|
|
21
|
+
- **Unified panel**: three always-visible top-level views — **All / Active / Archived** — while the low-frequency ones (**Starred / Empty / Recycle bin**) are tucked behind an arrow button at the end of the filter row and slide out horizontally on click (they stay expanded automatically while a low-frequency view is selected). Search across title, session ID, and workspace, plus workspace filters and creation-time/title sorting. The result line is a single sentence such as "Showing 5 sessions, 4 more subagents folded under their parents". A maintenance row below the filters holds the **Storage usage**, **Manage tags** and **Auto-archive** tools, which expand on demand instead of taking up a view.
|
|
22
22
|
- **Starred sessions**: an always-visible star button on each session row toggles starring optimistically with rollback on failure; the Starred view is orthogonal to DSH's active/archived states and they stack. The star index is plugin-owned (schema v3) and never touches DSH logs; stars are cleaned up automatically when a session is permanently purged.
|
|
23
23
|
- **Tags & saved filters**: label sessions with custom tags (up to 200 global, 10 per session; rename, merge, delete — **deleting a tag never touches the sessions**), filter the list by tag, and save the current "view + workspace + sort + tag" combination as a preset (up to 20) for one-click reuse. Tags and presets live in plugin-owned indexes (same discipline as the star index) inside this machine's DSH data directory — they do not follow your account; cross-machine migration belongs to the 3.10.0 backup scope.
|
|
24
24
|
- **Cold-title synchronization**: the sidebar is corrected from the latest log-backed `session/title`, so renamed cold sessions no longer need to be opened before showing their current name. On cold starts of large stores a title that is not ready yet simply renders blank while it fills in the background — and once it arrives, **rows already on screen and the “⑂ branch” chip's tooltip update automatically**, no page rebuild needed.
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
### 设置面板:会话管理
|
|
20
20
|
|
|
21
|
-
- **统一面板**:顶部提供「全部 / 活动 / 已归档」三个常驻视图,低频的「已收藏 / 空白 / 回收站」收进行尾的箭头按钮,点按横向滑出展开(低频视图处于选中态时自动保持展开);支持按标题、会话 ID、工作区搜索,按工作区筛选,并按创建时间或标题排序。结果行合并为一句说明,如「显示 5 个会话,另有 4
|
|
21
|
+
- **统一面板**:顶部提供「全部 / 活动 / 已归档」三个常驻视图,低频的「已收藏 / 空白 / 回收站」收进行尾的箭头按钮,点按横向滑出展开(低频视图处于选中态时自动保持展开);支持按标题、会话 ID、工作区搜索,按工作区筛选,并按创建时间或标题排序。结果行合并为一句说明,如「显示 5 个会话,另有 4 个子代理折叠在父会话下」。筛选栏下方的维护栏收纳「存储占用」「标签管理」「自动归档」等按需展开的面板级工具,不占用视图位置。
|
|
22
22
|
- **收藏(星标)**:会话行左侧常驻星标按钮,单击即收藏 / 取消(乐观更新、失败回滚);「已收藏」视图与 DSH 的活动 / 归档状态正交、可叠加;收藏索引为插件自有 schema v3,不触碰 DSH 日志,会话被彻底删除时自动清理。
|
|
23
23
|
- **标签与保存筛选**:给会话贴自定义标签(全局 ≤200、单会话 ≤10;支持重命名、合并、删除——**删除标签只删标签,绝不触碰会话**),并按标签筛选列表;「视图 + 工作区 + 排序 + 标签」的组合可保存为筛选预设(≤20 条)一键应用。标签与预设存在插件自有索引里(同星标索引纪律),跟随这台机器的 DSH 数据目录、不跟账号走——换机迁移属 3.10.0 备份范围。
|
|
24
24
|
- **冷态标题同步**:侧栏使用日志中最新的 `session/title` 修正冷启动缓存,改名后的会话无需先打开即可显示新名称;冷启动大库里标题先留空、后台分批补齐,补齐后**已经在屏幕上的侧栏行和「⑂ 分支」标记的悬停说明会跟着自动更新**,不必等页面重建。
|
package/lib/client.js
CHANGED
|
@@ -1766,7 +1766,17 @@ function SessionPanel({ workspacesSvc }) {
|
|
|
1766
1766
|
")"
|
|
1767
1767
|
] })
|
|
1768
1768
|
] }),
|
|
1769
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", className: "sess-farrow", "aria-expanded": moreOpen, "aria-label": moreOpen ? "\u6536\u8D77\u66F4\u591A\u7B5B\u9009" : "\u5C55\u5F00\u66F4\u591A\u7B5B\u9009", title: moreOpen ? "\u6536\u8D77\u66F4\u591A\u7B5B\u9009" : "\u5C55\u5F00\u66F4\u591A\u7B5B\u9009\uFF08\u5DF2\u6536\u85CF / \u7A7A\u767D / \u56DE\u6536\u7AD9\uFF09", onClick: () => setMoreOpen(!moreOpen), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { width: "12", height: "12", viewBox: "0 0 12 12", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M4 2l4 4-4 4", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round" }) }) })
|
|
1769
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", className: "sess-farrow", "aria-expanded": moreOpen, "aria-label": moreOpen ? "\u6536\u8D77\u66F4\u591A\u7B5B\u9009" : "\u5C55\u5F00\u66F4\u591A\u7B5B\u9009", title: moreOpen ? "\u6536\u8D77\u66F4\u591A\u7B5B\u9009" : "\u5C55\u5F00\u66F4\u591A\u7B5B\u9009\uFF08\u5DF2\u6536\u85CF / \u7A7A\u767D / \u56DE\u6536\u7AD9\uFF09", onClick: () => setMoreOpen(!moreOpen), children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { width: "12", height: "12", viewBox: "0 0 12 12", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M4 2l4 4-4 4", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round" }) }) })
|
|
1770
|
+
] }) }),
|
|
1771
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "maint-bar", children: [
|
|
1772
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", { type: "button", className: "archv-btn", "aria-expanded": storageOpen, onClick: () => {
|
|
1773
|
+
const next = !storageOpen;
|
|
1774
|
+
setStorageOpen(next);
|
|
1775
|
+
if (next && (!storage || storageDirty.current) && !storageBusy) loadStorage();
|
|
1776
|
+
}, children: [
|
|
1777
|
+
"\u5B58\u50A8\u5360\u7528",
|
|
1778
|
+
storage ? ` \xB7 ${fmtBytes(storage.totalBytes) || "0 B"}` : ""
|
|
1779
|
+
] }),
|
|
1770
1780
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
1771
1781
|
"button",
|
|
1772
1782
|
{
|
|
@@ -1784,8 +1794,19 @@ function SessionPanel({ workspacesSvc }) {
|
|
|
1784
1794
|
tagsReady && tagDefs.length ? ` (${tagDefs.length})` : ""
|
|
1785
1795
|
]
|
|
1786
1796
|
}
|
|
1787
|
-
)
|
|
1788
|
-
|
|
1797
|
+
),
|
|
1798
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", { type: "button", className: "archv-btn" + (aa.settings.inactiveDays ? " archv-go" : ""), "aria-expanded": aaOpen, onClick: () => setAaOpen(!aaOpen), children: [
|
|
1799
|
+
"\u81EA\u52A8\u5F52\u6863",
|
|
1800
|
+
aa.settings.inactiveDays ? `\uFF1A${aa.settings.inactiveDays} \u5929\u672A\u6D3B\u8DC3` : "\uFF1A\u672A\u542F\u7528"
|
|
1801
|
+
] }),
|
|
1802
|
+
aa.lastRunAt ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "maint-note", children: [
|
|
1803
|
+
"\u4E0A\u6B21\u68C0\u67E5 ",
|
|
1804
|
+
fmtDate(aa.lastRunAt),
|
|
1805
|
+
"\uFF0C\u5F52\u6863 ",
|
|
1806
|
+
aa.lastArchivedCount,
|
|
1807
|
+
" \u4E2A"
|
|
1808
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "maint-note", children: "\u5C1A\u672A\u68C0\u67E5" })
|
|
1809
|
+
] }),
|
|
1789
1810
|
openTagMgr && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mv-sheet", "aria-label": "\u6807\u7B7E\u7BA1\u7406", children: [
|
|
1790
1811
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mv-sheet-head", children: [
|
|
1791
1812
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h3", { className: "mv-sheet-title", children: [
|
|
@@ -1882,27 +1903,6 @@ function SessionPanel({ workspacesSvc }) {
|
|
|
1882
1903
|
}) }),
|
|
1883
1904
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "dtl-note", children: "\u6807\u7B7E\u662F\u4F1A\u8BDD\u7684\u81EA\u5B9A\u4E49\u6807\u8BB0\uFF1A\u65B0\u5EFA\u3001\u91CD\u547D\u540D\u3001\u5408\u5E76\u3001\u5220\u9664\u90FD\u53EA\u6539\u6807\u8BB0\u672C\u8EAB\uFF0C\u4E0D\u4F1A\u5220\u9664\u6216\u79FB\u52A8\u4EFB\u4F55\u4F1A\u8BDD\u3002\u5355\u4E2A\u4F1A\u8BDD\u7684\u6807\u7B7E\u6570\u91CF\u4E0E\u6807\u7B7E\u603B\u6570\u90FD\u6709\u670D\u52A1\u7AEF\u4E0A\u9650\uFF0C\u8D85\u9650\u65F6\u4F1A\u63D0\u793A\u5E76\u81EA\u52A8\u56DE\u9000\u672C\u5730\u6539\u52A8\u3002" })
|
|
1884
1905
|
] }),
|
|
1885
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "maint-bar", children: [
|
|
1886
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", { type: "button", className: "archv-btn", "aria-expanded": storageOpen, onClick: () => {
|
|
1887
|
-
const next = !storageOpen;
|
|
1888
|
-
setStorageOpen(next);
|
|
1889
|
-
if (next && (!storage || storageDirty.current) && !storageBusy) loadStorage();
|
|
1890
|
-
}, children: [
|
|
1891
|
-
"\u5B58\u50A8\u5360\u7528",
|
|
1892
|
-
storage ? ` \xB7 ${fmtBytes(storage.totalBytes) || "0 B"}` : ""
|
|
1893
|
-
] }),
|
|
1894
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", { type: "button", className: "archv-btn" + (aa.settings.inactiveDays ? " archv-go" : ""), "aria-expanded": aaOpen, onClick: () => setAaOpen(!aaOpen), children: [
|
|
1895
|
-
"\u81EA\u52A8\u5F52\u6863",
|
|
1896
|
-
aa.settings.inactiveDays ? `\uFF1A${aa.settings.inactiveDays} \u5929\u672A\u6D3B\u8DC3` : "\uFF1A\u672A\u542F\u7528"
|
|
1897
|
-
] }),
|
|
1898
|
-
aa.lastRunAt ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "maint-note", children: [
|
|
1899
|
-
"\u4E0A\u6B21\u68C0\u67E5 ",
|
|
1900
|
-
fmtDate(aa.lastRunAt),
|
|
1901
|
-
"\uFF0C\u5F52\u6863 ",
|
|
1902
|
-
aa.lastArchivedCount,
|
|
1903
|
-
" \u4E2A"
|
|
1904
|
-
] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "maint-note", children: "\u5C1A\u672A\u68C0\u67E5" })
|
|
1905
|
-
] }),
|
|
1906
1906
|
pendingQueue.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mv-sheet", "aria-label": "\u5F85\u79FB\u52A8\u961F\u5217", children: [
|
|
1907
1907
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mv-sheet-head", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h3", { className: "mv-sheet-title", children: [
|
|
1908
1908
|
"\u5F85\u79FB\u52A8\u961F\u5217 \xB7 ",
|