Passer au contenu principal
S

dsh-workspace-hide

suzunami/dsh-workspace-hide

Masque les espaces de travail choisis dans la barre latérale DSH et archive aussi leurs sessions afin qu’elles n’apparaissent pas dans la liste non groupée. Fonctionnement local et réversible. Avec `dsh-archive-manager`, l’archivage est réel et annulable ; sinon, il s’agit d’un masquage visuel. Restauration depuis les paramètres.

Installer

dsh plugin --profile web add github:suzunami/dsh-workspace-hide

README

dsh-workspace-hide

English: README.en.md

在 DSH 侧边栏隐藏指定工作区,连同它名下的会话一起收进「归档」,并在 「设置 → 工作区显示」里随时恢复。

纯本地、可逆、不删数据:工作区文件夹和会话记录始终留在磁盘上。


介绍

它解决什么

DSH 内置的「删除工作区」其实也不删数据,但它的心智负担是"移出列表",恢复要重新添加文件夹。 更麻烦的是:任何只把工作区从列表里摘掉的做法,都会让它的会话掉进侧边栏的「未分组」, 变成一堆无主的条目(根因见 DESIGN.md §1.1)。

本插件同时处理这两件事:

  • 侧边栏不再出现该工作区;
  • 它名下的会话不会变成一堆无主的「未分组」条目,而是被归档收起来;
  • 撤销隐藏时,只有"因为这次隐藏才被归档"的会话会回来。

隐藏之前就已经归档的会话,永远不会被这次隐藏/恢复碰到。

使用

  1. 安装后重启 DSH Desktop;
  2. 打开 设置,左侧栏出现「工作区显示」(排在「归档会话」之后); 导航栏容不下长标签,所以那里的名字是短的,面板内标题仍写全:「侧边栏显示的工作区」;
  3. 每行右侧一个开关,打开 = 在侧边栏显示,关掉 = 隐藏并归档其会话; 关掉后该行自动沉到列表底部,并显示「已归档 N 个会话」;
  4. 顶部显示「共 N 个 · 显示 N 个 · 隐藏 N 个」,点「全部显示」一键清空清单并批量恢复。

被隐藏的工作区不会从设置页消失——设置页读的是未过滤列表,否则就没法撤销了。 隐藏行上会显示「已归档 N 个会话」,让你知道恢复时会回来多少。

开关的默认状态是「打开」:新装插件时什么都没被隐藏,因此每一行都是显示的。 这套语义下不存在「新工作区默认消失」的坑——所有工作区默认都在侧边栏,只有你手动关掉的行才会藏起来。

卸载或清空清单之前,请先点一次「全部显示」,否则被归档的会话会留在「归档」页里。


安装

从 npm 安装(推荐)

dsh plugin add dsh-workspace-hide@0.2.1

从 GitHub 安装

dsh plugin add https://codeload.github.com/SUZUNAMI/dsh-workspace-hide/tar.gz/refs/tags/v0.2.1

dsh plugin add 本质就是在 profile 目录(~/.dsh/profiles/web)里跑一次 pnpm add, 并同时把包名写进 dependencies 与 dsh.profile.bundles 两处;dsh plugin remove 会把两处一起清掉。

各种目标形式的实测结果:

形式命令说明
npm(推荐)dsh plugin add dsh-workspace-hide@0.2.1最短;只依赖 registry.npmjs.org,不碰 github.com
tarballdsh plugin add https://codeload.github.com/SUZUNAMI/dsh-workspace-hide/tar.gz/refs/tags/v0.2.1不经过 git,不需要 SSH 密钥,走 codeload.github.com;实测 1.6s
git+httpsdsh plugin add git+https://github.com/SUZUNAMI/dsh-workspace-hide.git#v0.2.1走 https git;需要能连上 github.com:443
github:dsh plugin add github:SUZUNAMI/dsh-workspace-hide#v0.2.1⚠️ pnpm 会把它解析成 git+ssh://(见下),需要本机已配好 GitHub SSH 密钥与 known_hosts
跟随 maindsh plugin add https://codeload.github.com/SUZUNAMI/dsh-workspace-hide/tar.gz/refs/heads/main上游随时会变,不建议
本地目录(改代码时)dsh plugin add file:C:/path/to/dsh-workspace-hide⚠️ 只在安装那一刻物化一份,之后改源码不会同步(见下)

关于 github: 形式:pnpm 对它的解析目标是 git+ssh://git@github.com/<owner>/<repo>.git,所以一台没配过 GitHub SSH 的机器 会直接 Host key verification failed。tarball 形式没有这个问题。

