Skip to content

2.1.3

Latest

Choose a tag to compare

@Lv-0 Lv-0 released this 28 Aug 12:04
· 3 commits to main since this release

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