Current section
Files
Jump to
Current section
Files
exmobiledevice
CHANGELOG.md
CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
<!-- %% CHANGELOG_ENTRIES %% -->
## 0.9.0 - 2026-02-18
### Changed
- Replaced dynamic version resolution with a static `@version` module attribute
- Extracted `@source_url` module attribute and updated to public GitLab URL
- Fixed all `credo --strict` issues: snake_case naming, alias ordering,
zero-arity parens, and reduced cyclomatic complexity in WebInspector,
Lockdown, and ImageMounter
- Fixed documentation errors across modules (wrong arities, typos,
incorrect callback references, missing parameters in typespecs)
- Set internal modules (Diagnostics.Monitor, Diagnostics.RestartManager)
to `@moduledoc false`
### Added
- `expublish` dependency with `mix publish` alias
- `mix precommit` alias (compile --warnings-as-errors, format, credo --strict, test)
- CLAUDE.md for Claude Code guidance
## 0.8.3 - 2026-01-19
- Updated library dependencies to latest
- Minor updates for Elixir 1.19.5 and OTP 28.3 compatibility
## 0.8.2 - 2025-11-27
- ImageMounter: Correctly handle errors when failing to query an existing personalization manifest on a device
## 0.8.1 - 2025-11-25
- Do not log key details when `ExMobileDevice.Ssl` fails to connect with a host key mismatch
## 0.8.0 - 2025-11-20
- `ExMobileDevice.ImageMounter` now allows applications to provide their own mechanism for retrieving signing DDI manifests.
To override, the application needs to to set the following config item:
```elixir
config :exmobiledevice, manifest_provider: <MODULE_NAME>
```
where `<MODULE_NAME>` implements the `ExMobileDevice.ImageMounter.PersonalizedManifestProvider` behaviour.
## 0.7.0 - 2025-10-29
- Expose DDI-signing related functions
- Introduced `RestartManager`
When a device first connects to the host, the `RestartManager` will make a preemptive TLS connection to the
`com.apple.mobile.diagnostics_relay` service on the device.
If a subsequent attempt to make a request to the Diagnostics service fails, an additional retry of the
request will be made using the pre-connected SSL socket.
This aims to work around an issue where a device fails the TLS handshake with the device, preventing all
further attempts to reboot the device using the diagnostics service.
## 0.6.0 - 2025-08-07
- `WebInspector.start_link/1` can take a `fail_if_safari_running` option.
If mobile Safari is already running on the device when the WebInspector session is
created, and `fail_if_safari_running` is `true`, then `wait_for_session/2` will fail
with `{:error, :running}`. It is expected that the client will terminate the mobile Safari
process themselves, and reattempt to start the session with `fail_if_safari_running` set
to `false`
## 0.5.0 - 2025-07-17
- `ExMobileDevice.Lockdown.start_session/2` can take a `timeout` option
that will determine how long the caller will wait for a successful
session establishment
## 0.4.1 - 2025-06-10
- Move websession connection out of init to avoid blocking in start_link/1
- Websession will wait 30s for tls-upgrade before timing out
- Diagnostics calls - sleep, restart and shutdown now all take an optional
timeout parameter which defaults to 30s
## 0.4.0 - 2025-02-24
- Vendor in this package
- Replace `GenStateMachine` with `:gen_statem`
- Bump minimum Elixir to 1.17
## 0.3.1 - 2025-01-19
### Fixes
- Replace uuid with uniq
- Replace plist with pealist
## 0.2.23 - 2025-01-16
### Fixes
- Updated deps
## 0.2.22 - 2024-12-03
### Fixes
- Fix restrictive typespec in WebInspector
- Fix incorrect match in FileConduit.do_write
## 0.2.19 - 2024-06-24
### Fixes
- Fix error handling in FileConduit so that it passes through socket errors
- Fix zero-length file handling in CrashReporter
## 0.2.18 - 2024-06-20
### Fixes
- Ignore individual errors in recursive file deletion
## 0.2.17 - 2024-06-13
### Fixes
- Handle Permission Denied error in FileConduit
## 0.2.16 - 2024-05-09
### Fixes
- Return error on ssl connection failure in `ExMobileDevice.Lockdown.start_session/1`.
## 0.2.15 - 2024-04-05
### Fixes
- Fix web session creation when Safari is already running
## 0.2.14 - 2024-04-03
### Fixes
- Fix bug in disk-signing.
## 0.2.13 - 2024-04-02
### Enhancements
- Improve error handling on disk-signing failures.
## 0.2.12 - 2024-03-06
### Enhancements
- Support for mounting developer disks on iOS16 and below.
## 0.2.11 - 2024-03-05
### Enhancements
- Support for copying and clearing crash logs
## 0.2.10 - 2024-03-01
### Fixes
- Drop unhandled (pairing) messages from usbmuxd
- Improve web-inspector state machine
## 0.2.9 - 2024-02-28
### Fixes
- More github action shenanighans
## 0.2.8 - 2024-02-28
### Fixes
- Switch to more recent action
## 0.2.7 - 2024-02-28
### Fixes
- Publish from github
## 0.2.6 - 2024-02-27
### Enhancements
- Add DDI mounting support
### Fixes
- Fix muxd framing issue
## 0.2.5 - 2024-02-22
### Fixes
- Fix controlling process handling
## 0.2.4 - 2024-02-22
### Fixes
- Fix state management in ExMobileDevice.WebInspector
## 0.2.3 - 2024-02-20
### Fixes
- Fix call to ExMobileDevice.Muxd.connect/0
## 0.2.2 - 2024-02-20
### Fixes
- Fix default configuration
## 0.2.1 - 2024-02-17
### Fixes
- Fix root page in docs
## 0.2.0 - 2024-02-17
### Enhancements
- [ExMobileDevice.WebInspector] Automate web-browsing
## 0.1.0 - 2024-02-05
### Initial revision
- [ExMobileDevice.Muxd] Device enumeration and notification of attach/detach
- [ExMobileDevice.Lockdown] Retrieval of device configuration
- [ExMobileDevice.Diagnostics] Device reboot and shutdown
- [ExMobileDevice.Syslog] Syslog streaming