Version 1.4.0
~~~~~~~~~~~~~

* Development release
  - From now on, releases will be made more frequently
* Changes:
  - Add support for MbedTLS
  - Add Reverse Proxy implementation
  - Add support for wireless pairing (AppleTV)
  - Embed 3rd party libraries for ed25519 and SRP6a
  - Fixes in idevicedebug
  - idevicecrashreport: Allow filtering crash reports by filename
  - Add idevicedevmodectl tool
  - Fixes for idevicebackup2
  - Add property_list_client_get_service_client() and service_get_connection() functions
  - Add idevicebtlogger
  - Add new idevice_events_subscribe/unsubscribe API
  - Move LIBIMOBILEDEVICE_API to public headers
  - Add afc_strerror function
  - Add libimobiledevice_version() function
  - Use libimobiledevice-glue's SHA1 implementation
  - Add support for iOS 17+ Personalized Developer Disk image mounting
  - Fix compilation on MSVC
  - Add idevice_strerror() to interface
  - Add new idevice_get_device_version() to interface
  - Add os_trace_relay service implementation
  - Fixes for idevicesyslog
  - afc: Add afc_get_file_info_plist and afc_get_device_info_plist functions
  ... and several other internal changes


Version 1.3.0
~~~~~~~~~~~~~

* Development release "Let's get the party started."
* Changes:
  - Fix Python 3 support
  - Add more lockdown error codes
  - Add new lockdownd_pair_with_options() function
  - Fix GnuTLS support with iOS 10
  - Make sure sockets only listen locally due to security reasons
  - Plug various memory leaks
  - Fix SSL version negotiation for newer versions of OpenSSL
  - Optimize lockdown pair record handling
  - Return proper error code when a lockdown pair record is missing
  - Fix building with MingGW
  - Store application information in Info.plist using idevicebackup2
  - Fix application backup handling to allow the device to restore applications
    that were installed using idevicebackup2
  - Make idevicebackup2 reboot after restore the default to allow the device to
    migrate data correctly and thus improve the restored device data state
  - Improve console frontend information output in idevicebackup2
  - Extend ideviceprovision tool to allow retrieving and removing all
    provisioning profiles
  - Fix parsing large provisioning profile using ideviceprovision
  - Fix receiving large property lists in property list service
  - Propagate lower level errors to callers instead of returning
    IDEVICE_E_UNKNOWN_ERROR
  - API: Add IDEVICE_DEVICE_PAIRED event type
  - Detect screenshot format to support png, tiff and dat formats using
    idevicescreenshot tool
  - API: Add mobileactivation service implementation
  - Wait for passcode entry if required using idevicesyslog
  - Add HDMI option to diagnostics command for idevicediagnostics
  - Fix IORegistry command for iOS 11+ devices in idevicediagnostics
  - Remove 40-digit character limit for UDID in tools to support newer devices
  - Fix broken validate command in idevicepair with iOS 11+
  - Fix OpenSSL version checks for configure target when using LibreSSL
  - Migrate latest improved common code from libusbmuxd
  - Convert README file to markdown format
  - Fix idevicecrashreport tool to work with iOS 13+
  - Fix various errors in SSL communication logic
  - API: Add preboard service implementation
  - Output hint to user to enter passcode when changing password using
    idevicebackup2
  - Cython: Fix and improve debugserver and diagnostics service bindings
  - API: Add WiFi device support via new idevice_new_with_options() function
  - API: Add idevice_get_device_list_extended() to also list network devices
  - API: Add lockdown_strerror() helper to get error representation as string
  - Add network device support to idevicesyslog and ideviceinfo tools
  - Make debug output consistently output to stderr
  - Add new idevicesetlocation tool (requires mounted developer image)
  - Add option to exit if device disconnects in idevicesyslog
  - API: Add syslog_relay_start_capture_raw() for raw syslog capture
  - Add color output and process filter support to idevicesyslog
  - API: Add companion_proxy service implementation
  - Bump dependency to libusbmuxd 2.0.2
  - Bump dependency to libplist 2.2.0
  - Improve error handling and reporting in library and tools
  - Fix various memory leaks in library and tools
  - Add "--network" and "--version" options to all tools
  - Fix socket_connect_addr() not connecting to network devices using IPv6
    in some cases.
  - Improve IPv6 "scope id" detection to fix connecting to network devices with
    link-local adresses.
  - Update man pages
  - Fix various inconsistent declarations in public headers
  - Allow OpenSSL >= 1.1.0 to use older/disallowed TLS versions fixing issues
    where pairing records were getting removed repeatingly
  - Fixed memory leaks
  - Cython: Rewrite version detection logic in configure.ac
  - Rename "--enable-debug-code" configure option to "--enable-debug"
  - Improve README.md with project description, installation, contributing and
    usage sections
  - Rename library and all related files by adding an API version resulting
    in "libimobiledevice-1.0"
  - Bump soname version
