Skip to content

Releases: ZSeven-W/dsh-ios

dsh-ios v0.1.0-rc.3

dsh-ios v0.1.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@Kayshen-X Kayshen-X released this 21 Aug 15:30

dsh-ios v0.1.0-rc.3

DSH 0.1.1 适配版:把在新宿主上"侧栏静默死亡"的插件救回来。/ The DSH 0.1.1 adaptation: the release that brings a silently-dead sidebar back to life on the new host.

🐛 修复 / Fixed

  • 在 DSH 0.1.1 上客户端永不激活 / The client never activated on DSH 0.1.1 — 0.1.1 从客户端模块图中移除了 @deepseek-ai/dsh-client-ui-slotsslots 服务改由 dsh-client-runtime 提供,槽位声明并入 ui-tool / ui-conversation)。本插件的 dsh.client.inject 仍然要求这个不存在的模块,浏览器端 loader 会永远等待:卡片、侧边栏面板、状态胶囊全部静默死亡,服务端工具却一切正常——还会把整页拖在 "Loading plugins…" 上。修复:inject 列表删除该包(peer/dev 依赖保留,details-compat 的类型增强仍需要它编译)。/ DSH 0.1.1 dropped the dsh-client-ui-slots row from the client module graph (the slots service comes from dsh-client-runtime now). Our dsh.client.inject still demanded the missing module, so the browser loader waited forever: cards, the sidebar panel and the status capsule died silently while the host-side tools kept working — and the whole page stalled on "Loading plugins…". Fixed by dropping the package from the inject list; the peer/dev dependency stays for type-only compilation.

📝 文档 / Docs

  • 全部 15 个语言 README 的验证徽标移到 DSH 0.1.1-rc.1(本版实测宿主)。/ All 15 locale READMEs now state DSH 0.1.1-rc.1 as the tested harness.

📦 安装 / Install

dsh plugin --profile web add @zseven-w/dsh-ios@next
dsh web

⚠️ 说明 / Notes

  • npm dist-tag: next。在 rc.6 时代的宿主上本版仍可运行(slots 服务同样存在)。/ Published under next; the build still runs on rc.6-era hosts.
  • 七件套 smoke(panel 333/333 等)在适配前后各跑一遍,全绿。/ The seven smoke suites ran green before and after the change.

Full Changelog: v0.1.0-rc.2...v0.1.0-rc.3

dsh-ios v0.1.0-rc.2

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

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

dsh-ios v0.1.0-rc.1

dsh-ios v0.1.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 20 Aug 10:27

dsh-ios v0.1.0-rc.1

首个 npm 发布 / First npm release.

✨ 能力 / What it does

  • 对话内的实时 iOS 模拟器 / A live iOS Simulator in the conversation — serve-sim MJPEG 串流经签名路由进入侧边栏面板,可直接在画面上点按、拖拽、旋转、回桌面。
  • USB 真机 / A real iPhone over USB — 插件在手机上构建并启动 WebDriverAgent,用内置 usbmux 客户端把控制端口与画面端口转发到 loopback,进入同一个面板和同一套工具。
  • 21 个 agent 工具 / 21 agent tools — 启动构建、按 accessibility 身份或 OCR 文本驱动 UI、读取统一日志、查看进程/backtrace/leaks,以及列表行操作。
  • 列表/信息流的行级操作 / Row-level actions for lists and feedsios_sim_ui_rows 把深层快照解析成带 frame 和计数的行,ios_sim_tap_row 按行内相对坐标操作并用计数 ±1 验证动作是否生效。真机上无法唯一识别的控件会被拒绝点击,而不是试探。
  • SwiftUI 预览热重载 / SwiftUI preview hot reload

📦 安装 / Install

dsh plugin --profile web add @zseven-w/dsh-ios@latest
dsh web

⚠️ 说明 / Notes

  • npm dist-tag: next(首发时 latest 亦指向本版本)。
  • 真机路径需要:解锁的 iPhone、可传数据的 USB 线、设备端开启开发者模式,以及本地的 WebDriverAgent 源码;插件不下载也不克隆任何东西。
  • CI 的 fixture 套件不接触真实设备——真机行为由人工验证。