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

