v1.16.2 — 模糊滑块会从指针底下跳走,落点随机写进 localStorage
补丁版。修的是 v1.16.0 自己引入的一条,v1.16.1 没看见。
症状
反复发现 magi-glass-blur 里出现没人选过的值(2、5、7 各一次)。复现出来是这样:
新加载,什么都没存 slider=22 stored=null
拖到 14 slider=14 stored=14
拖到 12 slider=12 stored=12
拖到 10 slider=22 ← 跳了 stored=10
拖到 9 slider=9 stored=9
拖到 10 的瞬间,滑块自己跳到 22。
成因
三件事叠在一起:
GLASS_DEFAULTS.blur = 10被当成「没有覆盖」的哨兵值——等于 10 就
removeProperty,让 CSS 的主题默认值生效。- 但每个主题的 CSS
--glass-blur都不一样:light 20、dark 22、MAGI 蓝 10。 - v1.16.0 为了让读数别撒谎(静止时显示 10px 而面板实际在模糊 22px),把计算
值写回了slider.value。
于是在 dark 下拖到 10,代码立刻把滑块设成 22——旋钮从指针底下跑掉了。真实拖
动时,下一次指针移动是相对跳走后的位置计算的,落点就是随机的。
顺带一处早于此的问题:「重置」写的是 "10" 而不是删除键,所以重置之后键永
远留着,把模糊钉死在滑块默认值上,主题自己的值再也回不来。
修法
哨兵彻底去掉。未设置 = 用主题的 CSS 值;存了就是显式覆盖。没有任何一个滑块位
置是特殊的。
glassSetting未设置时返回null而不是硬编码回退值——只有这样才能区分「没设
过」和「刚好设成了默认值」- 「重置」改为删除键
- 主题切换后刷新读数,否则切完仍显示上一个主题的默认值
修好后:
拖到 10 slider=10 stored=10 卡片模糊=10
重置 slider=22 stored=null 卡片模糊=22
主题切到 light slider=20 label=20px 卡片模糊=20
回归测试锁住了这个不变量:滑块默认值不得用作哨兵,重置必须删键而不是写值。
pipx upgrade --install magi-researchBrowser button — magi-browser-extension-v1.2.1.zip below.
Unzip it, open chrome://extensions, turn on Developer Mode, and use Load unpacked on the unzipped folder. It sends the page you are reading to a local MAGI queue and nothing else; nothing enters a library until you approve the batch.