Skip to content

Releases: BananaSoldier01/dsh-tidychat

v0.2.5 — Hardening(工程收口)

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 26 Aug 15:43

本次内容(自 0.2.4)

工程收口批次,新增一个 P0 修复 + 三处定位条微调 + 文档一致:

  1. 折叠状态会话隔离(P0)foldStateMap<turn, boolean> 改为 Map<sessionId, Map<turn, boolean>>——修复跨会话同轮次串扰:会话 A 手动展开第 5 轮后切到会话 B,B 的第 5 轮不再错误继承展开态
  2. pointermove 节流:定位条高频鼠标移动只记录最新坐标,rAF 帧内统一处理一次,不再每事件一次 React 渲染;离开/卸载时清理挂起帧
  3. 测量前不渲染:宿主布局未就绪(pos === null)时不再渲染到写死的 280px 猜测位,等测量成功再出现(切会话不再闪现错位条)
  4. 快照/DOM 轮次一致性诊断:诊断报告新增「会话快照轮次 vs DOM 轮次」对照;不一致时在「系统检测」段自动提示(⚠️ 加载中或 DOM 更新滞后)
  5. 文档:README 双语钉版示例更新至 v0.2.5;package description 补齐「智能加载更早历史」

功能无新增;纯函数抽取与自动化测试按计划推迟(0.3.0 前置)。

安装 / 更新

dsh plugin --profile web add @bananasoldier01/dsh-tidychat
#
dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.2.5

v0.2.4 — npm 包元数据刷新

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 25 Aug 00:31

本次内容(自 0.2.3)

功能零改动,仅 npm 包元数据/文档刷新:

  1. 双语 README 随包README.en.md(英文完整版,默认仍中文)纳入包内,npm 页 README 更新至含 0.2.4 路线图;
  2. repository.url 规范化npm pkg fix,GitHub → git+https 形式,消除发布警告);
  3. awesome-dsh-plugin 收录 PR #3067 已合并(session 分类 + 截图条目),插件进入 dsh-market 插件源。

安装 / 更新

dsh plugin --profile web add @bananasoldier01/dsh-tidychat   # npm(推荐)
#
dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.2.4

v0.2.3 — npm 发布准备

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 24 Aug 14:16

本次内容(自 0.2.2)

按 awesome-dsh-plugin 投稿推荐项整理 npm 发布链路:

  1. peerDependencies@deepseek-ai/dsh-settingsdependencies 移入 peerDependencies(官方运行时包由宿主 profile 提供,避免重复运行时)
  2. npm 发布配置prepublishOnly = pnpm build(发布前自动构建),files 白名单已就绪(lib/)——发布后即可 dsh plugin add @bananasoldier01/dsh-tidychat 一条命令安装(预构建,免 allowBuilds 授权)
  3. README:安装部分改为推荐 npm 一行式,GitHub 钉版本示例更新至 v0.2.3

功能无变化(0.2.2 的提示卡可读性修复原样)。

安装 / 更新

dsh plugin --profile web add @bananasoldier01/dsh-tidychat
#
dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.2.3

