docs: 优化工作台的 spec 与 6 个实施 issue(.scratch/wallpaper-optimization/)
按本仓 issue-tracker 约定落盘:spec.md 记决策与验收,issues/NN-*.md 一步一票。 01 已完成,02-06 待做。
This commit is contained in:
1 parent
09ff322fe8
commit
8ad177c822
7 files changed
+152
No files matched your search
@@ -0,0 +1,20 @@
|
||||
# 03 健壮性:初始化状态机、死代码、用户级覆盖语义
|
||||
|
||||
Status: ready-for-agent
|
||||
|
||||
## 问题
|
||||
|
||||
1. **初始化竞态(已实证)**:`SpineController.changeConfig()` 整个函数体都在 `if (this.player)` 里,
|
||||
包括状态赋值。WE 可能在 `window.load` 之前就下发用户属性,此时预设被静默丢弃:
|
||||
同一份代码、同一份属性,`load` 之后下发得到 `animation`(kv37,正确),
|
||||
`DOMContentLoaded` 时下发得到 `idle`(xilian)——背景与音乐已切到 kv37、立绘还是昔涟。
|
||||
修法:**状态先写、应用后置**;`changeX()` 无条件更新状态,只在有 `player` 时应用,加载完成时统一应用一次。
|
||||
2. `index.js` 里有一段重复的 `window.wallpaperRegisterListener`(该 API 在本机 WE 不存在),是死代码。
|
||||
3. `SpineController.adjustCanvas()` 与播放器自身的 resize 重复,且用 `getBoundingClientRect()` 写 `canvas.width` 而未乘 DPR。
|
||||
4. 用户级覆盖语义:用户自定义了音源/音量后,切换预设不得把它清回预设默认值。
|
||||
|
||||
## 验收
|
||||
|
||||
- 把"属性在 `DOMContentLoaded` 下发"这一路作为回归断言:玩家实际使用的动画必须与所选预设一致。
|
||||
- 死代码与重复 resize 移除后,对拍仍无回归。
|
||||
- 同一份预设往返切换 20 次,用户自定义音源/音量保持不变。
|
||||
Reference in new issue
Block a user