Skip to content

dsh-ios v0.1.0-rc.2

Pre-release
Pre-release

Choose a tag to compare

@Kayshen-X Kayshen-X released this 21 Aug 11:46
· 9 commits to main since this 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_for now 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 W multiplier 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 .build writes — recursive watch 报告的是相对路径,旧的忽略检查永远匹配不上,用户在包里跑一次 swift build 会按产物数量触发重建。/ The ignore check compared whole relative paths against directory names, so a user-run swift build triggered a rebuild per artifact.
  • serve-sim 失败会说出原因 / serve-sim failures name their cause — 超时/信号终止不再显示为无用的 failed (null)。/ A timed-out or signalled child no longer reports the useless failed (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 to NPM_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: nextlatest 仍指向 rc.1,正式版 0.1.0 发布时才会移动)。/ Published under next; latest still points at rc.1 until 0.1.0.
  • 15 个语言的 README 均已补上 ios_sim_wait_for 的工具表行,工具计数更新为 22。/ All 15 locale READMEs gained the ios_sim_wait_for row; 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