CHANGES IN VERSION 0.18.2 (from 0.18.1)
=======================================

#### General
- extensive docs updates (make it ready for the new Slate docs)
- decode sequence of actions to native "swipe" method
- fix valid platform error message
- update WD dep
- fix proxying when session id is null
- allow spaces in appium folder name in reset.sh

#### Android
- allow for different input sets to mobile: find
- fix apk signing with custom keystore
- allow MultiActions without an element
- move chrome tests into their own emulator type
- fix async bug in getting xml dump


CHANGES IN VERSION 0.18.1 (from 0.18.0)
=======================================

#### General
- fix broken log options: --log, --log-no-colors, and --log-timestamp
- update docs to work with Jekyll
- change 'launch' desired cap to 'autoLaunch', same defaults
- fix installApp, launchApp, closeApp, removeApp to use correct app path
- fix bug in action handling for python client

#### iOS
- fix bug where iOS < 7.1 would try to ask instruments for available devices
- loosen up sudo check for authorize_ios so it can run without issue under sudo

#### Android
- fix bug with XML page source where it wouldn't create the dump file correctly

#### Selendroid
- fix command timeout bug


CHANGES IN VERSION 0.18.0 (from 0.17.6)
=======================================

*Important*: This is the Appium 1.0 feature-complete pre-release. Please the
discussion group for more context and details about this release and where
Appium is headed in the near future.

#### General
- disallow use of appium under sudo (except for authorize_ios)
- don't autopopulate node config host (so appium url can be set in nodeconfig)
- many build and test tweaks and fixes to improve build stability
- don't link commit hooks if we're not in a git repo
- add "accessibility id" locator strategy
- get rid of a bunch of unused grunt commands
- deprecate use of JSON page source (XML will be the standard)
- simplify reset strategy and make reset strategies available through caps. 
  There's now the default (fastReset), fullReset, and noReset.
- deprecate "tag name" locator strategy
- add real xpath support (for now under the "-real xpath" locator strategy)
- deprecate old xpath strategy
- a lot of work on appium CI
- further update new capability handling and device selection; use only the
  new caps internally
- implement TouchAction and MultiTouch APIs
- migrate all "mobile: " methods to their own REST endpoints; they are now
  deprecated
- don't allow users to send in bad platformNames; fail with an error instead
- allow app paths relative to appium root
- add command-line flags corresponding to the new desired capabilities

#### iOS
- add "-ios uiautomation" locator strategy
- make backup path for built-in apps in ios 7.0 configurable
- only count one out of the two textfields which compose an ios 7.1 textfield
- introduce a distinction between global and post-launch timeouts for
  instruments, to fine-tune flake management
- rewrite screenshot logic
- modify "mobile: scroll" to take an element argument
- fix bug where bundleID would be improperly lowercased
- allow changing of remote debugger ports with env variable
- fix bug in device launching logic that would try to launch an invalid device
  as the default
- add "mobile: pullFile" support for retrieving files from the sim folders
- update fruitstrap to a version which doesn't segfault for Japanese

#### Android
- make sure app is signed before getting MD5 hash for use in on-device install
- ensure that the app is always force-stopped before uninstalling the APK
- add "-android uiautomator" locator strategy
- fix bug involving storing android binary paths incorrectly
- add avdLaunchTimeout and avdReadyTimeout caps to fine-tune these timeouts
- retry launching AVD once if it never connects to adb
- if installing a remote apk fails, uninstall/rm, then retry


CHANGES IN VERSION 0.17.6 (from 0.17.6)
=======================================

#### General
- disallow use of Appium in sudo mode
- ensure publishes happen with a version of Node which doesn't generate 
  shasum errors in NPM


CHANGES IN VERSION 0.17.5 (from 0.17.4)
=======================================

#### Selendroid
- update Selendroid to 0.9.0


CHANGES IN VERSION 0.17.4 (from 0.17.3)
=======================================

