Commit 25087e6
fix(yjsSync): 用同步恢复 _suppressLocalPush, 不用 microtask
根本 bug: applyRemoteToLocal 用 queueMicrotask 恢复 _suppressLocalPush.
但 finalizeStartup 是这个调用顺序:
1. applyRemoteToLocal() ← 这里 wasSuppressed = true (启动时), microtask 排队恢复 true
2. _suppressLocalPush = false ← 同步设
3. (调用栈结束)
4. microtask: _suppressLocalPush = wasSuppressed (true) ← 又锁死!
结果: _suppressLocalPush 永远是 true, 浏览器创建的所有节点 (Aletheia
ontologyNode + promote 的 TaskNode) 全部漏 push 到 yjs, conductor
看不见, ResultNode 永不涌现.
实测确认: window.__yjsDebug.isSuppressed() === true.
浏览器 zustand 11 nodes / 2 TaskNodes, yjs 只有 10 / 1.
修复: 同步恢复, setState 是 sync 调用 callback 也 sync 触发, suppress
已经在 setState 期间生效, 不需要 microtask 延迟.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 410da83 commit 25087e6
1 file changed
Lines changed: 6 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
173 | 178 | | |
174 | 179 | | |
175 | 180 | | |
176 | 181 | | |
177 | 182 | | |
178 | | - | |
| 183 | + | |
179 | 184 | | |
180 | 185 | | |
181 | 186 | | |
| |||
0 commit comments