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

