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

* Development release
* Changes:
  - 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

