dsh-feiyu-mood 0.8.1 → 0.8.2

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/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## 0.8.2 — 2026-10-30
2
+
3
+ **挂饰拖过之后,刷新会回到默认角落**
4
+
5
+ - 🐞 挂饰能拖,但位置只在本次页面里有效:按 F5 刷新又回到 CSS 里那个默认角落。
6
+ 「收起/展开」和「大小」都记在浏览器本地了,唯独位置没存 —— 拖过的人每次刷新都得再拖一遍。
7
+ - ✅ 拖动结束把左上角坐标存进 `localStorage`,启动时读回来。
8
+ - 只存 `left/top` 一套坐标:挂饰能拖到屏幕中间,这时 `right/bottom` 已经没有意义。
9
+ - 读回来先**夹进当前窗口**:窗口可能变小、屏幕可能换;而且收起态是 64px 小鲸鱼、
10
+ 大图还能放到 1.6 倍(288px),同一个坐标在不同形态下合法范围不一样。
11
+ - 改形态、拉大小滑杆、窗口 resize 时都重新夹一次并落盘。
12
+ - **没拖过的人完全不受影响**:不写 inline 的 `left/top`,CSS 的默认角落继续生效。
13
+ - 存档坏了(不是 JSON、字段不是数字、NaN)一律当没存过,回默认角落,不让挂饰消失。
14
+ - 自测:`node --check` 通过(这个改动只在浏览器端,没有 Node 侧测试)。
15
+
1
16
  ## 0.8.1 — 2026-10-30
2
17
 
3
18
  **「未分组」的会话选不到;子代理会话混进了下拉**
package/README.md CHANGED
@@ -93,22 +93,23 @@
93
93
  在 DSH 里:**设置 → 插件 → 安装**,填下面这一行;或者命令行:
94
94
 
95
95
  ```
96
- github:Yuuyuko-uu/dsh-feiyu-mood
96
+ dsh-feiyu-mood
97
97
  ```
98
98
 
99
99
  ```bash
100
- dsh plugin --profile desktop add github:Yuuyuko-uu/dsh-feiyu-mood
100
+ dsh plugin --profile desktop add dsh-feiyu-mood
101
101
  ```
102
102
 
103
- > ⚠ 上面这行会让包管理器去 **clone 仓库**,机器上没装 `git` 会报 `ERR_PNPM_GIT_FETCH_FAILED`。
104
- > 没 git 就用下面这条 **tarball 直链**,一样能装,不用 git:
103
+ > 也可以在 npm 上直接看到这个包(含历史版本):<https://www.npmjs.com/package/dsh-feiyu-mood>
104
+
105
+ > 上面那条要是碰到网络问题(npm 抽风、或者想固定某一次的代码快照),可以改用 tarball 直链,不用 git:
105
106
 
106
107
  ```bash
107
108
  dsh plugin --profile desktop add https://codeload.github.com/Yuuyuko-uu/dsh-feiyu-mood/tar.gz/refs/heads/main
108
109
  ```
109
110
 
110
111
 
111
- > 暂未发布到 npm;上架后可简写成 `dsh plugin add dsh-feiyu-mood`。
112
+ > 也发布到 npm 了:`dsh plugin add dsh-feiyu-mood`。
112
113
  > ⭐ 最省事的一条:把仓库链接贴给你自己的 DSH,说「**帮我装这个插件**」。
113
114
 
114
115
  装完 **必须重启一次 DSH**,然后进 **设置 → 鱼的心情**。
@@ -159,7 +160,7 @@ $p = "把上面 BOM=True 那一行的路径粘到这里"
159
160
 
160
161
  ```bash
161
162
  dsh plugin --profile desktop remove dsh-feiyu-mood
162
- dsh plugin --profile desktop add github:Yuuyuko-uu/dsh-feiyu-mood
163
+ dsh plugin --profile desktop add dsh-feiyu-mood
163
164
  ```
164
165
 
165
166
  > ⚠️ **必须先卸再装**:直接装可能拿到缓存里的旧副本,装完还是老的。
package/assets/widget.js CHANGED
@@ -322,7 +322,10 @@
322
322
  document.removeEventListener('pointerup', onUp)
323
323
  // ⚠ 点外面那个东西**只开关面板**,不管它是大肥鱼还是小圆 —— 形态由面板里的钮管