* API is UNSTABLE

Version 1.2.0
~~~~~~~~~~~~~

* Stable release "It took you so long baby!"
* Changes:
  - Require autoconf 2.64 or later
  - Remove dev tools, will return either as proper tools or website examples
  - Refactor installation proxy service implementation and normalize code
  - API: Added instproxy_lookup() to efficiently lookup app information
  - API: Added instproxy_check_capabilities_match() to check device capabilities
  - API: Added various instproxy command and status plist getters
  - API: Make debugserver_client_set_ack_mode() public
  - Fix handling of clients reconnecting in idevicedebugserverproxy which
    previously didn't work properly
  - Flush stdout for every line in idevicesyslog
  - Fix shutdown of idevicedebugserverproxy tool which could hang
  - Notify user when erroneously using idevicebackup with iOS 4 or later
  - Enable build of idevicecrashreport on WIN32
  - Fix thread handle leaks on WIN32 adding thread_new and thread_free
  - cython: Add receive/receive_timeout methods for iDeviceConnection to
    receive raw data from a connection
  - cython: Add new FILE_RELAY_E_PERMISSION_DENIED(-6) error
  - API: Refactor lockdown service internal error checking and add a bunch of
    new native errors
  - Convert int16_t macro error types into enum within common module, too
  - Add new "idevicenotificationproxy" tool to post or observe notifications
  - Fix overlong blocking in np_client_free()
  - Improve maintainability and Requires of pkg-config file
  - API: Add new LOCKDOWN_E_SERVICE_LIMIT error to detect service limit states
  - API: Remove const argv requirement for debugserver_command_new
  - cython: Add get_path_for_bundle_identifier() method to
    InstallationProxyClient
  - cython: Add DebugServerClient class to communicate with debugserver
  - Comply to strict function prototypes by using (void) instead of just ()
  - Fix notification proxy shutdown process which was incorrectly implemented
  - Fix linking problems on OS X
  - Fix missing debug output which broke with the last release
  - Unify and improve various debug messages
  - Fix re-pairing if pairing with existing pair record failed initially
  - Skip printing long plist (16kb+) files to prevent excessive debug output
  - Move a few common helpers from backup tools to common utility helper code
  - Remove incorrect flags from afc_file_open() documentation
  - Fix various memory leaks

Version 1.1.7
~~~~~~~~~~~~~

* Development release "Cleaning up the yard."
* Changes:
  - Fix broken app args, environment handling and memory leaks in idevicedebug
  - Make all tools print an error if lockdown connection fails
  - Convert int16_t macro error types into enum for better type-checking and
    for various debugging benefits
  - Avoid exporting non-public symbols for better ABI stability
  - Fix failing backup process for devices having a passcode set and entering
    lock state during the process in idevicebackup2
  - API: Added lockdownd_start_service_with_escrow_bag()
  - API: Added afc_remove_path_and_contents() for recursive deletion
  - Fix last memory leak with OpenSSL through proper library deinitialization
  - Add new idevicedebug tool to interact with debugserver on a device
  - API: Add debugserver service implementation
  - Handle new PermissionDenied error of file_relay due new security in iOS 8+
  - Fix retry loop problem when device requests 0 files in idevicebackup2
  - Add trust dialog related error codes to Cython bindings
  - Fix various memory leaks in AFC implementation
  - Fix disk image upload with latest iOS 8 in ideviceimagemounter
  - Add new "dump" command to print information about a provisioning profile in
    ideviceprovision
  - Refactor plist print helper code and move it into common module for better
    reuse accross the tools
  - Do not crash if retrieving the system buid fails
  - API: Make generic "propery_list_service_client" public
  - Moved doc comments from private to public headers
  - Fix possible segfault when using lockdownd_get_value() due to always
    returning success
  - Do not read files entirely into memory during restore in idevicebackup
  - Plug a few memory leaks and fix invalid password check in idevicebackup2
  - Add support for file sizes > 4GB on Win32 in idevicebackup2
  - Fix declaration for DllMain on Win32
  - Silence various compiler warnings
  - Fix assert within pairing logic