关于 file: 本地目录形式(改代码必读):pnpm 对 file: 目录依赖只在安装那一刻 把文件拷/硬链进 node_modules,之后你改源码它一无所知——node_modules/dsh-workspace-hide 里躺着的仍是安装时的旧快照。实测踩过一次:源码已经改到 43365 B,profile 里那份还是 42010 B 的旧文件,重启多少次界面都不变。

想边改边用,就在装完之后把那份副本换成指向工作副本的目录联接(junction,不需要管理员权限):

$dst = "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-workspace-hide"
Move-Item $dst "$dst.bak"                                    # 先备份旧副本
New-Item -ItemType Junction -Path $dst -Target "C:/path/to/dsh-workspace-hide"

这样改源码后重启 DSH Desktop 即生效。注意以后跑 pnpm install 或 dsh plugin add/remove 可能把它换回实体拷贝,那时重建一次即可。

装完重启 DSH Desktop,再打开「设置」,左侧应出现「工作区显示」。

第三方插件建议钉 tag 或 commit,不要跟随 main。

手动安装

在 ~/.dsh/profiles/web/package.json 里加两处,然后在该目录执行 pnpm install:

{
  "dependencies": {
    "dsh-workspace-hide": "0.2.1"
  },
  "dsh": {
    "profile": {
      "bundles": ["...", "dsh-workspace-hide"]
    }
  }
}

关于依赖:本插件是零依赖的

没有 npm 依赖,也没有构建步骤。 lib/client.js 是手写的 window.__ModuleLoader__ 工厂,它 require 的 react 与 @deepseek-ai/dsh-client-ui-primitives 都由 DSH 运行时注入(后者还有 try/catch 兜底,取不到就退化成内置控件)。所以这两个包不是 dependencies,也不该被写进 dependencies —— 那反而可能装进第二份 react 实例。


版本更新

0.2.1 — 只有文档

插件行为无变化。这一版是纯文档:

  • 新增英文版 README.en.md,并打进 npm 包 —— npm 官网与目录站点 因此都能提供双语阅读(此前只有中文,目录站点会标注一行 "This plugin publishes its README in Chinese only.")。
  • 仓库与 npm 的 description 改为「显示/隐藏」语义(此前仍是 0.2.0 之前的旧说法)。
  • 文中安装命令的版本钉子升到 0.2.1。

0.2.0 — 设置页开关反转为「显示」语义

  • 设置项改名:「隐藏的工作区」→ 面板标题「侧边栏显示的工作区」,导航栏短标签 「工作区显示」(导航栏放不下全称,会被截成「侧边栏显示的工…」);并加了一行说明。
  • 开关方向反转:打开 = 显示,关掉 = 隐藏。此前是「选上 = 隐藏」,与直觉相反。
  • 隐藏中的行自动沉到列表底部(稳定排序,显示中的行保持原来的相对顺序)。
  • 计数下沉到计数文案里:「共 N 个 · 显示 N 个 · 隐藏 N 个」,全显示时显示 「共 N 个工作区,全部在显示中」。
  • 按钮改名:「全部恢复」→「全部显示」(只在有行被隐藏时才可用)。
  • 底层完全没动:存储格式仍是 dsh-workspace-hide.hidden.v2(同一份 hidden 清单)、归档/撤销归档范围、canRestore 提示、失效项处理、跨版本迁移都不变。 反转只发生在 WorkspaceRow 一处(checked: hidden !== true,onChange 再取反)。

0.1.3 — 发布流程与文档

插件行为无变化。这一版把发布方式换成 GitHub Actions 的 OIDC 可信发布 (.github/workflows/release.yml,仓库里不再需要任何长期 npm token), 并把 npm 安装提升为推荐方式 —— npm 只依赖 registry.npmjs.org, 不像 tarball / git 形式那样要求 github.com 可达。

0.1.2 — 首个公开发布版本

  • 侧边栏隐藏工作区,其会话并入 archivedSessionIds,不再溢出到「未分组」。
  • 检测到 @michengai/dsh-archive-manager 时启用宿主层:真归档、可撤销; 未安装时退化为纯显示层,绝不真归档(内核没有反向操作,见 DESIGN.md)。
  • 设置页「隐藏的工作区」:逐项开关、canRestore 提示、失效项「移除记录」、 取消归档失败后的「重试恢复」、「全部恢复」。
  • 清单持久化到 localStorage 的 dsh-workspace-hide.hidden.v2(含 v1 自动迁移)。
  • 安装说明修正:github: 会被 pnpm 解析成 git+ssh://,改用 codeload tarball。

更多文档

原理、接缝、已知边界、离线验证方法与真机源码证据:DESIGN.md。

许可

MIT

Plugins associés