Skip to content

Releases: wjingshan/dsh-sidebar-focus

v0.1.0 — 首个公开版本

Choose a tag to compare

@wjingshan wjingshan released this 11 Oct 01:53

首个公开版本:左侧栏「工作区 / 会话」的排序与展开,按实际有没有在跑决定 —— 有会话在跑的工作区浮到最前并自动展开,空闲的保持折叠。五条规则各带一个开关,位置在插件页 → 点开 dsh-sidebar-focus 后的详情页。

安装

dsh plugin --profile web add github:wjingshan/dsh-sidebar-focus

装完刷新页面即可(纯客户端插件,宿主半身是空的,不需要重启 dsh web)。

五条规则

开关 默认 作用
置顶正在运行的工作区 开 有会话在跑、或正在等你的工作区排到列表最前(纯展示,不改写你手动拖出来的顺序)
自动展开正在运行的工作区 开 宿主本身只在「当前会话所在的工作区」上自动展开,这条把它扩展到所有在跑的工作区
置顶正在进行的会话 开 运行中与等待你处理的会话排到所属工作区最前
收起没有运行的工作区 开 没有会话在跑的工作区保持折叠
保留未读完成提醒 开 含「已完成未查看」的工作区不自动折叠

另外:你亲手展开的空闲工作区不会被折回去,你亲手折叠的忙碌工作区不会被撑开 —— 直到那个工作区的忙碌状态再次变化。

这一版修掉的两个真问题

  1. 折叠的组不渲染会话行 →「忙碌判定」曾是个死锁。第一版从会话行的状态点(data-state="ongoing")判断"这里有没有在跑",而宿主的 deriveGroups 对折叠的组返回空 sessions:组一折起来就没有行可读 → 里面开工也看不见 → 永远不展开。判据已换成与渲染无关的两个事实(Session 状态快照 + Workspace 成员表),由一个挂在 shell.overlay 上的零渲染桥接组件发布给 watcher;两个来源与 DOM 取并集。
  2. 排序不能靠移动 DOM。列表列原本是 overflow-y:auto 的块容器,order 对它无效;插件先把列变成 flex 列再排名,DOM 节点从不移动,所以 React 的 reconciliation 与内置的 FLIP 行动画都不受影响。折叠必须写展开状态本身(折叠的组没有行可操作),走 uiWorkspace.view。

回退

git checkout v0.1.0        # 回到这一版
git diff v0.1.0..v0.1.1    # 看两版之间改了什么

版本流程与「未验证」清单见仓库里的 CHANGELOG.md 与 README.md。