0.9.0
First public release.
Added
- Device resolution by name. Anywhere a command takes a
<device>, Mirage
accepts a full name, a unique fragment of one, a UDID, a UDID prefix, or
booted. Ambiguous queries prefer the booted device, then the newest
runtime, and otherwise list the candidates instead of guessing. Omitting the
device entirely targets the booted simulator. - Full simctl surface: device lifecycle (
create,boot,shutdown,
erase,delete,rename,clone,upgrade),listandbooted, apps
(app install,app launch,app list,app container, and friends),
media and IO (screenshot,record,media add,open),push,
privacy,statusbar,ui,location,keychain,pasteboard,
watch pairing,runtimemanagement,spawn,diagnose, andlogs. - Forgiving runtime queries.
--runtime 18resolves to the closest runtime
the device can actually run, with compatibility guidance instead of simctl's
bare "Incompatible device" error. cleanup— reclaims disk by removing unavailable, stale, and duplicate
devices, showing exactly what it will delete and how much space it frees
before touching anything.disk-usage— per-runtime and per-device disk report.doctor— sanity checks for the simulator environment.completions— completion scripts for zsh, bash, and fish.--jsonon the listing commands, emitting stable, pretty-printed output.MIRAGE_DEVICE_SET/--set— routes every simctl call through an
isolated CoreSimulator device set, so CI never touches personal simulators.- Confirmation guards. Destructive commands prompt when a terminal is
attached and refuse to run without--yeswhen one isn't. - Honest exit codes:
0on success, simctl's own code on failure,64
for usage errors.