2.1.3
EN
Fixed: windows no longer get flung to a wrong screen's edge when activated right as the app is restoring them.
- Root cause of the Raycast reproduction: while Finder was still animating its window restore, the Accessibility read and the window-server bounds sampled different moments. That transient mismatch made the coordinate-space resolver pick a wrong space, the solver concluded "window not at target", and the tile write flung the window onto the main screen's edge where the interruption guard then locked it — off-screen, never centered or tiled.
- A tile write is now gated on an AX↔CG consistency check: the position solved via the detected space must match the window server's actual bounds (24px quality gate). Mid-transition reads skip the cycle instead of writing; a stable retry judges correctly, and a window already at its target is left alone.
- New windows now follow the mouse's screen: a window created on the wrong display (e.g. opening Finder from Raycast on the external display while Finder remembered a main-screen frame) is tiled on the display you were operating. Windows you placed yourself are unaffected. New setting
newWindowsFollowMouse(default on). - Off-screen windows whose center lies outside every display anchor to the mouse's screen instead of whichever display they barely overlap.
465 tests pass. Diagnosis and evidence: docs/fix-plan-finder-tile-misjudgment.md.
中文
修复:应用恢复窗口的瞬间激活它,窗口不再被抛到错误屏幕的边缘。
- Raycast 复现场景的根因:Finder 还在播放窗口恢复动画时,辅助功能读数与窗口服务器 bounds 采样自不同时刻。这一瞬时偏差让坐标空间推断选错空间,解算得出「窗口不在目标位」,随后的平铺写入把窗口抛到主屏边缘悬空处,又被中断保护锁死——不居中、不平铺。
- 现在平铺写入前必须通过 AX↔CG 一致性校验:按探测空间解算的位置须与窗口服务器真实 bounds 吻合(24px 质量门)。过渡态读数直接跳过本周期;窗口稳定后的重试判定正确,已就位的窗口不会被惊动。
- 新窗口跟随鼠标屏:窗口创建在错误屏幕时(如 Finder 记住了主屏 frame,而你在副屏用 Raycast 打开),平铺会落在你操作的屏幕。自行放置过的窗口不受影响。新增设置
newWindowsFollowMouse(默认开启)。 - 中心落在所有屏幕之外的悬空窗口改为锚定鼠标所在屏,不再按擦边重叠偏置。
465 项测试通过。诊断与证据:docs/fix-plan-finder-tile-misjudgment.md。