dsh-smooth-scroll 0.1.2-alpha.3 → 0.1.2-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/package.json +45 -44
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
## Install
|
|
21
21
|
|
|
22
|
-
从 npm 安装(`alpha` dist-tag
|
|
22
|
+
从 npm 安装(`alpha` dist-tag;当前版本 0.1.2-alpha.4,适配 dsh v0.1.2-alpha.1 ~ alpha.4):
|
|
23
23
|
|
|
24
24
|
```sh
|
|
25
25
|
dsh plugin --profile web add dsh-smooth-scroll@alpha
|
|
@@ -42,7 +42,7 @@ dsh --profile web --dump-config # 看到 dsh-smooth-scroll 层即安装
|
|
|
42
42
|
直接在原生 `scrollTop` 上做有节奏的平滑滚动,配合合成 getter:平滑期间 `scrollTop` 读到目标值,DSH 自身状态机看不到中间位置,不误判脱钩、不重复钉底。
|
|
43
43
|
|
|
44
44
|
- **速度剖面:** 起步 0 到 0.9px/ms 用 240ms 缓升,巡航恒速 0.9px/ms,收尾 220ms 软着陆。
|
|
45
|
-
- **用户滚动接管:** 真实位置连续偏离动画写入 ≥2 帧才停动画,DSH 正常脱钩,回到最新按钮照常;单帧偏差(浏览器滚动锚定等一次性非用户位移)自动重基后继续钉底跟随——发送消息等操作引发的非用户位移不会导致误判脱钩或停在信息处;内容收窄导致的夹紧则在 2 帧内停止于新底部(同样不掉队)。与之对称,孤立的一次性小幅定位(如滚动条点一格)也会被当作非用户位移吸收、随后被跟随回底部;只有持续 ≥2
|
|
45
|
+
- **用户滚动接管:** 真实位置连续偏离动画写入 ≥2 帧才停动画,DSH 正常脱钩,回到最新按钮照常;单帧偏差(浏览器滚动锚定等一次性非用户位移)自动重基后继续钉底跟随——发送消息等操作引发的非用户位移不会导致误判脱钩或停在信息处;内容收窄导致的夹紧则在 2 帧内停止于新底部(同样不掉队)。与之对称,孤立的一次性小幅定位(如滚动条点一格)也会被当作非用户位移吸收、随后被跟随回底部;只有持续 ≥2 帧的偏离才视为用户接管。另:主机内(输入栏除外)的指针按下立即停动画并让 getter 回落真实值——turn 导轨跳转(`landOnRow` 的 `el.scrollTop += flowTop - 24` 复合读改写)由此读到真实位置,落点不被合成目标偏移(真实宿主 e2e 实测:流式中点击「跳转到第 N 轮」后漂移 0px)。
|
|
46
46
|
- **同目标兜底:** DSH 每滚动事件重跑 toBottom 而目标不变时忽略,动画不被逐帧重启。
|
|
47
47
|
- **减少动效:** prefers-reduced-motion 时完全回退官方瞬时行为。
|
|
48
48
|
- **无 transform:** 不应用任何 transform,输入栏 overlay/sticky 永不受扰。
|
|
@@ -62,9 +62,9 @@ dsh --profile web --dump-config # 看到 dsh-smooth-scroll 层即安装
|
|
|
62
62
|
|
|
63
63
|
## 兼容性
|
|
64
64
|
|
|
65
|
-
- **dsh v0.1.2-alpha.1 ~ alpha.
|
|
65
|
+
- **dsh v0.1.2-alpha.1 ~ alpha.4(支持):** 插件的唯一 DOM 锚点 `[data-conversation-scroll]`(会话滚动容器,ConversationRoot 的 scrollBody)与宿主跟随状态机(`observedTopRef` / `movedByReader` / ResizeObserver follow、`el.scrollTop` 读写面)在 `dsh-v0.1.2-alpha.1` ~ `dsh-v0.1.2-alpha.4` 四个 tag 上一致;turn 导轨跳转 `landOnRow` 仍为 `el.scrollTop += flowTop - 24` 复合读改写,pointerdown 接管先停动画、复合写读到真实位置。alpha.4 把宿主滚动几何采样改为每 500ms 一次并以 `scrollend` 提前采样(`ChatView` 的 `SCROLL_SAMPLE_INTERVAL_MS`);真实宿主行为 e2e(见验证)确认该节奏下追击无停顿(流式最大离底 0px、追击停顿 0ms)、滚轮接管后漂移 0px 且宿主正常脱钩。
|
|
66
66
|
- **0.1.1-rc.2 及更早(不支持):** 该代使用 `@deepseek-ai/dsh-client-runtime`,滚动宿主结构不同,不兼容。
|
|
67
|
-
- 验证:`pnpm test`(契约冒烟,bundle 自包含)+ `node test/scroll-follow.test.mjs`(15 个 e2e 场景,含「追击中点击导轨」回归点;需 Playwright 与 Chromium
|
|
67
|
+
- 验证:`pnpm test`(契约冒烟,bundle 自包含)+ `node test/scroll-follow.test.mjs`(15 个 e2e 场景,含「追击中点击导轨」回归点;需 Playwright 与 Chromium)+ `node test/alpha4-realhost-e2e.mjs <token>`(真实 `dsh web` 0.1.2-alpha.4 + 真 Chromium:流式追击、滚轮接管、导轨跳转、reduced-motion、控制台错误;token 取自 `dsh web` 启动输出)。
|
|
68
68
|
|
|
69
69
|
## License
|
|
70
70
|
|
package/package.json
CHANGED
|
@@ -1,44 +1,45 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "dsh-smooth-scroll",
|
|
3
|
-
"version": "0.1.2-alpha.
|
|
4
|
-
"description": "DSH 平滑滚底插件:会话装载与“回到最新”瞬时钉底,流式内容以恒速平滑跟随(缓启动/软尾);无 transform、不扰动输入栏等 UI、不干扰 DSH 自身跟随状态机,prefers-reduced-motion 自动回退官方行为。适配 dsh-v0.1.2-alpha.1 ~ alpha.
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "lib/index.js",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"default": "./lib/index.js"
|
|
10
|
-
},
|
|
11
|
-
"./client": {
|
|
12
|
-
"default": "./lib/client.js"
|
|
13
|
-
},
|
|
14
|
-
"./package.json": "./package.json"
|
|
15
|
-
},
|
|
16
|
-
"files": [
|
|
17
|
-
"lib",
|
|
18
|
-
"cordis.patch.yml"
|
|
19
|
-
],
|
|
20
|
-
"dsh": {
|
|
21
|
-
"client": {
|
|
22
|
-
"platform": "web"
|
|
23
|
-
},
|
|
24
|
-
"bundle": {
|
|
25
|
-
"patch": "./cordis.patch.yml"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-smooth-scroll",
|
|
3
|
+
"version": "0.1.2-alpha.4",
|
|
4
|
+
"description": "DSH 平滑滚底插件:会话装载与“回到最新”瞬时钉底,流式内容以恒速平滑跟随(缓启动/软尾);无 transform、不扰动输入栏等 UI、不干扰 DSH 自身跟随状态机,prefers-reduced-motion 自动回退官方行为。适配 dsh-v0.1.2-alpha.1 ~ alpha.4。",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"default": "./lib/index.js"
|
|
10
|
+
},
|
|
11
|
+
"./client": {
|
|
12
|
+
"default": "./lib/client.js"
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"lib",
|
|
18
|
+
"cordis.patch.yml"
|
|
19
|
+
],
|
|
20
|
+
"dsh": {
|
|
21
|
+
"client": {
|
|
22
|
+
"platform": "web"
|
|
23
|
+
},
|
|
24
|
+
"bundle": {
|
|
25
|
+
"patch": "./cordis.patch.yml"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "node scripts/build.mjs",
|
|
30
|
+
"prepack": "npm run build",
|
|
31
|
+
"test": "node test/smoke.test.mjs",
|
|
32
|
+
"test:e2e": "node test/scroll-follow.test.mjs"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"esbuild": "^0.25.0"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"dsh",
|
|
39
|
+
"dsh-plugin",
|
|
40
|
+
"deepseek-harness",
|
|
41
|
+
"smooth-scroll",
|
|
42
|
+
"scroll"
|
|
43
|
+
],
|
|
44
|
+
"license": "MIT"
|
|
45
|
+
}
|