Releases: huang-chunc/dsh-user-message-timeline
Release list
v0.2.0 插件配置卡片与左右导轨
功能新增:
- 设置迁移至 设置-插件-插件配置 单一下拉卡片(开关+左右贴边,右侧仅适配 dsh-better-sidebar)
- 开关深浅主题自适应(深色 on 白底黑点/off 黑底灰点,浅色反之)
- README 重做,增浅/深色演示与设置视频及截图
缺陷修复:
- 第2轮 steering 漏采(scan 增 steering)
细节:
- Host 注册 user-message-timeline NS,Client settingsScope 订阅+迁移桥,导轨左右推式与右栏避让,视口16与玻璃保持
- lib/index.js + lib/client.js + package.json bump 0.2.0
v0.1.10 - 视口16与玻璃修复 + 所见即可点
功能新增 / 缺陷修复 / 细节优化
- 导轨视口固定 16 颗,超 16 轮可在导轨内滚轮翻找,不再挤成细线(B3)
- 平时淡淡底色区分背景,悬停磨砂浮现,短长会话玻璃一致(B3)
- 冷启所见即可点:导轨等滚动容器就绪后淡入,首帧点必中(B2 D)
- 新增 umtl:debug 轻量日志(默认关,右下角·调试中)
技术清单
- layout 视口16:1614+1510+12=386 内容高度,>16 固定视口16可滚,补 --umtl-gap 写回,≤16 mask:none
- 底座:bg-base 8%+6%描边平时,is-tinted 55%+blur 悬停;visible 脱钩 heightOk/scrollReady,仅看 count/isBlank/enabled
- B2:scrollReady 闸门,≤16 立即就绪,>16 等 ensureScrollRoot 1.2s,visible=readyShow,D 整体淡入
- getScrollRoot 重写:优先 CONV_SCROLL,兜底从 anchor 向上找最深可滚祖先
- 调试:isDebug/umtlLog/UMTL.logs/dump,scan/check/getScrollRoot/scrollToKey/layout 日志
v0.1.9 P2-H 分页头丸与统一分页链路
v0.1.9 P2-H 分页漏扫修复
- hasMore 哨兵 older:isOlderBtn/findOlderBtn(SEL.OLDER + 文案兜底)检测,scan 插哨兵,markersEqual 增 isOlder
- 统一分页 loadAllOlder(limit=20)(首击680ms/后续420ms,hidden/disabled 早退,首击前 scrollTop)
- scrollToKey 复用 findOlderBtn,olderWrap MutationObserver 增量补丸
- 头丸 is-older/is-loading(空心描边 + 脉冲),HUD/tooltip · 还有更早,findNearestByY 跳过哨兵
- B1/B2 回归暂搁置,保持头丸可用基线
- 19.3kB 857行,node --check / npm pack 通过
What's Changed
- feat: P2-H 分页头丸与统一分页链路,bump v0.1.9 by @huang-chunc in #9
Full Changelog: v0.1.8...v0.1.9
v0.1.8 底盘与信息精简版
v0.1.8 — 底盘收敛与仅图标记
- P3-A 定时器合并:500ms+800ms+400ms → 单 2s 兜底,hidden 暂停,MutationObserver 主导
- P3-B 类名收拢:wSkVaW_root / Md3f7G_* / gdEzaW_bubble → SEL 回退表
- T3 仅图:整锚点 el.querySelector('img'),仅 hasImage 布尔,tip 仅图 chip
- P2-E 否决:键盘完整化及多类标记移除,鼠标专用回归
- 66 行精简,18.2kB,node --check / npm pack 通过
What's Changed
- feat: P3 底盘收敛与仅图标记(键盘移除),bump v0.1.8 by @huang-chunc in #8
Full Changelog: v0.1.7...v0.1.8
v0.1.7:长会话 —— minimap 压缩 · Scrub HUD · 高亮残留修复
本版解决长对话下导轨的核心痛点:80 轮全部药丸一屏尽收,并为拖拽 scrub 配上视频进度条式的实时徽标。
minimap 压缩
- 轮次超过 34 后自动进入压缩模式:间距与药丸尺寸线性插值收紧,全部轮次一屏尽收(类编辑器 minimap);悬停漏斗放大照常叠加
- 带等比收口保险:矮视口 / 超长会话也保证不溢出;34 轮及以下观感与之前完全一致
- 深压缩时中心序号暂隐,「第 X/N 轮」由气泡头部与拖拽徽标承接
Scrub HUD
- 拖拽期间指针旁浮动墨玉玻璃徽标「第 23/80 轮 · 预览首行」,实时跟随目标变化,松手淡出
- 直写 DOM 实现,拖拽全程零额外渲染开销
修复
- 预览高亮残留:移出气泡、会话结束后,对应药丸的
is-preview高亮不再孤零零残留——统一预览会话出口endPreviewSession(),宽容期超时 / Esc / 点击药丸退场一律走它 - 点击药丸跳转现在会同时结束预览会话(药丸是唯一行动点)
安装:dsh plugin remove dsh-user-message-timeline && dsh plugin --profile web add file:~/dsh-user-message-timeline 后重启 dsh web 并硬刷新;npm 侧 npm i dsh-user-message-timeline@0.1.7
v0.1.6:预览会话修复 —— 阅读气泡时导轨不再塌缩
回归修复:鼠标移入预览框复制/阅读时,漏斗与毛玻璃底不再消失。
修复
- 预览会话状态机:导轨展开态由「指针在导轨上」改为「指针在导轨 OR 气泡存活」——移入气泡后漏斗保持展开、毛玻璃底保持显示,阅读/复制期间始终有位置参照
- 预览目标高亮:气泡对应的药丸以与当前消息同款的高亮全程点亮,切换预览目标时跟随转移
- 会话结束语义不变:移出气泡 / Esc / 宽容期耗尽才收场;拖拽 scrub 行为不受影响
安装:dsh plugin remove dsh-user-message-timeline && dsh plugin --profile web add file:~/dsh-user-message-timeline 后重启 dsh web 并硬刷新;npm 侧 npm i dsh-user-message-timeline@0.1.6
v0.1.5:T3 手感收尾 —— 动效编排 · 一次性操作提示
本版聚焦预览气泡的生命周期手感:入场更明确、收场不拖影、扫动更稳,并为新用户准备了一次性操作引导。
动效编排
- 入场参数对齐:气泡从药丸侧滑出改为 scale(.92→1) + 平移 8px、200ms——滑出动效比之前明显一档
- 收场缩退(核心):关闭时气泡以 120ms 快速缩退回药丸侧(刻意快于入场);移出 / Esc / 按下拖拽等所有关闭路径统一走这一动效,告别"人走气泡飘"的拖影感
- 扫动文字微淡切:快速扫过药丸列时仅正文做 80ms 微淡切,头部行保持稳定,入场动画依旧只播第一次
新能力
- 一次性操作提示:首次见到导轨且对话 ≥3 轮时,右侧弹出「悬停预览 · 点击跳转 · 按住拖动快速滑动」玻璃胶囊;任意交互或 4 秒后自动淡出,仅出现一次,刷新不复播
安装:dsh plugin remove dsh-user-message-timeline && dsh plugin --profile web add file:~/dsh-user-message-timeline 后重启 dsh web 并硬刷新;npm 侧 npm i dsh-user-message-timeline@0.1.5
v0.1.4:预览框(tooltip)专项 —— sticky tip · rAF 跟随 · 墨玉玻璃材质
本版为预览框(tooltip)专项重构:交互手感、跟随定位与材质语言整体升级。
交互升级
- Sticky tip:气泡常驻挂载,内容随悬停目标原地替换,入场动画只播首次——快速扫过整列药丸不再"灭—等—亮"闪烁;分级延迟,首颗 150ms、导轨内连续目标降至 60ms(Radix/shadcn 成熟做法)
- rAF 实时跟随:气泡存活期间逐帧读取药丸实时位置直写样式,导轨自身滚动 / 侧栏推式时气泡不再钉死原位指鹿为马;零 React 重渲开销
- 预览可复制:指针可经间隙移入气泡,直接选中复制正文;移出防抖 80ms、Esc 随时关闭,隐藏态不遮挡聊天区点击
缺陷修复
- 拖拽 scrub 时气泡错位闪跳:此前 hover 定时器挂着就按下拖拽,旧位置的气泡弹出且随目标变化错位闪跳;现按下即关泡并屏蔽调度,松手恢复
视觉 / 材质
- ★ 墨玉玻璃材质(核心):气泡不再是最轻的浅灰实心块——改为与 hover 药丸同一 token 长出的深色磨砂玻璃(
label-primary 88%+blur(20px) saturate(1.8))、双层内光效(顶缘高光 + 内描边)、重投影、radius 14px;头部序号装进迷你药丸 chip 与外侧大药丸首尾呼应;入场从药丸侧平移滑出。深色主题自动翻转为"白瓷玻璃+黑字",零主题分支 - 去箭头化:删除双三角箭头,悬在代码块/图片上方不再露实心色块断裂;方向暗示交给滑出入场动画
- 高度预算匹配:max-height 提升至
min(36vh, 280px)、正文 6 行、预览 buffer 300 字符——长消息终于能看全 - 保留段落结构:预览不再把换行拍平,多段落消息保留原有层次
- 细节三连:头部数字
tabular-nums扫动不横跳;仅"进行中"显示脉冲徽标(常量"已完成"不再占宽);投影加重一档强化顶层浮起感
安装:dsh plugin remove dsh-user-message-timeline && dsh plugin --profile web add file:~/dsh-user-message-timeline 后重启 dsh web 并硬刷新;npm 侧 npm i dsh-user-message-timeline@0.1.4
v0.1.3: Merge pull request #3 from huang-chunc/feat/ui-polish
缺陷修复
- 拖拽 scrub 抖动(client.js:353-373 → scrollToKey:306):拖拽中每个 rAF 都调
scrollIntoView({behavior:'smooth'}),连续触发不断打断/重启平滑动画 → 画面抽搐。改:拖拽进行中直接赋值root.scrollTop(instant),pointerup后再对最终目标 smooth 对齐一次。 - resize 监听器泄漏(:111 vs :182):add 与 remove 传入的是两个不同箭头函数引用,永远移除不掉。改:提取具名 handler。
- scan 全量重渲 + 全文读取(:19,203):
extractText读整条 textContent(长文数万字 × 每 800ms × 80 条);setMarkers(out)每次都是新数组强制全量 reconcile。改:TreeWalker 累计到 ~220 字符即停;新旧数组按 key+preview+bm+time 浅比较,无变化不 setState。 - 未尊重 prefers-reduced-motion:CSS 增加 reduce 媒体查询,umtl 作用域内动画过渡降为瞬时。
- tooltip 估高失准(:272-289):estH 四档估算与实渲染可差 >10px,贴底被裁。改:渲染后一帧内 getBoundingClientRect 二次校正 top。
材质与观感升级
- 去壳化(核心改动):现在是"94% 底 + 边框 + 阴影"的卡片壳,阅读时存在感过强。改为无壳悬浮:常态完全透明无边框无阴影、只有药丸本身;指针进入导轨区域才淡入极淡毛玻璃底(color-mix ~55% + blur(10px) saturate(1.4)),离开淡出。
- 药丸质感:纯色扁平 → 顶部 1px inset 高光;active 光环由生硬
0 0 0 4px改双层柔和光晕;hover 用 brand 色;全部经 color-mix 基于--dsw-alias-*token,深浅色自洽。 - 阴影令牌化:清掉所有硬编码 rgba(0,0,0,.08/.12/.2)(暗色下发灰发脏),统一换 token 化双阴影(ambient + key)。
- 序号内嵌、消灭遮挡:
.umtl-labelchip(left:46px)伸进正文盖首字。删除之;改为漏斗中心那颗放大为 30~36px 椭圆、内部居中显示序号数字。 - tooltip 精致化:backdrop-filter 与宿主 popover 一致;头部行加 n/N 进度 + 书签图标;入场动画 translateX(4px) → scale(.98)+fade;箭头旋转方块补同色描边消缝。
- 入场编排:首次可见时药丸 stagger 淡入(每颗 +8ms,总长 cap 350ms),仅播一次。
- 书签标记:5px 圆点易误认状态点 → 3×7px 竖条贴 pill 上缘。
v0.1.2: Merge pull request #2 from huang-chunc/feat/UI-better
优化体验
- 优化了设置中开关在深色模式下开/关状态难以辨识问题
- 优化了设置中插件开关位置的文字描述,使其与原生设置的风格保持一致