zink-ning/dsh-ui-state

zink-ning★ 1JavaScript最后同步: 2026-08-16

在 GitHub 打开

DSH Web GUI 界面状态持久化插件:侧边栏开合/宽度/详情面板/对话滚动位置恢复

README 摘要

dsh-ui-state 界面状态持久化插件(DSH Web GUI)——官方侧边栏与详情面板跨重启恢复。 功能 - 侧边栏开合 :展开/收起状态自动持久化,重启 DSH 后自动恢复。 - 侧边栏宽度 :拖拽后的宽度自动持久化,重启后模拟拖拽恢复到上次宽度(264–420px 官方契约范围)。 - 详情面板(details 列)开合 :右侧详情面板的打开/关闭自动持久化并恢复(仅在会话打开时记录,避免把"无会话"误判为用户关闭)。 - 对话滚动位置 :切走/隐藏页面时保存当前对话的非底部阅读位置;视图因重连/重建回到顶部后自动恢复到切走前的位置(按消息 anchor 对齐,新消息追加也不会偏)。 - 无需配置 :全自动,无设置界面。 原理 官方 layout store 是瞬态设计(宽度/开合不持久化)。插件: 1. 检测 :轮询 AppFrame( [data-shell-overlay] 锚点)的 data-sidebar-collapsed 属性与 grid-template-columns 第一列,变化防抖 600ms 写入 settings.yaml。 2. 恢复 :启动后从 /.dsh/settings.yaml 读 ui-state 段: - 侧边栏开合:调用官方 ctx.layout.toggleSidebar() (等 layout 服务挂载,自动重试) - 侧边栏宽度:找到 [data-side="sidebar"] 拖拽手柄,派发合成 pointer 序列(pointerdown/move/up, 与官方 DragHandle 的监听协议一致;同步窗口内 stub pointer capture) - 详情面板: ctx.layout.openDetails() / closeDetails() (仅在会话打开时恢复) 3. 窄屏保护 :视口 < 1024px 时官方自动折叠侧边栏,此时不持久化、不恢复,避免与自动行为打架。 配置存储 安装 / 下载 从 npm 安装(推荐) 也可以手动安装依赖并装配: 然后在 profile 的 package.json 中把 @zink ning/dsh-ui-state 加入 dsh.profile.bundles 。 从 GitHub Release 下载 到 Releases 下载 dsh-ui-state-0.1.1.tgz ,然后安装: 本地开发 / 热装 profile package.json 的 dsh.profile.bundles 加入 @zink ning/dsh-ui-state ,依赖用 link: 指向本目录; 或使用 dev install package 热装(junction + loader.create,免重启)。 License MIT © zink-ning…

在 GitHub 查看完整 README →
皮肤/UIdshdsh-plugindsh-pluginssidebar

分类