* API is UNSTABLE

Version 1.1.6
~~~~~~~~~~~~~

* Development release "Way too overdue."
* Changes:
  - Remove segmentation code from afc_file_read() to provide raw interface and
    more control to API consumer I/O logic
  - Implement global thread safe library initialization, especially to control
    SSL backend lifecycle
  - Major refactoring of pair record code and logic to use new usbmuxd pair
    record management interface
  - Replace user level with system wide pair record file handling
  - Bump dependency to libplist 1.11 and remove use of "plist_dict_insert_item"
  - Bump dependency to libusbmuxd 1.0.9
  - Finish pair record and trust dialog handling for iOS 7+
  - Improve AFC write performance and memory usage
  - Add support for custom output filename to idevicescreenshot
  - Fix detection and compilation for Python 3.x
  - API: Added file_relay_request_sources_timeout()
  - Fix broken HouseArrestClient class in cython bindings
  - Add new idevicecrashreport tool to retrieve crash reports and logs from a
    device
  - Prevent "Failed to restart/shutdown device" messages in idevicediagnostics
  - Link against ws2_32.dll on Win32
  - Add support for iOS 7+ disk image mounting to ideviceimagemounter
  - Add new idevicename tool to get or set the device name
  - Allow unbacking of encrypted backups with a given password to idevicebackup2
  - Remove sending "Goodbye" request on lockdown
  - Add support for newer PLIST_REAL based time type to idevicedate
  - Add note about setting time not working on iOS 6+ to idevicedate
  - Handle partial SSL reads correctly now to prevent random crashes
  - Fix duplicated output in ideviceinfo output
  - Remove a bunch of dead code
  - Fix deprecated OpenSSL "RSA_generate_key" with "RSA_generate_key_ex" which
    is available since OpenSSL 0.9.8 (July 2005)
  - Improve debug messages
  - Enforce "-fsigned-char" to fix issues on embedded platforms
  - Fix compilation with Clang/LLVM
  - Avoid versioning for shared library on Win32
  - Add experimental support for controlling cloud backup mode to idevicebackup2
  - Save EscrowBag when starting service for automatic unlocking in pair record
  - Remove pairing logic which is obsoleted by usbmuxd's preflight handler
  - Fix shutdown of SSL connection to be correct and no longer generate errors
    on device
  - Add support for GnuTLS 3.x and fix broken GnuTLS backend
  - Add extensions to generated certificates to match native ones
  - Add "systembuid" command to idevicepair
  - Allow starting service without the need for a running SSL session
  - Refactor more code into common module
  - Add option to filerelaytest to specify a source to request
  - Fix support for partial messages in webinspector implementation
  - Implement support for encrypted backups in idevicebackup2
  - API: Export SSL control functions for idevice_connection_t
  - API: Make generic service client public to allow external service
    implementations
  - Implement *_start_service() helper for easier creation of service clients
  - Add public *_SERVICE_NAME defines for each service
  - Fix a great bunch of memory leaks after intensive valgrind session
  - Security: Fix insecure use of the /tmp directory (CVE-2013-2142)
  - A bunch of memory leak fixes
  - Python: Various fixes and support for "with" statement for AfcFile class
  - Python: Add Afc2Client class to allow jailbroken filesystem access
  - Fix linking issue with newer libtool as reported for Ubuntu
  - Fix stuck thread in idevicesyslog which broke quit from within the tool
  - Add syslog_relay service implementation and use it in idevicesyslog
  - API: Add instproxy_client_get_path_for_bundle_identifier() helper
  - API: Add afc_dictionary_free() helper
  - Move thread, socket, debug and userpref code to "common" source directory
    in order to improve code reuse
  - Fix broken byte order detection in configure.ac which could lead to broken
    AFC protocol communication on platforms without endian.h (Raspberry PI)
