dsh-wisp 1.27.0 → 1.29.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 +89 -0
- package/lib/client.js +454 -51
- package/lib/client.template.js +454 -51
- package/package.json +1 -1
- package/tools/smoke.mjs +79 -5
- package/verify-wisp.mjs +365 -14
package/README.md
CHANGED
|
@@ -448,6 +448,95 @@ node tools/audit-log.mjs --confirm <manifest> # 生成后:并入代理登
|
|
|
448
448
|
|
|
449
449
|
## 变更
|
|
450
450
|
|
|
451
|
+
### 1.29.0
|
|
452
|
+
|
|
453
|
+
三件和"她真的陪着你"有关的事。都不需要新素材,全是行为 + 台词。
|
|
454
|
+
|
|
455
|
+
- **夜深了她会劝你去睡。** 过了 `bedtimeHour`(默认 **23**)她换一种口气,过了入睡**两小时**
|
|
456
|
+
换成"嘴硬心软"那一档 —— 后者是社区设定里她的底色(*"我不管你,但……真的该睡了。"*、
|
|
457
|
+
*"才不是担心你,只是我不想半夜还看着屏幕。"*、*"你要是倒下,我可没有备份。"*)。
|
|
458
|
+
|
|
459
|
+
- **作息是可配的**(`bedtimeHour` / `wakeHour`,默认 23 → 5,跨零点)——
|
|
460
|
+
这既是真功能(各人作息不同),也让测试**不必伪造时钟**:把窗口套在当前那个小时上,
|
|
461
|
+
该响就得响,套偏一小时就该安静;
|
|
462
|
+
- 深度档按**入睡后经过的小时数**算,不是按"小时落在某个绕圈区间里"——
|
|
463
|
+
后者在窄窗口下会把窗外一大段时间也算成深夜(写测试时当场撞上:13 点睡、14 点起,
|
|
464
|
+
结果 13 点自己被判成"深度深夜");
|
|
465
|
+
- 菜单「行为」组里多了「**深夜劝睡**」开关,另有 `nightMs`(默认 30 分钟一次;0 = 关)。
|
|
466
|
+
|
|
467
|
+
- **你离开又回来,她记得。** 挂 `visibilitychange` 记住离开的时刻,回来按时长分两档:
|
|
468
|
+
短走一句(*"回来了。"*、*"位置我没动。"*)、长走(15 分钟以上)另一句
|
|
469
|
+
(*"你走了好久。"*、*"我还以为你把我关了。"*)。阈值 `backAfterMs`,默认 2 分钟,0 = 关。
|
|
470
|
+
|
|
471
|
+
- **连续天数。** 从今天往回数,记忆里一天不落有多长 —— 第 2 天起她会提
|
|
472
|
+
(*"我们已经连着见了 4 天。"*),到 **7 / 30 / 100 / 365** 天换一句里程碑。
|
|
473
|
+
断了就回到 1,而且**一句都不说**("连续第 1 天"很怪)。`doctor().streak` 可查。
|
|
474
|
+
|
|
475
|
+
- `doctor()` 新增 `night`(窗口 / 深度档起点 / 当前小时 / 上次提醒时间)、`streak`、`awaySince`
|
|
476
|
+
—— 不用猜"她为什么突然劝我睡觉"。
|
|
477
|
+
|
|
478
|
+
- 预检 435 → **451 项**。
|
|
479
|
+
|
|
480
|
+
- 顺手记一个测试教训:气泡只活几秒,**"推进完再看"必然看不到** ——
|
|
481
|
+
久坐提醒那节早就踩过,这次又踩了一遍。现在统一用 `watch(h, ms)` 边推进边收集。
|
|
482
|
+
|
|
483
|
+
### 1.28.0
|
|
484
|
+
|
|
485
|
+
### 1.28.0
|
|
486
|
+
|
|
487
|
+
- **菜单不再是 19 个同级条目。** 原来 6 个动作 + 4 个开关 + 4 个角落 + 5 套皮肤全平铺,
|
|
488
|
+
只有三行**不可点**的小标题当分区 —— 那不是结构,是排版。
|
|
489
|
+
|
|
490
|
+
现在顶层 **7 项**,其余收进**可折叠分组**(点一下在原地展开/收起,带
|
|
491
|
+
`aria-expanded`):
|
|
492
|
+
|
|
493
|
+
```
|
|
494
|
+
关于她…
|
|
495
|
+
动作一览…
|
|
496
|
+
▸ 外观 5 套皮肤 + 放大 / 缩小
|
|
497
|
+
▸ 行为 说句话 / 睡一会儿 / 自己溜达 / 跟随状态 / 跑完撒花 / 饿了会说话
|
|
498
|
+
▸ 位置 四个角落
|
|
499
|
+
版本与更新
|
|
500
|
+
先躲起来
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
新手势打开菜单时分组一律收起(**展开动作不能被自己的重开清掉** —— 这条写错过一次:
|
|
504
|
+
清状态原来放在 `closeMenu()` 里,而"在原地重开"正是先 close 再 open,于是刚展开的分组
|
|
505
|
+
立刻被自己收回去)。
|
|
506
|
+
|
|
507
|
+
- **两个真弹窗**(不再是塞进菜单的长条目):
|
|
508
|
+
|
|
509
|
+
- **「关于她」** —— 她是谁、为什么长这样(社区规范:深蓝渐变长直发 / 大圆环呆毛 /
|
|
510
|
+
鲸鳍耳 / 女仆装)、白米饭的来由、这一版做了什么、版本号,以及"非官方同人、与官方无关"
|
|
511
|
+
和社区项目的出处。**介绍写进插件里**,别人装完不用翻仓库;
|
|
512
|
+
- **「动作一览」** —— 当前皮肤八个动作的缩略图 + 中文名,**点一下就让她当场做给你看**
|
|
513
|
+
(先关弹窗再摆姿势,否则弹窗正好盖着她)。预览用一个到期时间挡住稳态轮询
|
|
514
|
+
(`previewUntil`),所以刚摆的表情不会在同一轮里被算回去。
|
|
515
|
+
|
|
516
|
+
三种关法:**×** / **Esc** / **点背景**。关掉即从 DOM 移除,不常驻、不参与轮询。
|
|
517
|
+
|
|
518
|
+
- **修掉两个真 bug**:
|
|
519
|
+
|
|
520
|
+
- 文档级 Esc 监听原本每次开弹窗都挂一个、而且**摘不掉**(清理函数是个空壳)——
|
|
521
|
+
改成全程只有一个,随实例销毁;
|
|
522
|
+
- 点预览格或点背景关掉弹窗后**焦点掉进 `<body>`** ✗(下一按 Enter 打不开菜单了)。
|
|
523
|
+
现在关弹窗一律把焦点交还给她 —— 这条是**真浏览器冒烟**抓到的,假 DOM 看不出来。
|
|
524
|
+
|
|
525
|
+
- 预检 400 → **410 项**,冒烟 46 → **53 项**(真浏览器里新增:分组能展开、展开后菜单仍在
|
|
526
|
+
视口内、关于弹窗真的在屏幕上、动作一览八张图**真的解码完成 8/8**、点格子会关弹窗并摆姿势)。
|
|
527
|
+
|
|
528
|
+
- 这一轮踩的坑(都记在这里,免得下次重演):
|
|
529
|
+
1. 简化 DOM **不会汇总子节点的 `textContent`** —— 分组名、弹窗段落、页脚都因此读成空串,
|
|
530
|
+
改成"文本写在带类名的元素上";
|
|
531
|
+
2. 替身的 `find()` / `all()` **会把已移除的节点也返回**,判断"弹窗关没关"必须显式认
|
|
532
|
+
`removed`;
|
|
533
|
+
3. 替身的 `all('wisp-menu-item')` 是**类名精确匹配**,多挂一个类就选不中了 ——
|
|
534
|
+
分组标记因此改放 `dataset`;
|
|
535
|
+
4. 测试里用了文件后半部分才定义的 helper(`ctxEvent`)→ TDZ,把整段套件截断过一次;
|
|
536
|
+
5. 冒烟里新插入的检查放在键盘段**之前**会扰动它依赖的焦点状态 → 挪到键盘段之后。
|
|
537
|
+
|
|
538
|
+
### 1.27.0
|
|
539
|
+
|
|
451
540
|
### 1.27.0
|
|
452
541
|
|
|
453
542
|
- **第八个情绪 `eat`:干饭。** 五套皮肤各一张,双手捧着一碗白米饭,眯眼笑。
|