# Changelog ## 1.2.0 — 2026-10-18 窗口客户端自动化的可靠性版本。无窗口工具(`mc_headless` / `mc_bot` / `mc_blocks` / `mc_debug`)的语义完全不变。 ### 修复 - **只认真正的 Minecraft 游戏窗口**:按进程名、窗口类、`isGame` 三重判断,并显式排除 DSH/Electron 窗口(包括标题里出现 “Minecraft” 的 DSH 会话窗口)。`mc_status` 新增 `foregroundWindow`、`foregroundIsGame`、`ignoredWindows`。 - **聚焦必须验证**:`focus` / 键鼠 / 文本 / 聊天前使用 `AttachThreadInput + SetForegroundWindow + BringWindowToTop`(含 Alt 脉冲、临时置顶)并检查 `GetForegroundWindow()`;失败返回 `code:"focus-failed"`,**不再静默把输入发到 DSH 或桌面**。 - **截图只截游戏窗口**:优先 `PrintWindow(PW_RENDERFULLCONTENT)`,即使 DSH/其他窗口盖在上面也不会截入;GPU 窗口拒绝 PrintWindow 时才在验证聚焦后回退到桌面裁剪,并在返回值里标明 `method`。 - **聊天回读**:`mc_control chat` 发完消息后从客户端 `latest.log` 读取最新 ≤10 行 `[CHAT]`,返回 `chatLines`、`chatSource`;支持 PCL 窗口版日志和 Gradle dev 客户端日志。 - **解决 Minecraft 粘贴命令丢 `/` 的问题**:以 `/` 开头的聊天文本自动改用 `SendInput` Unicode 输入,不再被客户端的剪贴板安全策略去掉前导斜杠。 ### 新增 - `mc_launch` 支持 `server`(如 `localhost:25566`)、`waitInGame`、`waitGameSeconds`:优先 `--quickPlayMultiplayer`;如果 26.1 客户端忽略该参数,则用 OCR 依次点击“多人游戏 → 直连 → 输入服务器地址 → 加入服务器”,最后以窗口标题/客户端日志确认 `inGame`,不会把菜单误报成成功。 - `mc_control` 新增 `state`、`rightclick_hold`、`leftclick_hold`;`look` 新增绝对 `yaw` / `pitch`(窗口版通过 `/tp` 设置旋转,需要 op/创造模式权限);`chat` 新增 `waitMs`;`screenshot` 支持 `region`。 - 新工具 `mc_client_log`:自动探测 PCL 版本日志 / `ServerMod/client/run` dev 客户端日志,支持 `tail`、`grep`(子串或正则)。 - `mc_screenshot` 支持 `region` 裁剪,返回 `captureOrigin`、`captureWidth/Height`、`method`、`hwnd`/窗口标题。 - 新增 `lib/logs.js`、`lib/ocr.js`、`lib/menu.js`、`lib/scripts/ocr.ps1`(Windows 内置 OCR,MIT 适配自 dsh-screen-agent)。 ### 验证 完整实测记录见 [docs/client-verification-1.2.0.md](docs/client-verification-1.2.0.md)。摘要:DSH/游戏窗口识别、聚焦恢复、PrintWindow 只截游戏、窗口相对 region、`/time set day` 聊天回读、`/tp` 绝对视角、`mc_client_log`、`--quickPlayMultiplayer` 自动进服、已运行客户端 OCR 菜单进服、`state` 的 F3 坐标/生物群系/面向和物品栏识别均通过。 ## 1.1.0 — 2026-10-18 - 首个公开版本:无窗口专用服务端 + mineflayer 机器人(`mc_headless` / `mc_bot` / `mc_blocks` / `mc_debug`),窗口版 PCL2 启动 / Win32 键鼠 / 截图(`mc_status` / `mc_launch` / `mc_control` / `mc_screenshot`),CI、MIT License、README 与贡献指南。