* API is UNSTABLE

Version 1.1.5
~~~~~~~~~~~~~

* Development release
* Changes:
  - Implement automatic reconnecting in idevicesyslog
  - Refactor all services to use new base service
  - Add new generic service_client_factory_start_service() helper
  - Implement a base service that all services inherit from
  - API: Refactor use of "port numbers" into a "service descriptor" which is
    a needed change as all services must now transparently support SSL.
    Fortunately, only minor changes are needed to migrate your code properly.
  - Add experimental ideviceheartbeat to allow service checkin over the network
  - Add heartbeat service implementation to keep alive network connections
  - Add webinspector service implementation for WebKit remote debugging
  - Fix idevicebackup2 failing due to integer overflow in free disk space 
    calculation on 32 bit architectures and large disk capacities
  - Add support for encrypted and password protected backups to idevicebackup2
  - Fix major "too long filename received" bug in idevicebackup2
  - Various fixes for proper and tested WIN32 support including MinGW building
  - Fix various crashers and improve quality of idevicebackup2 tool
  - Add endianness helpers for systems lacking support
  - Fix idevicedate to work on iOS 6+
  - Add idevicediagnostics tool
  - Add diagnostics_relay service implementation
  - Add idevicedebugserverproxy tool for remote lldb debugging
  - Add ideviceprovision tool
  - Add misagent service implementation to manage provisioning profiles
  - Fix crash if $HOME is empty or not defined
  - Fix non-ASCII characters being stripped when using plist communication
  - Improve compile support for cython and check it at configure time
  - Bump cython requirement to 0.17.0+
  - Fix compilation of cython bindings
  - Python bindings now cover all C APIs
  - Fix iOS 6 compatibility for mobilesync, mobilebackup, mobilebackup2 and
    screenshotr by bumping device link protocol version number
  - Do not strip non_ASCII characters from XML plists
  - Fix possible crash when using OpenSSL
* API is UNSTABLE

Version 1.1.4
~~~~~~~~~~~~~

* Development release
* Changes:
  - Fix a bug in idevicesyslog causing the connection to close after timeout
  - Bump soname revision
* API is UNSTABLE

Version 1.1.3
~~~~~~~~~~~~~

* Development release
* Changes:
  - Bump libusbmuxd dependency to 1.0.8
  - Fix reading from syslog_relay and remove null characters
  - Relicense ideviceimagemounter and idevicescreenshot to LGPL
  - Fix a crash when using restored_client_free()
  - API: Add sbservices_get_interface_orientation()
  - Update man pages and code comments for documentation
  - Minor cleanup
* API is UNSTABLE

Version 1.1.2
~~~~~~~~~~~~~

* Development release
* Changes:
  - Add Python bindings generated by Cython
  - Bump libplist requirement to latest 1.8
  - Add support for OpenSSL with fallback to GNUTLS
  - Improvements and various fixes for Win32 and OS X build
  - Remove glib dependency
  - Improve restored implementation
  - Fix various memory leaks
  - Fix support for iOS 5 and later
* SWIG Python Bindings are removed
* API is UNSTABLE

Version 1.1.1
~~~~~~~~~~~~~