v0.2.2 — 提示卡可读性(issue #6)

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 24 Aug 13:39

本次内容(自 0.2.1)

针对 issue #6 的悬停提示卡可读性,并修复官方深色模式下误判玻璃底导致的「暗底暗字」:

  1. 头部提级:提示卡 #序号 · 时间 由最弱一级(label-tertiary)提升到 label-secondary,亮色主题下不再发虚;正文跟随 label-primary(与对话正文同色),明暗随主题自动切换
  2. 保守对比度兜底:仅当提示卡浮层背景「不透明」(bg-layer-3 alpha ≥ 0.85)且 label token 与背景对比 <3:1 时才写纠偏色(亮底深字 / 暗底亮字);玻璃/半透明浮层(官方深色 rgba(255,255,255,0.1) 类)一律跳过、跟随主题 token——避免把半透明白玻璃误判成浅底
  3. 长摘要折行overflow-wrap: anywhere——摘要含长代码/URL 时在卡片内折行,不撑破卡片(悬停时摘要溢出框体的问题)
  4. 颜色解析增强parseRgba 支持 rgba 逗号 / 空格+斜杠语法、#rgb/#rgba/#rrggbb/#rrggbbaatransparent

验证:类型检查 / 构建通过;判定矩阵 10/10(官方深色玻璃 SKIP、官方浅色 OK、异常 token 的不透明主题 FIX);bundle 服务端一致性逐字节确认。

安装 / 更新

dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.2.2
# 或从 main 更新
dsh plugin --profile web update @bananasoldier01/dsh-tidychat

下一版本(候选)

  • Turn Index 层(fold/navigator/autoload 共享索引,替代每次全量扫描)
  • 运行中回合的已完成步骤折叠(issue #2

v0.2.1 — 定位条配色完善(PR #5 合入)

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 23 Aug 01:40

本次内容(自 0.2.0)

PR #5(drscrewdriver)配色功能合入 main,并完成 4 点改进:

  1. 背景真实冒泡:默认色 auto 的背景判定从会话滚动容器沿父级向上冒泡找第一个非透明背景(alpha=0 跳过),不再只查固定候选
  2. auto 尊重主题:默认色 auto 优先用宿主淡色文字色,与实际背景 WCAG 对比 ≥3:1 才使用,不足自动切纠偏灰;强调色 auto(默认)= 跟随主题品牌色(--dsw-alias-state-business-primary),不再默认硬编码蓝
  3. 配色折叠为高级项:设置卡片内「配色(高级)」可折叠收起,明度档在 auto 时禁用;两个色系均支持「自动」chip(默认色明暗渐变预览 / 强调色品牌色预览)
  4. 配置枚举化:host schema 四个配色字段改为 z.union 枚举收敛取值(无效值拒绝、缺省回落);插件卸载时清除写入 :root 的临时 CSS 变量

另外包含 PR #5 的既有功能:定位条默认色 / 强调色两组「色系 × 5 级明度(l1 极浅 → l5 极深)」正交配置。

安装 / 更新

dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.2.1
# 或从 main 更新
dsh plugin --profile web update @bananasoldier01/dsh-tidychat

下一版本(候选)

  • Turn Index 层(fold/navigator/autoload 共享索引,替代每次全量扫描)
  • 运行中回合的已完成步骤折叠(issue #2

v0.2.0 — Adaptive Conversation Navigation Rail

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 22 Aug 12:31

本次内容(自 0.1.5)

左缘定位条从「固定列表」升级为 Canvas Minimap 全局导航

  1. 固定高度 + 自适应min(min(70vh,660px), max(48px, 轮次×12px))——轮次少时按 12px/轮 收紧(间距紧凑),轮次多时封顶
  2. Turn 全局均匀映射y = index/(total-1) × railHeight;仅 1 个 canvas + 1 个提示卡,不随 turn 数增长 DOM(2000 turn 每帧 O(N) 矩形无压力)
  3. 鱼眼 hover:hover 附近 ±4 turn 间距放大、远处自动压缩;命中测试与绘制共用同一布局函数(所见即所得,二分命中)
  4. Drag scrubbing:pointer 捕获,拖动时仅预览目标 turn,松手才跳转
  5. 当前 turn 高亮:以「阅读区顶部」为准(含 header 偏移);行位置缓存按「行数/内容高度」变化自动重建(修复折叠导致的坐标漂移),滚动 rAF 节流 + 二分检测
  6. 精确跳转scrollTo 计算,用户消息滚到阅读区顶部(非 viewport 中心、不埋进 header)
  7. 主题自适应:颜色从 CSS 变量读取(深浅色),DPR 处理

兼容性:fold / divider / autoload / diagnostics 均不受影响(rail 数据来自会话快照,与折叠的 CSS 隐藏无关)。

安装 / 更新

dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.2.0
# 或从 main 更新
dsh plugin --profile web update @bananasoldier01/dsh-tidychat

下一版本(候选)

  • Turn Index 层(fold/navigator/autoload 共享索引,替代每次全量扫描)
  • 运行中回合的已完成步骤折叠(issue #2

v0.1.5 — 稳定性收尾 + 可观测性 + 一键报告问题

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 22 Aug 05:32

本次内容(自 0.1.4)

稳定性收尾(用户无感的内部修复)

  1. governorBusy 改为 active-session 派生状态:修跨会话 race(A 加载中途切到 B,A 的旧回调曾污染 B 的 busy 状态)。状态枚举化为 idle/loading/settling/paused/done,isGovernorBusy() 从当前会话派生,删除全局布尔。
  2. DOM 查询系统收口:applySurgery 主查询 / jumpTo / countAnchors / findLoadOlderButton 全部收口到会话滚动容器(未挂载时回退 document);按钮匹配移除泛化的「加载更多 / Load more」,只保留会话专属文案。
  3. async cleanup 收口:disposers 登记表统一清理 timer/requestIdleCallback/subscribe;generation 守卫保留作第二道防线。
  4. 避免无效扫描:5 秒兜底加 dirty 门(无变化时跳过全量扫描);scan 记录耗时、清 dirty;长会话下减少无用 DOM 查询。

可观测性 + 一键报告问题(核心新功能)

  1. 调试性能报告:debug 开启时每 10s 输出 [tidychat perf](轮次 / 扫描耗时 / 定位条 / 自动加载状态),window.__tidychatReport() 手动触发。
  2. 📤 一键「生成诊断报告并提交」(设置面板):
    • 自动生成完整报告:时间 / DSH 版本占位 / 插件版本(构建时注入)/ 浏览器 / 会话规模 / 性能(最近+峰值+扫描次数)/ 自动加载 / 定位条 / 开关配置
    • 异常自动检测:扫描峰值超预算、autoLoad 暂停、autoLoad 关闭、autoLoad 未触发等自动写入「系统检测」段
    • 现象快捷标签:6 个可多选标签(滚动卡顿/输入卡顿/界面卡顿/定位条异常/自动加载异常/折叠异常)
    • 标题+正文全预填:打开 GitHub issue 新建页即已填好,用户检查后提交即可——全程零手写

其它

  • README 兼容性更新:适配 DSH ≥ 0.1.0-rc.7(含 0.1.1-rc.x 实测 rc.1/rc.2)

安装 / 更新

dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.1.5
# 或从 main 更新
dsh plugin --profile web update @bananasoldier01/dsh-tidychat

下一步(0.1.6)

  • 左缘定位条超长优化(窗口化 / 随内容滚动,方案未定)
  • Turn Index 层(fold/navigator/autoload 共享索引)

v0.1.4 — 定位条体验修复

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 20 Aug 13:02

本次内容(自 0.1.3)

定位条(左缘导航条)一组体验修复:

  1. 贴会话区真实左缘(合并 PR #3):锚点从 0×0 的 [data-slot=conversation.session] 改为真实滚动容器 [data-conversation-scroll],不再落到写死的 284px fallback,侧栏展开/收起自适应
  2. 半透明 pill 底衬 + 深色主题可读(PR #3):竖条改 label-primary 78% + bg-layer-3 半透明圆角底衬,并补充 color-mix() 旧浏览器兜底
  3. 移除 pill 边框:删掉 box-shadow 的 inset 边框,只留半透明底衬
  4. 即时重排:ResizeObserver + window resize 监听会话容器尺寸,侧栏展开/收起时定位条立即跟随,消除 5s 兜底延迟
  5. 留白自适应隐藏:隐藏判据从「容器总宽度」改为「内容左缘与容器左缘的真实间距 gutter」——dsh 会话内容居中且 max-width 748px,窄窗口内容铺满、留白归零时会压正文/输入框;现测真实 gutter,不足定位条宽度(48px)即隐藏,随窗口宽度自适应(Codex 同款「空间足够才显示」)

其它:

  • 新增 bug / feature 两类 issue 模板
  • 路线图更新:0.1.4 计划项移至 0.1.5(含定位条超长优化,方案未定,下个版本进行)

兼容性

适配 DSH ≥ 0.1.0-rc.7(rc.7/rc.8 契约点均未变化,插件无需改动)。

安装 / 更新

dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.1.4
# 或从 main 更新
dsh plugin --profile web update @bananasoldier01/dsh-tidychat

v0.1.3 — 智能加载修复 + 深色模式适配

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 19 Aug 14:30

修复(自 0.1.2)

智能加载更早历史(governor)三处核心 bug:

  1. 不自动加载:会话桥触发时正文仍在「载入历史」,按钮未渲染;原实现 直接标记 done(终态)导致永不加载。改为保持 idle + 退避重试(2s,上限 15 次),并补充英文文案 Load earlier 的匹配。
  2. 只加载一页就停:Long Task 检查过于激进——加载一页历史后 dsh 渲染新增行会自然产生一次 >50ms 的 long task,被误判为卡顿而 PAUSED。移除 Long Task 刹车,回到以 applySurgery 耗时(scanMs)作为唯一且跨浏览器的性能信号。
  3. 每页测的是二次 scan / settle 时序 race:batch 期间抑制普通 scan,settle 后只执行一次 measuredScan;settle observer 先挂载再点击。

其它健壮性:

  • 按钮/anchor 查找限定到会话滚动容器(找不到回退全文档)
  • 会话切换立即重绑观察器(不再最多滞后 5s)
  • btn.disabled 不再误判 done(保持 idle + 退避重试)
  • 到达历史最前端才干净收尾 done(grew && !按钮

深色模式:

  • 定位条摘要卡背景 token 修正为 --dsw-alias-bg-layer-3(浅色纯白 / 深色深灰,随外观动态切换)。此前用了不存在的 bg-elevated(恒白框)和恒深色的 tooltip-bg

安装 / 更新

# 安装
dsh plugin --profile web add git+https://github.com/BananaSoldier01/dsh-tidychat.git#v0.1.3

# 从 main 更新
dsh plugin --profile web update @bananasoldier01/dsh-tidychat

下一步(0.1.4)

  • 左缘定位条窗口化(只渲染视野附近消息、随滚动更新,解决长会话溢出)
  • 降低全量扫描成本(缓存行列表 + 无变化跳过)

v0.1.2 — 智能加载更早历史(自适应性能闸门)

Choose a tag to compare

@BananaSoldier01 BananaSoldier01 released this 19 Aug 13:31

修复

解决长会话卡顿:原 autoLoad 只要还有「加载更早」就每 1.2 秒点一次、最多 60 次,把全部历史灌入 DOM。而 DSH 会话列表是非虚拟化渲染,DOM 越大整个页面越卡——形成「加载 → DOM 变大 → 更卡 → 继续加载」的正反馈。

改动

将 eager auto-load 改为 session 级自适应历史加载控制器

  • scan 与 autoLoad 解耦:scan 只负责折叠/分隔线/导航,加载逻辑独立成 governor
  • 空闲单页加载requestIdleCallback(Safari 用 setTimeout 兜底),主线程空闲才加载下一批
  • 性能闸门:每加载一页测一次 applySurgery 耗时,软预算(连续 3 次超 30ms)或硬预算(单次 50ms)即自动暂停;Long Task API(Chromium/Firefox)作为增强刹车
  • 预算用时间、非行数/次数:阈值是「UI 延迟预算」,跨机器性能自洽,快机器多加载、慢机器提前停
  • 会话隔离Map<sessionId> + generation,防切换会话后陈旧 callback 串台;暂停状态按会话各自保存
  • 暂停不自动恢复:保留宿主「加载更早」手动按钮,并在按钮旁轻提示一次
  • 观察范围收窄:MutationObserver 从 document.body 收到 [data-conversation-scroll]
  • 顺手消除 applyFold 相同 textContent 的冗余 DOM mutation

不新增任何用户设置,开关文案改为「智能加载更早历史」。

行为变化

场景 之前 现在
短会话 自动加载完 一样,自动加载完
长会话 一路加载到卡死 机器吃力前自动暂停,页面保持流畅
想继续看 手动点「加载更早」

后续

  • 0.1.3:增量扫描(addedNodes → 只处理新增 Turn),进一步降低大 DOM 下的全量扫描成本
  • 长期:导航索引脱离当前 DOM window,点击历史位置时按需加载