324
324
  if (!moved) toggle()
325
- else if (open) positionPanel()
325
+ else {
326
+ 存位置()
327
+ if (open) positionPanel()
328
+ }
326
329
  }
327
330
  document.addEventListener('pointermove', onMove)
328
331
  document.addEventListener('pointerup', onUp)
@@ -383,11 +386,58 @@
383
386
  widget.style.top = Math.min(maxY, Math.max(0, rect.top)) + 'px'
384
387
  widget.style.right = 'auto'
385
388
  widget.style.bottom = 'auto'
389
+ 存位置()
386
390
  }
387
391
  }
388
392
 
393
+ // ⭐ 0.8.2:拖过的位置要记住。
394
+ // · 只存**左上角坐标**(left/top):挂饰能拖到屏幕中间,这时候 right/bottom 已经没意义了,
395
+ // 统一成一套坐标,逻辑只剩一条。
396
+ // · 读回来先**夹进当前窗口**:窗口可能变小、屏幕可能换;而且收起态是 64px、
397
+ // 大图还能放到 1.6 倍(288px),同一个坐标在不同形态下合法范围不一样。
398
+ // 所以形态/尺寸一变就重新夹一次(下面 保持屏内() 已经在做)。
399
+ // · 没拖过的人**完全不写 inline 的 left/top**,CSS 的默认角落继续生效。
400
+ var 存位置计时 = 0
401
+ function 存位置() {
402
+ if (!dragged) return
403
+ // 拖动时每帧都写 localStorage 太浪费,攒到停手再写
404
+ if (存位置计时) return
405
+ 存位置计时 = setTimeout(function () {
406
+ 存位置计时 = 0
407
+ try {
408
+ var r = widget.getBoundingClientRect()
409
+ localStorage.setItem('fm-widget-pos', JSON.stringify({
410
+ x: Math.round(r.left), y: Math.round(r.top),
411
+ }))
412
+ } catch (e) {}
413
+ }, 200)
414
+ }
415
+
416
+ function 读位置() {
417
+ var v = null
418
+ try { v = JSON.parse(localStorage.getItem('fm-widget-pos') || 'null') } catch (e) { v = null }
419
+ if (!v || typeof v !== 'object') return null
420
+ var x = Number(v.x), y = Number(v.y)
421
+ if (!isFinite(x) || !isFinite(y)) return null // 脏数据当没存过,别让挂饰消失
422
+ return { x: x, y: y }
423
+ }
424
+
425
+ function 恢复位置() {
426
+ var p = 读位置()
427
+ if (!p) return
428
+ dragged = true
429
+ var maxX = Math.max(0, window.innerWidth - widget.offsetWidth)
430
+ var maxY = Math.max(0, window.innerHeight - widget.offsetHeight)
431
+ widget.style.left = Math.min(maxX, Math.max(0, p.x)) + 'px'
432
+ widget.style.top = Math.min(maxY, Math.max(0, p.y)) + 'px'
433
+ widget.style.right = 'auto'
434
+ widget.style.bottom = 'auto'
435
+ }
436
+
389
437
  document.body.appendChild(widget)
438
+ 恢复位置() // ⭐ 0.8.2:上次拖到哪儿就放哪儿(没拖过的照旧走 CSS 的默认角落)
390
439
  applyCollapsed()
440
+ 保持屏内() // 形态定下来之后再夹一次(收起态 64px、大图能到 288px,合法范围不一样)
391
441
  load()
392
442
 
393
443
  // ⭐ 0.7.6(她报的「收起态那个数字不刷新,得点一下才变」):
@@ -410,6 +460,7 @@
410
460
  widget.style.top = y + 'px'
411
461
  widget.style.right = 'auto'
412
462
  widget.style.bottom = 'auto'
463
+ 存位置()
413
464
  if (open) positionPanel()
414
465
  })
415
466
  })()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-feiyu-mood",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "给 AI 伙伴一个会自己判断、你看得见的心情:每轮聊完自动判断涨跌,右下角挂饰点开看数值 + 情绪 + 时间线;心情怎么告诉她(不告诉 / 只说心情 / 说她刚才那件事)和可信度门槛都能在设置里改。",
5
5
  "license": "MIT",
6
6
  "author": "Yuuyuko-uu (https://github.com/Yuuyuko-uu)",