* Development release
* Changes:
  - Add new idevicebackup2 tool for full backup and restore support on iOS 4+
  - Add a workaround for a bug in iOS 4.3 affecting lockdown_get_value() which
    most prominently affected libgpod, gvfs, ideviceinfo and some other tools
  - Read ProxyDeath message to preventing obsolete messages in device syslog
  - Rework SWIG detection and includes
  - Add new idevicedate tool to get or set the clock on iDevices
  - API: Add mobilesync_clear_all_records_on_device()
  - API: Change device_link_service_disconnect() to accept a message
  - Add manpages for ideviceenterrecovery, idevicepair, idevicebackup2 and
    idevicedate
  - Add missing libgen.h include to silence compiler warnings
  - Fix a segfault that might occour if locally stored certs could not be read
  - Fix various memory leaks
  - Update documentation
* Python Bindings will get refactored completely
* API is UNSTABLE

Version 1.1.0
~~~~~~~~~~~~~

* Development release
* Changes:
  - Implement restoring backups using idevicebackup
  - Allow connecting without pairing using "ideviceinfo -s"
  - Add ideviceenterrecovery tool
  - Add mobilesync service implementation
  - Add restored service implementation for restore mode
  - Add home_arrest service implementation for document sharing
  - Add API afc_client_new_from_connection()
  - Support to fetch wallpaper in sbservices
  - Support for formatVersion 2 of iOS 4+ in sbservices
  - Add new lockdownd domains to ideviceinfo
  - Give the device time to prepare backup data to prevent abort
  - Improve idevicebackup output
  - notification_proxy fixes and new notification type
  - Silence some 64bit compiler warnings
  - Fix various memory leaks
  - Update documentation
* Python Bindings will get refactored completely
* API is UNSTABLE

Version 1.0.7
~~~~~~~~~~~~~

* Maintenance release of stable series
* Changes:
  - Fix SWIG 2.x detection
  - Fix support for iOS 5 and later
  - Flush output of idevicesyslog immediately
  - Replace deprecated GNUTLS functions properly
  - Fix segfaults in library and some tools
  - Fix memory leaks
  - Build fixes

Version 1.0.6
~~~~~~~~~~~~~

* Quick follow up release
* Changes:
  - Add ideviceenterrecovery which was missing in last release by accident

Version 1.0.5
~~~~~~~~~~~~~

* Maintenance release of stable series
* Changes:
  - Add a workaround for a bug in iOS 4.3 affecting lockdown_get_value() which
    most prominently affected libgpod, gvfs, ideviceinfo and some other tools
  - Read ProxyDeath message to preventing obsolete messages in device syslog
  - Rework SWIG detection and includes
  - Add manpages for ideviceenterrecovery and idevicepair
  - Add missing libgen.h include to silence compiler warnings

Version 1.0.4
~~~~~~~~~~~~~

* Maintenance release of stable series
* Changes:
  - Fix a possible crash in lockdownd_client_new_with_handshake()
  - Do not not check for Swig/Python if --without-swig is set
  - Fail with an error message if libgcrypt is not found
  - Pass host certificate with GNUTLS correctly
  - Fix connecting to iOS 4.2.1+ devices

Version 1.0.3
~~~~~~~~~~~~~

* Maintenance release of stable series
* Changes:
  - Terminate idevicesyslog on receive errors (like device unplug)
  - Bugfixes for idevicebackup tool
  - Hopefully the last fixes for big endian machines
  - Build fixes for FreeBSD Python support
  - Fix build on Mac OS X

Version 1.0.2
~~~~~~~~~~~~~

* Maintenance release of stable series
* Changes:
  - Backport new idevicepair tool to manage pairings
  - Fix a bug causing bad backup data
  - Silence 64bit compiler warnings
  - Plug some memory leaks

Version 1.0.1
~~~~~~~~~~~~~

* Maintenance release of stable series
* Changes:
  - Cleanup includes of files
  - Use glib instead of netinet for endianess
  - Fix installation_proxy not adding client options correctly
  - idevicebackup: better handle broken or missing plist files
  - Fix some memory leaks in pairing/handshake process
  - Fix label not being used in lockdownd_client_new()
  - Update AUTHORS, README and installation instructions

Version 1.0.0
~~~~~~~~~~~~~

* Changes:
  - Update and fix documentation for full coverage
  - Add man pages for tools
  - Extend mobilebackup interface
  - Add user data argument to notification callback function
  - Fix broken Python bindings
  - Add Python bindings for notification proxy interface
  - Add screenshotr interface and tool
  - Add mobile_image_mounter interface and tool
  - Remove HAL fdi rules