#### General
- fix "mobile: reset"
- use the new Context API (from [the spec
  draft](https://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile))
  for switching back and forth between webviews. The window handles strategy
  will be deprecated in 1.0
- update Wd.js to use a version with context support
- sanitize desired caps so they are always a manageable type

#### iOS
- allow testing of iOS7.1 in Appium's testsuite/test.sh
- don't error out of pref path finding too soon if there are multiple dirs

#### Android
- fix "mobile: push"
- fix fastReset going undefined between sessions
- add --avd-args server param to pass args to avd on boot
- various fixes for starting avds, including allowing multiple emulators to be
  running
- fix getElement() to set isElement to false instead of throwing
- fix touch actions by fixing leaking state across executions
- remove fastClear and run `pm clear` on fastReset

CHANGES IN VERSION 0.17.3 (from 0.17.2)
=======================================

#### General
- add new desired capabilities handling to conform to the Selenium 3 spec. Use
  of old desired capabilities will now be deprecated. See [the spec
  draft](https://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile) for more information

#### Android
- fix process detection
- make sure temp dir exists before writing zipaligned apk to it

CHANGES IN VERSION 0.17.2 (from 0.17.1)
=======================================

This is simply a release to make Appium downloadable on npm.

CHANGES IN VERSION 0.17.1 (from 0.17.0)
=======================================

#### General
- move toward CI: build appium and run reset.sh on Travis

#### iOS
- pass quiet flag to fruitstrap when in quiet mode
- update appium-instruments (which fixes retry behavior)

#### Android
- fix uninstall detection


CHANGES IN VERSION 0.17.0 (from 0.16.0)
=======================================

#### General
- fix maxBuffer error in installApp command
- rearchitect device extraction and configuration from args/caps, and add lots
  of unit tests
- show non-default server params in server log for easier debugging
- add --command-timeout as a server arg
- don't ever use sudo to install npm submodules
- ensure appium's CWD is always the appium dir
- clear out commandTimeout between sessions, so subsequent sessions don't count
  the session launching time as command time
- set npm submodules to track published branches
- relax requirements for unpacking zipfiles and finding app names

#### iOS
- handle both binary and xml plists when changing ios settings plists
- break out appium-instruments into its own npm package
- fix bug where command line --force-iphone or --force-ipad wouldn't set
  device. This should fix issues with Appium.app
- add --keep-keychains server arg / keepKeychains desired cap in order to 
  disallow deletion of Keychains dir
- bring reset behavior back to what it was before location services / settings
  updates, so that with the default reset, most directories are still cleared
  out
- use actual current ios sdk in reset.sh
- create plist basedirs if they don't exist
- add processArguments cap to pass args to AUT
- make --merciful the default
- require bundleId when using location services caps
- update UICatalog test app for 7.1
- fix duplicate textfield issue in iOS 7.1
- use new instruments `- w` param in iOS 7.1 to set device type
- add location and contact alert request buttons to TestApp

#### iOS+Safari
- update initial webview navigation logic to work on 7.1
- if we start with a real webview, don't try to nav to webview through favs

#### Android
- added support for 'direction' in scrollTo
- fix source command
- add longClick by position and duration
- fix reset.bat issues on Windows
- updated Windows installation instructions
- added --udid flag to reset.sh/bat, so it can uninstall from specific devices
- added support for touch{Down|Up|Move}
- add "mobile: push" and "mobile: pull" commands to send files to/from device
- ensure apks are always run through zipalign
- parse launch package and activity from apk, so that `app-package` and
  `app-activity` caps are no longer required
- use better version of `isAppInstalled`

#### Chrome+Android
- update bundled chromedriver to 2.9
- add enablePerformanceLogging cap


CHANGES IN VERSION 0.16.0 (from 0.15.0)
=======================================

#### General
- auto-configure the host and port for nodes in an appium grid
- fix usage of temp folders on windows/linux
- allow better usage of reset.sh in windows git-bash
- add linking of pre-commit hook in reset.sh so everyone runs it

#### iOS
- fix regression where special keys wouldn't be sent
- add `mobile: scroll` with direction: up/down/left/right to scroll views
- display correct error when app install/uninstall fails on real device
- update TestApp to show location services enabled status
- add `locationServicesAuthorized` cap
- add `locationServicesEnabled` cap
- add `safariIgnoreFraudWarning` cap
- add `safariAllowPopups` cap
- update uiauto js to retrieve references to app/windows dynamically every time

#### iOS+Safari
- wait longer for webviews to appear in ios7
- return latest window with getWindowHandles()
- move hardcoded atoms out of appium into its own npm module which builds them
- add `nonSyntheticWebClick` cap to use atoms for click in ios7

#### Android
- fix installing unlock app on windows paths with spaces
- add test coverage mechanism
- don't fail the test if we can't find strings.xml in an apk
- add hybrid support for webviews in 4.4+ apps
- fix `mobile: launchApp`

#### Chrome+Android
- bundle chromedriver into appium itself, remove system dependency

#### Selendroid
- remove requirement to manually update selendroid test apk path in test code
- update selendroid (with maven 3.1.1 requirement)


CHANGES IN VERSION 0.15.0 (from 0.14.2)
=======================================

#### General
- fix for issue where logger would log colors even when asked not to
- stricter jshint rules enforceable from editor
- reformat/restructure test suite
- handle previously-unhandled errors when using spawn()
- fix startup bug (status object being taken as session id)
- clear sessionOverride instance var when cleaning up session
- fix regression where appium git revision wasn't shown in server output
- various testsuite tweaks/fixes

#### iOS
- don't wait 30s for instruments to terminate
- use SIGKILL for instruments again
- allow ios logs to be not found without crashing appium
- allow automation of settings app via 'app: settings' cap
- don't crash if IDevice init fails (when requesting real device)
- don't try to remove app if it's not on the device
- escape single quotes for id search
- lint the uiauto js code
- allow accented characters in send_keys()
- delete the entire sim folder when using --full-reset (before & after)

#### iOS+Safari
- allow safari to pre-launch
- don't tap apple button to get into webview on real device safari
- don't use synthetic click on real device safari
- fix undefined window handle bug
- fix safariLauncher crashes

#### Android
- add new mobile methods: toggleData, toggleFlightMode, toggleWifi,
  toggleLocationServices
- convert uiautomator error stream to string
- use a better method for finding build-tools and platform-tools dirs
- implement new version of longClick
- add `mobile: find` example
- return element's classname by selenium `tag_name` method/property
- add `app-wait-package` desired cap, to be used in concert with
  `app-wait-activity`

#### Chrome+Android
- fix unlock errors
- fix port-in-use bug which prevented automation of multiple chromes on
  multiple emulators

#### Selendroid
- upgrade to 0.8.0


CHANGES IN VERSION 0.14.2 (from 0.14.1)
=======================================

#### General
- fix bug that prevented appium from starting in ios

CHANGES IN VERSION 0.14.1 (from 0.14.0)
=======================================

#### General
- fix bug that prevented appium from pre-launching without specified device

#### iOS
- when alert title is null, return text instead
- add framework for setting iOS and app preferences via plists
- add `enableLocationServices` desired cap for enabling/disabling location
  services on the simulator

#### Android
- fix fast reset/clear logic to not fail when remote apk doesn't exist

#### Selendroid
- actually wait for app-wait-activity instead of app-activity


CHANGES IN VERSION 0.14.0 (from 0.13.0)
=======================================

#### General
- add ability to set launch timeout from command line
- require 'device' cap and fail without it
- bring back appium shell
- add new node examples
- add troubleshooting docs in Chinese
- fix app download suffix issue
- major refactor of test code

#### iOS
- delete cache data for all versions of sim
- fix sporadic DOM corruption issue
- make reset.sh more Xcode 4.6 friendly
- add flag to show simulator logs in-line with appium logs
- add cap for automatically accepting photo permission alerts
- update appium doctor to read new auth db value
- keep track of ios crash logs and make available through selenium interface
- cleanup app state pre-test and post-test
- fix installing/removing .app (instead of .ipa)
- escalate to SIGKILL if instruments doesn't respond to SIGTERM
- add cap for using native instruments lib
- return accessibility hint as 'hint' attribute

#### Android
- fix AVD startup bug
- better error handling in element finding code
- update ApiDemos app with webview
- support doing web testing against stock browser on 4.4
- increase support of android 4.4 toolchain
- fix multiple device issue
- implement `mobile: background` for android/selendroid
- fix custom keystore unzip call stack issue

#### Chrome+Android
- add ability to deal with a different kind of session redirect
- kill chromedriver before starting it up again to clear out ports

#### Selendroid
- re-instate closeApp and removeApp
- fix issue where selendroid would crash based on activity mangling,
  resulting in a mysterious connection reset error
- upgrade to 0.7.0
- show selendroid logs in appium output


CHANGES IN VERSION 0.13.0 (from 0.12.3)
=======================================

#### General
- add sauce reporting to ruby example
- normalize all ruby examples
- don't allow linux platforms to run ios doctor checks
- allow building of single platforms in reset.sh (don't delete other platforms)
- fix bug with --show-config & npm
- removed some unused tests
- remove retry support from appium test harness
- catch grid syntaxerror issue
- make sure gappium tests actually get run

#### iOS
- update docs for setting up ios-webkit-debug-proxy
- fix authorize_ios
- make sure setLocale doesn't run on real devices
- give webviews a bit of time to show up before we say they aren't there
- fix the auth db doctor check to work for 10.7
- when launching simulator without instruments, wait for sim logs
- kill zombie sim daemon launchers
- update mobile: reset
- automatically retry launching instruments if it flakes out. The number of
  retries can be set with `-r N` or `--backend-retries N`, where `N` is
  the number of retries, including 0.
- add support for automating real Safari (and other built-in apps) in iOS7
- remove support for using iwebview as a Safari replacement
- when running mobile safari tests, automatically detect ios version
- update i-w-d for compatibility with xcode 5.1 / ios 7.1

#### Android
- remove dependency on grep for real devices
- add 19.0.0 to possible build paths
- add tests for apk downloading and fix apk downloading issue
- check for API level >= 17 for uiautomator and fail sooner if not
- fix issue where calculating md5 of app would use too much memory, for large
  apps
- fix bug with checking whether app already existed on device

#### Selendroid
- give useful error message if user tries to run a uiautomator-based
  "mobile: " command in selendroid
- update selendroid


CHANGES IN VERSION 0.12.3 (from 0.12.2)
=======================================

#### General
- reset command timeout during mobile: reset
- fixes for strategy validation ('dynamic' and 'class name' are valid)
- add --show-config flag to dump appium config and exit
- add option to set newCommandTimeout to 0 or false to disable it entirely
  rather than working around it by setting a high value
- refactor server/main.js -- things were getting ugly
- fix issue where ForceQuitUnresponsiveApps would try to run even on non-Mac
  systems

#### iOS
- change default device for iOS 6 to "iPhone" (non-retina)
- change Xcode 5.0.1 warning message to indicate an upgrade is possible now
- add --default-device flag to allow instruments to launch the sim like it
  used to
- get rid of deprecated authorization strategy code
- include ForceQuitUnresponsiveApps output in appium log
- add --merciful (-m) flag to avoid running ForceQuitUnresponsiveApps. Show
  Instruments a bit of mercy...or don't.

#### Selendroid
- upgrade Selendroid to 0.7.0


CHANGES IN VERSION 0.12.2 (from 0.12.1b)
=======================================

- None (npm fix release)

CHANGES IN VERSION 0.12.1b (from 0.12.1)
=======================================

- None (npm fix release)

CHANGES IN VERSION 0.12.1 (from 0.12.0)
=======================================

#### General
- add appium doctor for checking system config issues that prevent appium 
  from working properly. Run with `node bin/appium-doctor.js`, or
  `appium-doctor` if installed via NPM, or via the GUI in Appium.app
- fail sooner if user passes in bad locator strategy
- fix app extracting logic

#### iOS
- fix locale settings logic
- fix 64-bit device string
- fail with a nicer message if xcrun can't find instruments
- allow iwebview tests to automate https sites
- kill simulators before launching new ones
- automatically force quit unresponsive instruments processes


CHANGES IN VERSION 0.12.0 (from 0.11.4)
=======================================

#### General
- make sure there's no color in console when --log-no-colors is used
- add more chinese docs
- allow periods in xpath node names
- update style guide
- bring all NPM dependencies up to date

#### iOS
- mobile web: doc updates
- mobile web: make sure window.close() works on real devices
- mobile web: connect to most recent webview instead of first
- allow uiauto to get path to node binary from `node_bin` key in .appiumconfig
- fix automatic UDID detection
- improve webviewapp to be a safari replacement; can now be used for mobile
  web automation using `app: iwebview`
- use `deviceName` cap to select specific iOS device
- mobile web: automatically accept popup window alerts
- give informative error message if ideviceinstaller isn't present
- add a wait after flick calls so client doesn't regain control before flick
  has finished

#### Android
- make sure chrome tests don't require package/activity
- make sure we force-stop apps before starting them
- fix issue with checking for package/activity for chrome
- make sure to kill any running uiautomator processes before test
- add `fastClear` desired cap, default true. If false, uses reinstall
  instead of `pm clear` to reset an app
- anytime we call `dumpsys windows` when checking for screen lock, dump output
  to $APPIUM_HOME/.dumpsys.log so we can learn more about error cases


CHANGES IN VERSION 0.11.4 (from 0.11.3)
=======================================

#### General
- add ruby scrollTo example

#### iOS
- fix dismissAlert / acceptAlert on ios7
- make instruments logging quiet by default (put verbose=true in
  ~/.instruments.conf to re-enable)
- fix safarilauncher shutdown issue
- add tests for setting slider values
- set ios sim language using desired caps
- add more error handling in instruments_client

#### Android
- fix issue with adb path and quote truncation
- fail with a nice message if app activity/package are not sent in

#### Selendroid
- fix keyevent
- add command timeout tests


CHANGES IN VERSION 0.11.3 (from 0.11.2)
=======================================

#### General
- remove wiki
- various doc updates
- reset command timeout for proxied devices (incl selendroid)
- translate docs to Chinese
- make desired capabilities returned by /session/:id non-hard-coded

#### iOS
- add support for sim and devices for safari launcher
- major refactor of ios startup cascade
- fix tracetemplate detection logic
- add ability to select code-signing identity for safari launcher
- use securitydb for authorization on 10.9
- expose 'syslog' logs through selenium log interface

#### Android
- various control flow/subprocess fixes
- don't uninstall app when --no-reset is used

#### Selendroid
- update selendroid version



CHANGES IN VERSION 0.11.2 (from 0.11.1)
=======================================

#### General
- fix bug where running `appium` after installing via npm would error out
  because the logger was not initialized correctly
- fix bug in reset.sh where setting --real-safari would cause android et al
  not to build


CHANGES IN VERSION 0.11.1 (from 0.11.0)
=======================================

#### General
- fix launch timeout bug
- update travis CI to use newer version of node
- remove .appiumconfig before running reset.sh
- update reset.sh to build safarilauncher for real devices only when
  passing in the --real-safari flag
- made test.sh sh-compatible
- update all example code to use correct desired capabilities
- don't set content-length header for http POSTS with no body
- add more desired caps to docs
- expand on android setup for mac osx in docs
- remove multiple device handling code--appium just does one device at a time
  per server
- handle command timeouts centrally rather than per-device
- add --log-timestamp and --log-no-colors options to server

#### iOS
- fix sim control authorization on mavericks
- copy instead of symlink xpath/status into uiauto for non-breaking npm install
- fix cookie methods error case in mobile safari
- fail with an error message if user is on xcode 5.0.1 since it comes with
  a broken instruments binary

#### Android
- don't uninstall app on fast reset
- fix crash that occurred when no devices were connected
- fix unlock logic and change order of regex search
- correctly handle responses for element{Displayed|Enabled|Selected}
- refactor adb/android/uiautomator startup/shutdown logic to make
  callback-based
- kill uiautomator if the startup cascade for android fails, so it doesn't
  zombify


CHANGES IN VERSION 0.11.0 (from 0.10.4)
=======================================

#### General
- make tempdirs uniquely named
- massive code reorganization
- retry getting a session in testsuite to avoid flaky fails

#### iOS
- update ios alert handling
- use safariLauncher without 20/30 secs timeout
- allow .ipa extension for local apps

#### Android
- clean app using `pm clear` instead of clean.apk
- massive refactor/rewrite of android/adb code
- fix dependency download error
- ensure all apks are signed


CHANGES IN VERSION 0.10.4 (from 0.10.3)
=======================================

#### iOS
- add callback for remote debugger socket disconnect to avoid race conditions

#### Android
- allow _ in package name
- add timeout for orientation change


CHANGES IN VERSION 0.10.3 (from 0.10.2)
=======================================

#### General
- this is a bugfix release

#### iOS
- compile the i-w-d shim correctly for ios7


CHANGES IN VERSION 0.10.2 (from 0.10.1)
=====================================

#### General
- update docs
- README rewrite

#### iOS
- allow spaces in xcode path
- completely reset and restart simulator between sessions
- turn CA_DEBUG_TRANSACTIONS on
- enable `authorize_ios` on Mavericks
- fix bug making handling alerts take longer than necessary

#### Android
- update clean.apk
- refactored setOrientation
- fix screenshot method
- implement pinch in / out
- upgrade unlock.apk
- use pm uninstall/install in reset

#### Windows
- lots of reset.bat improvements
- make some more paths windows friendly


CHANGES IN VERSION 0.10.1 (from 0.10.0)
=====================================

#### Android
- add hybrid app docs
- fix unlock.apk for android 2.3
- get unlock.apk into build/ so prebuilt packages can use it

#### Selendroid
- make unlock.apk work with selendroid
- change remote url for selendroid submodule
- update selendroid to 0.6.0


CHANGES IN VERSION 0.10.0 (from 0.9.1)
=====================================

#### General
- update contributor style guide
- add some troubleshooting tips to doc
- update test.sh for a better testing flow

#### iOS
- autodetect tracetemplate rather than bundling with appium
- choose version of instruments-without-delay based on xcode version
- get rid of --ios-sdk flag in reset.sh since appium now autodetects

#### Android
- fix find elements by ID
- update clean.apk
- update touchevent for longpress
- add unlock.apk which is a more robust device unlock solution
- enable mobile chrome support on windows
- better support for tapping invisible elements


CHANGES IN VERSION 0.9.1 (from 0.9.0)
=====================================

#### General
- add desired caps doc
- moveTo defaults to 0.5, 0.5
- add some more node/yiewd examples
- beefed up test.sh

#### iOS
- fix issue with finding ids
- add --ios-sdk flag to reset.sh to choose between 6.1/7.0
- various ios 7 compatibility fixes
- significant refactor of ios session lifecycle code, fixing various issues
- add automatic UDID detection
- attempt to tap element's coordinates when typical method doesn't work
- support more types of zip archives

#### Android
- restart adb up to 10 times instead of 2
- fix --avd launching bug
- fix swipe steps/duration logic (note: will affect test behavior)
- support metastate for keyevent

#### Phonegap
- fix submodule issues

_Historical Note_: This version of Appium was published by @jlipps in a moving
vehicle on a drive from Krakow, Poland to Warsaw, Poland. Thanks, @bkobos, for
the chaffeurship and wi-fi!


CHANGES IN VERSION 0.9.0 (from 0.8.5)
=====================================

#### General
- update troubleshooting doc
- fix app unzip issue
- remove app/apk files from zip path before appium starts
- fix location of UICatalog in reset.sh
- fix reset.sh android device matching
- update ruby examples
- add chrome example in node
- improve python example code
- begin to migrate tests from wd to yiewd

#### iOS
- respond to the last command even if instruments crashes
- don't attempt to reset real devices
- update instruments-without-delay with ios7 support
- add findById support (uses localization strings)
- add mobile: getStrings
- support setting value for sliders and switches with sendKeys()
- add preliminary support for ios7 with a different tracetemplate
- make mobile: localScreenshot more robust by fixing race condition
- add phonegap example

#### Android
- don't require 'avd' to be set in order to install/uninstall to android
- dynamic find can use classmap aliases
- make it easy to run multiple android devices simultaneously
- support for dragFrom / dragTo functions in API level 18
- use resource-id for finding elements (findById)
- make getSize available
- make desired cap for compressedLayoutHierarchy
- add new version of unsign.jar
- fix stopCapture bug
- remove some deprecated methods (xmlKeyContains, etc)
- add mobile: getStrings
- always return true for click() (uiautomator bug)
- fix getAttribute to return strings instead of bool
- fix tests for use with now-required 4.3 emulator
- add phonegap example

#### Selendroid
- track selendroid dev branch instead of master
- upgrade to selendroid 0.5.0

#### Windows
- update docs
- some windows compat fixes


CHANGES IN VERSION 0.8.5 (from 0.8.4)
=====================================

#### GENERAL
- reorder problematic async calls (issue #1000!)
- misc refactoring

#### Android
- allow install/uninstall without device id
- fix race condition in starting chromedriver

#### Selendroid
- update selendroid version
- fix issue preventing errors from proxying correctly


CHANGES IN VERSION 0.8.4 (from 0.8.3)
=====================================

#### GENERAL
- some documentation updates
- give appium server a big http timeout so it doesn't drop connections

#### Android
- make sure chromedriver tries to restart adb if it fails the first time
- add logcat retrieval for android and selendroid

#### IOS
- allow use of --ipa and --app flags together
- try out a fix in mechanic.js for the (null) tap issues


CHANGES IN VERSION 0.8.3 (from 0.8.2)
=====================================

#### GENERAL
- update various documentation (gestures, inspector tutorial, README)
- allow dashes in bundle/package IDs
- fix bad address startup error message
- use native function.bind() throughout instead of a mix of scoped objects
  and underscore.bind()

#### Android
- use UiAutomator for back() instead of keyevent
- use UiAutomator for keyCode instead of adb shell
- use UiAutomator for screenshot instead of adb shell

### IOS
- add some more mechanic aliases (keyboard, key)
- add pinch/zoom gestures
- add Java example for automating mobile safari
- automatically accept location services dialogs if we can access them
- accept text-based Info.plist files in addition to binary ones
- use reset.sh to download UICatalog rather than node/grunt


CHANGES IN VERSION 0.8.2 (from 0.8.1)
=====================================

#### GENERAL
- make sure build/ is deleted by reset.sh
- re-publish without extraneous artifacts in build/


CHANGES IN VERSION 0.8.1 (from 0.8.0)
=====================================

### GENERAL
- update java examples to show correct use of JavascriptExecutor
- fix parser bug that prevented launching on windows
- fix missing parameter generating exceptions in testsuite
- fix more stdout maxBuffer errors
- fix android tests to use new activity style
- return timeout in set timeout commands

### IOS
- fix mobile safari alert-handling issues
- attempt to capture and resolve location services popup using desired cap

### ANDROID
- require shortcut activities to start with ".", allowing fully-qualified
  activities with packages different from the main appPackage
- if appium fails to launch activity with ".", it will retry
- allow downloaded apps to end in .apk as well as .zip
- fix xpath parser error not allowing widget packages to be used
- add longClick command
- added JUnit and TestNG examples
- support ChromiumTestShell as well as Google Chrome for Chrome tests

### SELENDROID
- fall back to `am start` if Selendroid doesn't successfully launch the app


-------------------------------------
CHANGES IN VERSION 0.8.0 (from 0.7.3)
-------------------------------------
[GENERAL]
- bump maxBuffer for various subprocesses
- automatically re-register appium with grid if it disconnects
- augment style guide
- allow appium tests to read appium server port from $APPIUM_PORT

[IOS]
- add support for locking device for X seconds
- add support for backgrounding app for X seconds
- make finding node/instruments_client more robust for instruments context
- mobile methods for installing/uninstalling apps to device
- add shortcut for UIACollectionCell and UIATableCell
- ensure isEnabled returns a boolean value

[ANDROID]
- add mobile: searchId method to search for string by ID
- add mobile: resolveId method to resolve strings
- fix activity detection to be more allowing of different strings
- enable keystore for using different certs
- fix issue when large messages are transferred from bootstrap
- fix takesScreenshot capability
- add long tap method
- make screenshot work on windows
- fix scrollTo support

[CHROME]
- add support for automating Chrome on Android!

[SELENDROID]
- update selendroid to 90aef5d

-------------------------------------
CHANGES IN VERSION 0.7.3 (from 0.7.2)
-------------------------------------
[IOS]
- bugfix: authorize_ios needed #!

-------------------------------------
CHANGES IN VERSION 0.7.2 (from 0.7.1)
-------------------------------------
[GENERAL]
- make sure reset.sh checks for JAVA_HOME set for android/selendroid
- add mobile: reset docs
- alias POST /touch/click to POST /click

[IOS]
- fix discrepancy between isDisplayed() and isVisible() and isEnabled()
- use new Automation.tracetemplate
- fixes for checking alerts in webviews
- page source now gets all windows, not just main window
- allow custom node path by setting NODE_BIN in a settings file
- add authorize_ios binary to npm install so npm users can authorize their ios
  sim

[ANDROID]
- use path.resolve in a cross-platform way

[SELENDROID]
- fix use of adb from within selendroid
- keyevent support
- fix app-wait-activity

-------------------------------------
CHANGES IN VERSION 0.7.1 (from 0.7.0)
-------------------------------------
[SELENDROID]
- update to new version with new build instructions
- make selendroid port configurable

[WINDOWS]
- fix use of exec and spawn so external commands work

-------------------------------------
CHANGES IN VERSION 0.7.0 (from 0.6.1)
-------------------------------------
[GENERAL]
- allow new session requests to override current session; this can be disabled
  with the --no-session-override flag
- make sure reset.sh fails if android bootstrap can't build
- make --no-reset do what it's supposed to do, and fix description in docs
- check to make sure conflicting arguments aren't passed to the server before
  launching
- removed deprecated flags completely (hence the minor version bump)
- bringing some error messages into line across platforms
- fix some issues with grunt building functions

[ANDROID]
- add find element by ID (parses strings.xml)
- remove a sleep in bootstrap server that caused delays
- make sure app is uninstalled when not using fast reset
- make sure AndroidManifest.xml.apk is writable (for npm installed appium)
- make sure device wakes up / unlocks before running test
- add set geo location support
- clean up and fix issues relating to mid-session bootstrap.jar restart
- app-wait-activity now takes comma-separated list of valid activities

[IOS]
- fix some tests
- fix mobile: reset

-------------------------------------
CHANGES IN VERSION 0.6.1 (from 0.6.0)
-------------------------------------
[GENERAL]
- started work on mobile_methods.md doc
- added hardcore mode to reset.sh that will refresh uicatalog inter alia
- ios-webkit-debug-proxy docs 
- appium now registers correctly with selenium grid
- better bundle/package detection

[IOS]
- mobile: setLocation and POST /location for setting geolocation
- updated tests to work with new uicatalog version
- allow registering a websocket handler for alerts
- escape sendKeys values so you can send '
- fixed up tests a little bit

[ANDROID]
- fix fast reset race condition
- fix lack of AndroidManifest.xml.src in npm
- allow registering a websocket handler for alerts
- added method for getting location of element
- fixed package name for webviews

-------------------------------------
CHANGES IN VERSION 0.6.0 (from 0.5.2)
-------------------------------------
[GENERAL]
- initial Windows appium support (Android-only)
- reset.sh no longer fails silently if it errors
- added reset.bat for windows
- get status now returns actual appium version
- make sure reset.sh uninstalls android test apps if emulator is running
- include the git revision in the status object and in the logs at startup
- misc bugfixes

[IOS]
- ability to talk to mobile Safari on a real device over USB
- added native back() method
- sendKeys now only taps on field if it doesn't already have focus

[ANDROID]
- find by name checks to see if it found the element
- find by xpath no longer returns duplicate elements
- add support for ADT 22
- add "mobile: waitForPageLoad" that waits for indicators to clear
- fix scrollTo

[SELENDROID]
- build selendroid modded servers in /tmp for npm
- fixed issue with running tests for multiple apps sequentially

[ROBOT]
- initial support for robot automation (robot intercepts tap etc)

[APPIUM.EXE]
- not strictly part of appium, but the Windows GUI has arrived in beta!

-------------------------------------
CHANGES IN VERSION 0.5.2 (from 0.5.1)
-------------------------------------
[IOS]
- fixed regression in mobile safari pre-launch

-------------------------------------
CHANGES IN VERSION 0.5.1 (from 0.5.0)
-------------------------------------
[GENERAL]
- updates to python examples
- refactored configuration code
- initial work making Appium's node code windows-compatible
- more lenient treatment of relationship between $HOME and system username

[IOS]
- fixing webview not waiting for page loading on url nav issue
- added node-idevice which streamlines installing .ipas on real devices
- implement scrollTo
- fixed bug in xpath code which returned last element first

[ANDROID]
- add some docs for installing HAXM
- add scroll_into_view for mobile: find
- completed android element class map

[SELENDROID]
- http timeout tweaks


------------------------------------
CHANGES IN VERSION 0.5.0 (from 0.4.1)
-------------------------------------
[GENERAL]
- significant change for command-line params for appium:
    - --without-delay is now on by default. to turn it off, use
      --native-instruments-lib if you don't want it
    - --fast-reset is now on by default. to turn it off, use --full-reset
    - --verbose is now on by default. to turn it off, use --quiet


-------------------------------------
CHANGES IN VERSION 0.4.1 (from 0.4.0)
-------------------------------------
[GENERAL]
- added --dev flag to reset.sh to optionally include test apps / dev deps
- added --verbose flag to reset.sh to optionally spew info (was default)
- reset.sh now puts all binaries in /build so it can be packaged and reused by
  npm et al

[IOS]
- added more Java examples

[SELENDROID]
- updated selendroid to 56581e27b45c3a4483d89701fc893ac37b172e46


-------------------------------------
CHANGES IN VERSION 0.4.0 (from 0.3.1)
-------------------------------------
[GENERAL]
- more python examples including for android
- node android code example
- migrated wiki to appium/docs
- added troubleshooting docs
- added auto-tagging of repo on npm publish
- add a config check to make sure reset.sh was run for a specific device
  before allowing appium to try to start a session with that device

[IOS]
- various efforts to fix/workaround the (null).tap() issue in UIAutomation
- added shake()

[ANDROID]
- partial match on content-desc
- find aapt in SDK or path
- better logging all around
- ensure app apk exists and fail if not
- added content-desc to all ApiDemos elements
- added --avd flag for launching emulator if not running
- added getName()
- fix mobile: find

[SELENDROID]
- updated selendroid to 0.4
- don't re-build selendroid for each app, just re-insert manifest and build
  selendroid in reset.sh instead

[FIREFOXOS]
- Initial Firefox OS support landed!


-------------------------------------
CHANGES IN VERSION 0.3.1 (from 0.3.0)
-------------------------------------
[GENERAL]
- support for xpath indexes
- support for xpath last()
- docs specific to linux
- fix name of npm binary-plist dependency

[IOS]
- update instruments-without-delay (fix #432)
- fix #437 (implicit wait didn't work after ios reset)
- when searching for @text, fall back to @label and @value
- allow @name to refer to @text, @label, and @value
- have "textfield" searches return "secure" fields as well
- add "collection" tag name
- make sure to do a clean build before building sample apps

[ANDROID]
- fix xpath wildcard issue
- fix tag name selector
- alias "window" tag name to "frame"
- tweak flick timing
- have swipe/flick return errors if we know they didn't execute
- fix page source on real device
- use aapt rename to handle manifest stuff
- screenshot support
- support for the clear() method

[SELENDROID]
- fix proxy behavior
- added example/test for selendroid webview
- add WebViewDemo app with tasks for building it


-------------------------------------
CHANGES IN VERSION 0.3.0 (from 0.2.3)
-------------------------------------
[GENERAL]
- Running tests with grunt will now not crash on first test failure
- Rewrote reset.sh to respect sudo and to run for individual platforms
- Changed markdown rendering engine and logic for generating appium.io from
  README.md

[ANDROID]
- Add "mobile: find" method for complex find combinations
- Check that clean.apk is signed
- Orientation support
- Update verify.jar to work on java 6
- Massive refactoring of adb.js
- Added Selendroid proxy support (!)


-------------------------------------
CHANGES IN VERSION 0.2.3 (from 0.2.2)
-------------------------------------
[GENERAL]
- removed bloated appium.io submodule, replaced with no-binary one
- Fix plist resetting regression (#342)
- Fix to ensure GET /sessions doesn't return false information

[IOS]
- Allow instruments to find node binaries in MacPorts default location
- Allow instruments to find node binaries from Appium.app
- Rotate screenshots to match orientation of device
- Fix python examples
- Webview: add tests for implicit attributes
- Made sure window handles are always strings
- Reduced flakiness of swipe tests
- Added a Sauce Connect example
- C# example updates
- Fixed a few minor regressions

[ANDROID]
- Large refactoring of bootstrap code
- Moved ApiDemos code into a submodule which is included and built for tests
- Fix install command
- Support for element-based swiping
- Use selenium touch actions for flick()
- Some error message improvements
- Make sure we lint adb.js

-------------------------------------
CHANGES IN VERSION 0.2.2 (from 0.2.1)
-------------------------------------
[IOS]
- safari: use js close() instead of clicking buttons to close windows
- webview: make title() always return title for default context
- webview: async javascript execute
- webview: fix when webelements are returned to client
- allow launching app via bundle id and not just app path
- webview: get/set/delete cookie(s)
- correctly rotate screenshot images if taken in landscape mode

[ANDROID]
- add eclipse formatting file for bootstrap
- stop when activity fails to show up
- make content-desc search case-insensitive and partial
- allow launching emulator according to device id
- only sign app for clean apk once

-------------------------------------
CHANGES IN VERSION 0.2.1 (from 0.2.0)
-------------------------------------
[GENERAL]
- fix bug in npm dependencies (make swig a real dependency)

[IOS]
- fixed scoping bug in alert handling
- get rid of --warp flag, instruments-without-delay is better
- safari: clear cookies/history/windows in between test runs

-------------------------------------
CHANGES IN VERSION 0.2.0 (from 0.1.3)
-------------------------------------
[GENERAL]
- updates to reset.sh
- host our own guinea pig html page for webview tests
- updated java examples and docs

[IOS]
- webview: isActive()
- webview: submit()
- webview: clear()
- webview: selected()
- webview: implicit waits
- webview: location()
- webview: getName()
- webview: moveTo() and generalized click()
- webview: getWindowSize()
- webview: close()
- webview: don't allow alerts to cause webview requests to hang forever
- webview: find element(s) from element
- webview: get alert text
- webview: set prompt value
- allow pre-launching local zips/apps/safari from cli
- webview: allow execution in arbitrary frames
- "mobile: leaveWebView" special command instead of frame(null)
- webview: equalsElement()
- webview: back() and forward()
- webview: refresh()
- "mobile: fireEvent" for webview
- enable setting of device orientation through desired caps
- fix to not allow native commands to execute if webview command in progress
- bugfix in ios.js that left multiple remote debugger objs hanging around
- bumped command timeout since webview commands don't reset it

[ANDROID]
- fix in swipe where steps weren't converted to integers
- "mobile: keyevent" for hitting arbitrary keys
- native back()
- xpath search by "*"
- skip uninstall if --fast-reset set
- better error handling if activity is not found
- match other kinds of button than android.widget.Button with "button"
- allow matching custom class name (partial class name matching)
- relaunch on failure (or on screen cap)
- begun work to get bootstrap in maven
- flick() as an alias of sorts for swipe()

-- changes not tracked before v0.1.3 --
