Files
Conor 6d518e61fc Require idb-companion 1.5.1+ on Xcode 27, drop the shim, and document it (#103)
* fix(xcode27): require idb-companion 1.5.1+ instead of shimming DEVELOPER_DIR

Upstream fixed the Xcode 27 SimulatorKit path in idb-companion 1.5.1
(facebook/idb#953 and the equivalent that landed on main): it now prefers
Contents/SharedFrameworks and falls back to the legacy path. That is the same
thing our DEVELOPER_DIR shim faked from the outside, so the shim is deleted
rather than maintained.

Verified on Xcode 27 / iOS 27.0 with companion 1.5.7 and no shim: reads and HID
writes both work, importing `common` no longer mutates DEVELOPER_DIR, and xcrun
works from inside scripts that import it (the shim used to break every `xcrun
simctl` call in the same process).

The shim never shipped - it is on main but no tagged release contains it - so
this breaks no released user.

sim_health_check.sh now diagnoses the dependency instead:
- idb CLI missing is a failure, not a warning; every tap/swipe/keystroke needs it
- idb-companion is version-checked against a 1.5.1 floor, with the exact
  `brew tap facebook/fb` remediation (it is no longer in Homebrew core)
- new check for the Xcode 27 framework layout and for stale companion entries in
  /tmp/idb/state, which wedge every later idb call with "Connection refused"
- flags and offers to remove the obsolete shim directory
- adds --json, the one script that was missing it despite SKILL.md's claim

Refs #100, #101

* docs: document the real dependency floors and the Xcode 27 traps

The Xcode 27 breakage shipped with no documentation at all, so the 1200+ star
audience had nothing to find. Worse, the documented install was incomplete:
README told users to install idb-companion but never the `idb` CLI, so anyone
following it ended up with a companion and no CLI - and every navigator.py /
gesture.py / keyboard.py call fails.

README:
- prerequisites become a table with real versions (macOS 15+, Xcode 26+,
  Python 3.12+, idb 1.5.1+) instead of "Python 3" and "IDB (optional)"
- idb is stated as required for interactive scripts, installing BOTH the
  companion and the CLI from Meta's facebook/fb tap
- calls out that `brew install idb-companion` no longer works at all, since
  idb-companion was dropped from Homebrew core - the instruction every fork,
  blog post and stale README still carries
- new "Updating idb" and "Xcode 27 notes" sections: the 1.5.1 floor, the
  silent-tap symptom, no more Simulator.app (DeviceHub.app replaced it), and
  the dead-companion `idb disconnect` recovery

SKILL.md (the file installed users actually get) gains matching requirements
and an inline troubleshooting section, so the fix is reachable without the
repo - references/ is not part of the distributed package. Also drops the link
to examples/, which does not exist.

references/troubleshooting.md leads with the Xcode 27 failure modes, and the
pre-existing "IDB not connecting" entry now says its fix does not apply to
them. Replaced `open -a Simulator` and `killall Simulator`, both dead on
Xcode 27.

Also corrected long-standing drift found while auditing: script count was 27
(README) / 21+ (DEV.md) / 22 (site) against an actual 29, and the macOS floor
disagreed between docs.
2026-09-12 08:29:47 +01:00
..
2025-10-17 14:00:50 +01:00
2025-10-17 14:00:50 +01:00
2025-10-17 14:00:50 +01:00
2025-10-17 14:00:50 +01:00