dsh-ios v0.1.0-rc.2
Pre-release
Pre-release
dsh-ios v0.1.0-rc.2
修复专版:七个真实 bug,外加发布链路首次由 CI 完整走通 / A bug-fix release: seven real defects fixed, and the first release actually published end-to-end by CI.
✨ 新增 / New
ios_sim_wait_for现在真的存在了(第 22 个工具)/ios_sim_wait_fornow actually exists (tool #22) — 工厂早已创建它、skill 剧本也教模型调用它,但插件从未注册过这个工具,模型每次调用都会失败。现已注册,等待文字出现/消失是一次内部轮询的调用,而不是手动循环ios_sim_find_text(真机上每轮 ~1.2 s)。/ The factory built it and the skill playbook told the model to call it, but the plugin never registered it — every call failed. Registered now: waiting for text to appear/disappear is one internally-polling call instead of a hand-rolled find_text loop (~1.2 s per round trip on a phone).- 真机的锁屏 / 解锁 / Siri / Lock, Unlock and Siri on a real phone — 面板设备菜单宣称真机支持这三个动作,实际点击必然 502(只实现了 App Switcher)。现在它们通过 WebDriverAgent 的
/wda/lock、/wda/unlock、/wda/siri/activate真正落到手机上。/ The panel's device menu advertised all three but every click answered 502 (only App Switcher was implemented). They now reach the phone through WDA's documented endpoints.
🐛 修复 / Fixed
- 截图不再互相覆盖 / Screenshots no longer overwrite each other — 工具层两份截图存储与面板截图路由各自维护独立计数器,却写同一个缓存目录:后写者会复用先写者的文件名,已签发的截图 URL 会回放成另一张图。每个写入者现在会跳过磁盘上已存在的文件名。/ Three independent per-udid counters shared one cache directory, so a later capture reused a name whose signed URL was still live and the old capture replayed as a different image.
- 真机上"无标签 → 自动加深 / 转 OCR"终于生效 / Auto-deepen and the OCR-fallback hint now fire on a real device — WDA 把 app 名镜像进 Application 根节点的 label,导致"树里有标签"的判定在真机上恒为真,深度自动重试(WP62)和"该应用几乎无可访问性信息 → 用
ios_sim_find_text"提示(WP63)被静默废掉。应用名不再被当作内容标签。/ WDA mirrors the app NAME into the Application root's label, so every real-device tree "had a label" and both guards were silently dead. An app name no longer counts as content. - 计数解析认识大写 W / The uppercase
Wmultiplier parses — "3.2W 赞" 现在正确解析为 32 000,而不是把 W 折进计数键。/ "3.2W 赞" now reads as 32 000 instead of folding the W into the counter key. ios_sim_logs不再丢最后一行 / The last log line survives — follow 窗口靠 SIGTERM 收尾,捕获几乎必然停在半行,之前尾部残行被静默丢弃——往往正是调用者在等的那一行。/ A follow window ends by killing the log child mid-line; the trailing partial — often the line you were waiting for — was silently dropped.- preview 热重载不再被
.build触发风暴 / Preview hot reload ignores.buildwrites — recursive watch 报告的是相对路径,旧的忽略检查永远匹配不上,用户在包里跑一次swift build会按产物数量触发重建。/ The ignore check compared whole relative paths against directory names, so a user-runswift buildtriggered a rebuild per artifact. - serve-sim 失败会说出原因 / serve-sim failures name their cause — 超时/信号终止不再显示为无用的
failed (null)。/ A timed-out or signalled child no longer reports the uselessfailed (null).
🔧 发布链路 / Release pipeline
- 本版本是首个由 CI 完整发布的版本:rc.1 实为手工发布,当时的 workflow 只命中了"版本已存在→跳过"。publish 步骤现在带上
NPM_TOKEN回退(npm ≥ 11.5 先尝试 OIDC trusted publishing,不可用才读 token),并把 npm 钉在 major 11。/ This is the first version actually published by CI — rc.1 reached the registry by hand and that run only exercised the already-published skip. The publish step now falls back toNPM_TOKEN(npm tries the OIDC exchange first), with npm pinned to major 11. - registry 已存在该版本时发布安全跳过,重推 tag 不再变红。/ Re-pushed tags skip cleanly when the version is already on the registry.
📦 安装 / Install
dsh plugin --profile web add @zseven-w/dsh-ios@next
dsh web⚠️ 说明 / Notes
- npm dist-tag:
next(latest仍指向 rc.1,正式版 0.1.0 发布时才会移动)。/ Published undernext;lateststill points at rc.1 until 0.1.0. - 15 个语言的 README 均已补上
ios_sim_wait_for的工具表行,工具计数更新为 22。/ All 15 locale READMEs gained theios_sim_wait_forrow; the tool count is now 22. - 真机路径的要求与 rc.1 相同:解锁的 iPhone、可传数据的 USB 线、开发者模式,以及本地 WebDriverAgent 源码。/ Real-device requirements are unchanged from rc.1.
Full Changelog: v0.1.0-rc.1...v0.1.0-rc.2