dsh-wisp 1.30.0 → 1.32.0
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 +88 -0
- package/lib/client.js +378 -46
- package/lib/client.template.js +378 -46
- package/package.json +1 -1
- package/tools/smoke.mjs +1 -1
- package/verify-wisp.mjs +287 -39
package/README.md
CHANGED
|
@@ -448,6 +448,94 @@ node tools/audit-log.mjs --confirm <manifest> # 生成后:并入代理登
|
|
|
448
448
|
|
|
449
449
|
## 变更
|
|
450
450
|
|
|
451
|
+
### 1.32.0
|
|
452
|
+
|
|
453
|
+
**分组改成悬停展开、移开收起**(点一下仍然是"钉住")。
|
|
454
|
+
|
|
455
|
+
这一条本来就是标准交互,上一版只做了"点开/点关",属于设计盲区。补上之后,
|
|
456
|
+
真正要小心的地方不在于"加个 mouseenter",而在于下面这几条 —— 少一条都比不做更糟:
|
|
457
|
+
|
|
458
|
+
| 细节 | 为什么必须 |
|
|
459
|
+
|---|---|
|
|
460
|
+
| **展开有延迟**(140 ms) | 鼠标只是**路过**那一行就展开 = 抖动。这就是 hover intent。 |
|
|
461
|
+
| **移开有宽限**(260 ms) | 斜着往子项移动时,中途不能收。 |
|
|
462
|
+
| **子项与标题在同一个悬停区**(`div.wisp-menu-group`) | 从标题移到子项**不该算移开**。这是这类交互最常见的翻车点。 |
|
|
463
|
+
| **点击 = 钉住** | 悬停是预览、点击是决定。点开的那一组鼠标移开也不关,再点一次才收起。 |
|
|
464
|
+
| **触屏不触发悬停** | 判 `pointerType`。不判的话手指一碰就会莫名其妙展开。 |
|
|
465
|
+
| **焦点在那一组里时不关** | 否则键盘用户正操作着,鼠标一动组就没了。 |
|
|
466
|
+
| **手风琴** | 悬停到另一组会解除上一组的钉住 —— 同时开两组看不清。 |
|
|
467
|
+
|
|
468
|
+
**顺手抓到一个真 bug**:焦点保护第一版写的是"焦点还在菜单里就不许关" ——
|
|
469
|
+
而菜单**一打开就会把焦点放到第一项**,所以那条件**永远为真**,
|
|
470
|
+
悬停收起等于**永远不会触发**。改成只看"焦点在不在**这一组**里"。
|
|
471
|
+
第一版还用了一个"组名 → 元素"的映射,实测和重画后的 DOM 对不上(组照样关);
|
|
472
|
+
现在改成从焦点**向上走**、遇到带 `data-group-block` 的祖先就算命中 —— 不依赖任何外部映射。
|
|
473
|
+
|
|
474
|
+
预检 502 → **524 项**:延迟、宽限、路过不展开、子项在同一悬停区、
|
|
475
|
+
触屏不悬停但点击可用、点击钉住、再点收起、手风琴、焦点保护、焦点离开后规则恢复。
|
|
476
|
+
|
|
477
|
+
### 1.31.0
|
|
478
|
+
|
|
479
|
+
### 1.31.0
|
|
480
|
+
|
|
481
|
+
**菜单重做。** 上一版只是"把 19 个条目收进三个分组" —— 那是分类,不是交互设计。
|
|
482
|
+
这一版按交互本身重做。
|
|
483
|
+
|
|
484
|
+
**问题(先认下来)**:
|
|
485
|
+
|
|
486
|
+
- 信息和动作混在一起:「关于她…」「动作一览…」「版本与更新」和「专注 25 分钟」并列,
|
|
487
|
+
而版本号在「关于她」里还有一份 —— 同一件事出现在两个地方;
|
|
488
|
+
- 三个分组**只看得到名字**:收起时不知道里面是什么、当前是什么状态;
|
|
489
|
+
- 开关是「✓ 自己溜达」这种**带勾的文字**,而且点完菜单就关 —— 拨开关时菜单消失是最烦人的交互之一;
|
|
490
|
+
- 「放大一点/缩小一点」把**连续量**做成了两个离散按钮;
|
|
491
|
+
- 四个角落是四个**文字条目** —— 空间的事没有用空间的形式表达;
|
|
492
|
+
- 最常用的「专注」埋在二级;专注中菜单里**看不出还剩多久**;
|
|
493
|
+
- 7 行长得一模一样,没有分隔、没有层次、没有键盘提示。
|
|
494
|
+
|
|
495
|
+
**现在**:
|
|
496
|
+
|
|
497
|
+
```
|
|
498
|
+
DeepSeek娘 ← 头部:名字 + 版本 + 当前皮肤 +(专注中)
|
|
499
|
+
v1.31.0 · 深海女仆
|
|
500
|
+
─────────────────────────────
|
|
501
|
+
专注 25 分钟 ← 常用动作置顶;进行中时这一行就是状态 + 结束
|
|
502
|
+
专注 45 分钟
|
|
503
|
+
─────────────────────────────
|
|
504
|
+
外观 深海女仆 ▸ ← 摘要行:收起时也知道里面是什么、现在是什么
|
|
505
|
+
行为 4/5 开 ▸
|
|
506
|
+
位置 右下角 ▸
|
|
507
|
+
大小 ──────●────── 100% ← 滑块:拖动即时改;键盘 ←→ 各 0.25 档
|
|
508
|
+
─────────────────────────────
|
|
509
|
+
动作一览…
|
|
510
|
+
关于她… ← 检查更新移到这里(版本号已在头部)
|
|
511
|
+
─────────────────────────────
|
|
512
|
+
先躲起来
|
|
513
|
+
↑↓ 选择 · ←→ 调大小 · Esc 关闭
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
- **开关是真开关**:`role="menuitemcheckbox"` + `aria-checked` + 可见的滑轨,
|
|
517
|
+
点完**不关菜单**,原地更新(摘要里的「N/M 开」也跟着变);
|
|
518
|
+
- **大小是滑块**:`role="slider"` + `aria-valuenow`,指针拖、键盘调都可以,同样不关菜单;
|
|
519
|
+
- **位置是 2×2 罗盘**:四个方位按钮,当前所在的那个有标记;
|
|
520
|
+
- **版本与更新收进「关于她」**:菜单头部直接显示版本号,检查更新是弹窗里的一个按钮
|
|
521
|
+
(上下文才对得上);
|
|
522
|
+
- **三段式**:动作在上、设置在中间、信息在下,段间有分隔线;底部一行键盘提示。
|
|
523
|
+
|
|
524
|
+
预检 473 → **502 项**,冒烟 53 项(真浏览器里新增:分组展开后菜单仍在视口内、
|
|
525
|
+
关于弹窗真的在屏幕上、动作一览八张图真的解码 8/8)。
|
|
526
|
+
|
|
527
|
+
**替身(简化 DOM)这次修了三处"不忠实"** —— 它们让真代码在测试里表现不对:
|
|
528
|
+
|
|
529
|
+
1. 元素级 `querySelector`/`querySelectorAll` 与替身的 `all()`/`find()` 原来是**类名精确相等**,
|
|
530
|
+
而真实 DOM 的 `.a` 是**按类名列表**匹配 —— 于是 `wisp-menu-item wisp-menu-row` 这类行
|
|
531
|
+
在替身里"不存在"。这个坑前后踩过两次,这次统一成类名列表;
|
|
532
|
+
2. 只支持**单个类名或标签**选择器(属性选择器、复合选择器都不行)→ 于是给滑块数值与角落按钮
|
|
533
|
+
各配了一个类名,测试不再依赖替身不支持的选择器;
|
|
534
|
+
3. 测试里判断"焦点在滑块上"要**重新取当前元素**:菜单每次重画都换新元素,
|
|
535
|
+
拿之前抓到的做同一性比较会假失败。
|
|
536
|
+
|
|
537
|
+
### 1.30.0
|
|
538
|
+
|
|
451
539
|
### 1.30.0
|
|
452
540
|
|
|
453
541
|
这一版是**功能**,不是台词。
|