Version 0.9.7 (RC1)
~~~~~~~~~~~~~~~~~~~

* Project is now called libimobiledevice due to legal reasons
* Changes:
  - Project renamed to libimobiledevice
  - Add soname versioning for future releases
  - Fix regression causing never paired devices to not work by adding
    auto-pairing for devices in lockdownd_client_new_with_handshake
  - Add file_relay service implementation and dev test tool
  - Minor device link service fixes 
  - New idevicebackup tool with support for full and incremental backups
  - Add mobilebackup service implementation

Version 0.9.6
~~~~~~~~~~~~~

* Changes:
  - Minor public API changes to prepare for 1.0 release:
    * lockdownd_client_new -> lockdownd_client_new_with_handshake
    * fooservice_recv -> fooservice_receive
    * iphone_device_send/_recv -> iphone_connection_send/_receive
  - Rename some code for consistency
  - Refactor pairing to allow custom pair records
  - Move SSL handling out of lockdownd code
  - Refactor lockdown session handling code
  - Remove debug mask support
  - No longer do a full lockdown handshake on client_new
  - Refactor debug code to be consistent and easier to use
  - Run validate_pair by default during lockdown handshake
  - Allow retrieving the type for lockdown query_type request
  - Add new property_list_service and device_link_service abstractions
  - Detect pairing failure due to having a password set on the device
  - Implement lockdown phone activation and deactivation
  - Fix iphoneinfo not printing values in key/value mode
  - Implement lockdownd_unpair() request
  - Add more notification ids and lockdown domains
  - Implement label support for lockdown requests
  - Add new installation_proxy interface
  - Add new sbservices interface
  - Implement lockdownd_validate_pair() request
  - Add endian safety to AFC
  - Make lockdown sessions without SSL work
  - Fix linking on Mandriva Linux
  - Minor bugfixes and documentation updates

Version 0.9.5
~~~~~~~~~~~~~

* Changes:
  - Updated to the latest libplist 0.16 API
  - Fixed various minor leaks and issues
  - Updated Python bindings and module name

Version 0.9.4
~~~~~~~~~~~~~

* Changes:
  - Update to libplist 0.15 API rework
  - Update Python bindings
  - Bufixes around usbmuxd daemon usage
  - Use automake 1.11 silent rules if available
  - Various bugfixes

Version 0.9.3
~~~~~~~~~~~~~

* Changes:
  - Bump libplist requirement to 0.13 and remove deprecated code

Version 0.9.2
~~~~~~~~~~~~~

* Changes:
  - Migrate to use the new usbmuxd daemon
  - Refactor whole API
  - Add iPhone 3GS support
  - Add hard/symlink support for AFC
  - New iphone_id tool to list connected devices and get the device
    name
  - iphoneinfo now allows plist/xml output and queries by
    domain/key
  - Fix a lot of bugs/crashes, compiler warnings and comments

Version 0.9.1
~~~~~~~~~~~~~

* Changes:
  - Fix make distcheck
  - Bump libplist requirement to 0.12 and remove deprecated code
  - A bunch of autotools fixes

Version 0.9.0
~~~~~~~~~~~~~

* Changes:
  - Fix pkg-config dependancies
  - Fix Python binding generation
  - AFC cleanup and improved error handling
  - Add support for the notification proxy service
  - Add tools to show device information and relay syslog
  - More robust pairing implementation
  - Remove libiphone-initconf, SSL implementation handles it at
    runtime now
  - Fix receive of plists larger than a packet
  - Return an error if failed to start a service on the device
  - Fix usb enumeration
  - Fix udev rule to catch usb hubs, too
  - Add large file support
  - Move out plist handling into libplist and depend on it
  - Add Python bindings
  - Lots of bugfixes

Version 0.1.0
~~~~~~~~~~~~~

* Changes:
  - Use udev to set usb configuration; iphone kmod is obsolete now
  - Remove HAL mounting
  - Bugfixes

