Repository navigation
Releases: DDDMUC/dsh-session-relocate
Releases · DDDMUC/dsh-session-relocate
Release list
v0.2.4
v0.2.4
新增
- 会话页常驻的工作区 chip:注册进官方槽
conversation.input.dock(React 渲染,不再是 DOM 注入),外观逐项对齐官方 hero 那条 —— 同一个文件夹图标 / 箭头、同样的圆角 / 高度 / 字号 / hover。- 新会话(hero)页不渲染(官方那条还在),只有已开聊的会话才出现;
- 插件设置页里可选 一直出现 / 悬浮才出现 / 不出现(改完立即生效,不用刷新)。
- 开了一个子槽
session-relocate.dock:dsh-preset-workbench的预设胶囊注册进来后,落在工作区 chip 右边,和官方 hero 那排[工作区] [预设]一致。 - 「移动到」菜单行补上图标,并在打开菜单时量官方菜单项自动对齐图标列与文字列。
修复
- 皮肤插件
@linxin666/dsh-client-ui-skin-center会把conversation.input.dock的每个直接子元素当「小配件」刷底板,本插件的全宽容器因此被刷成一条横贯的玻璃条 —— 现在用更高特异性的复位清掉(没装皮肤时是空操作)。
变更
- 多选底栏改注册进宿主槽
sidebar.footer.action(见docs/shared-footer-bar.md):位置/宽度/与页脚其它按钮的关系交给宿主排版,选择期间用量胶囊、账户行、别家插件按钮自动让位;老宿主没有这个槽时回退自绘浮动卡片。
测试:node --test 89/89。
v0.2.3
0.2.3
- 修复:
already-there只比 cwd、不看注册表归属 —— 目录已经在目标工作区下、但workspace.json里没登记的会话(侧栏「未分组」/孤儿),现在会补写归属(回执applied: "attached",文件不动、不写迁移日志),不再被永久判成「已经在里面」。 /describe的「当前工作区」改为只认注册表归属,另返回memberOfWorkspaceId/cwdMatchesWorkspaceId;孤儿会话的目标列表会正常给出该工作区,菜单里不再被标成「当前工作区」。- 批量移动里
attached计成功、不进/move-commit。 - 测试 83 → 86(孤儿补归属、describe 归属判定、批量 attached 计数)。
v0.2.2
0.2.2
- 连同子对话一起移动(默认开):搬父对话时,自动把它的子代理会话(
parentSession+origin: subagent,递归到孙)一起搬走 —— 文件、header 的 cwd、工作区归属全部跟上;每条子会话独立事务,失败按条隔离。- 插件配置页(Plugins → dsh-session-relocate → 配置)里可以关掉,只搬父对话。
- 不搬子对话时父对话本身不受影响;关掉后旧工作区先别删,子会话日志还在里面。
- 配置页加「顺手留颗 Star」:和
dsh-free-search同款的 ⭐ 链接条,指向本仓库。 - 目标面板「将移动 M / 跳过 K」与浅/深配色修复延续 0.2.1。
- 测试 83/83。
- Move together with sub-conversations (enabled by default): When moving a parent conversation, automatically move its sub-agent sessions (
parentSession+origin: subagent, recursively down to grandchildren) as well — files, the header's cwd, and workspace ownership all follow along; each sub-session gets its own independent transaction, with failures isolated per item.- You can turn this off on the plugin configuration page (Plugins → dsh-session-relocate → Config) to move only the parent conversation.
- When sub-conversations are not moved, the parent conversation itself is unaffected; after turning it off, don't delete the old workspace right away — the sub-session logs are still inside it.
- Added a "Leave a Star while you're at it" item to the config page: The same ⭐ link bar as
dsh-free-search, pointing to this repository. - The target panel's "Will move M / Skip K" and the light/dark color fixes continue from 0.2.1.
- Tests 83/83.
v0.2.1
0.2.1
- 多选目标面板预分类:每项标出「将移动 M 个 / 跳过 K 个」;如果全部待移动的对话都已在目标文件夹里,则该选项置灰、点了不发请求。
- 配色修复:选择面板与多选底栏不再依赖
--dsw-*主题 token(某些主题下 token 缺失会变成深底深字),改为按页面亮度切浅/深两套显式配色。- 浅色:正文 18.29:1、路径 4.97:1
- 深色:正文 14.18:1、路径 7.2:1
- 菜单项与副标题改为继承 DSH 菜单配色(同类问题一并修掉)。
- 测试 80/80。
0.2.0已在 npm 标记为 deprecated,请升级到0.2.1。
- Multi-select target panel pre-classification: Each item is labeled "M to move / K to skip"; if all conversations to be moved are already in the target folder, the option is greyed out and clicking it sends no request.
- Color scheme fix: The selection panel and multi-select bottom bar no longer rely on
--dsw-*theme tokens (missing tokens under some themes caused dark backgrounds with dark text); they now use two explicit color schemes, light and dark, selected based on page brightness.- Light: body text 18.29:1, path 4.97:1
- Dark: body text 14.18:1, path 7.2:1
- Menu items and subtitles now inherit DSH menu colors (the same class of issue has been fixed as well).
- Tests 80/80.
0.2.0has been marked as deprecated on npm; please upgrade to0.2.1.
v0.2.0
0.2.0
多选批量搬移(与 dsh-delete-session 互操作)
- 多选底栏里的「移动」直接调用本插件的
moveSelection(ids, { onProgress });返回值严格按合同:canceled? / moved / failed / skipped / total / results[]。 - 两段式:逐条做文件事务(
deferRegistry),最后一次 commit 写工作区归属;N 条只付 2 次注册表写。 - 多选状态可以直接拖动:抓住任意一条选中的行拖到目标工作区,整批一起搬。
搬得稳
- 帧级自校验:只重写 header 帧,其余帧逐字节比对;大日志可抽样(回执标注
verification: sampled),verify: full可强制全文。 - 冷搬移不再重建全量 header 索引,走
adoptSessions + detachSessions(目标/源各一次 mutate)。 - 释放写租约改为前几次近乎即时(0/10/25/50/100ms)再退避,回执带
releaseAttempts。 - 迁移日志 + 启动/桥接调用时的幂等恢复;失败自动回滚,源目录不动。
拖动修复
- 源工作区每次从 DOM 现读,不再跨拖动缓存 —— 会话搬走后,同一页面里再拖回旧工作区不会被误判成「源分组」。
installDrag改为引用计数:客户端重复 apply 时只挂一套监听,旧的 disposer 先跑也不会把仍在用的拖动监听撤掉。
验证
- 78 项单测全绿(
npm test)。 - 真浏览器只读检查:
scripts/drag-live-check.mjs(分组接管 + 高亮 + 源分组让路)。
v0.1.0 —— 跨工作区搬对话(拖动 + 就地接管)
功能
- 跨工作区搬对话:侧边栏「…」菜单 → 移动到 → 选目标工作区;也可以直接把对话拖到目标工作区上。
- 投放目标是整块工作区分组:文件夹行、它下面任意会话行、分组空隙都能接;组内上下拖仍是官方排序,插件完全不抢。
- 正在回答的对话也能搬:空闲的先释放再搬,正在跑做的就地接管(handoff),不打断这一轮。
- 关闭却仍被引用的会话、崩溃恢复、逐字节自校验,全部内置。
安装
dsh plugin --profile web add dsh-session-relocate然后重启 dsh web。
已知限制
- 正在跑活的那一轮的工具工作目录仍是旧目录(内存 header 冻结),下次打开才切到新目录。
- 拖动依赖官方的 DOM 行属性与分组结构;DSH 改约定时可用
dragMove: false一键关掉(菜单那条路不受影响)。 - 就地接管依赖若干私有内部结构,逐处 feature-detect,探测不到就整体放弃。