Changes from 1.4.2 to 1.4.3
---------------------------

** Bug
    * [FELIX-2378] - Deadlock in Felix Shell implementation

** Improvement
    * [FELIX-2379] - Use service tracker in shell to track commands


Changes from 1.4.1 to 1.4.2
---------------------------

** Improvement
    * [FELIX-1987] - Stacktraces are not displayed by the "log" Felix shell command
 
Changes from 1.4.0 to 1.4.1
---------------------------

** Bug
    * [FELIX-1653] - [Shell] The new sysprop command does not allow to delete a system property
    * [FELIX-1662] - find returns invalid level for bundles and find all returns strange listing
    * [FELIX-1699] - The 'version' shell command is framework specific

** Improvement
    * [FELIX-1561] - [Shell] Add a command to display and modify system properties with the Felix Shell

** Task
    * [FELIX-1617] - Modify framework, main, shell, shell.tui, and obr to depend on official OSGi JAR files

Changes from 1.2.0 to 1.4.0
---------------------------

** Bug
    * [FELIX-1019] - New shell commands "requirers" and "exports" do not handle invalid bundle case properly

** Improvement
    * [FELIX-1058] - [PATCH] Add a "find" command to the shell
    * [FELIX-1145] - Modify help shell command to avoid issues with long command descriptions
    * [FELIX-1151] - Improve naming and consistency of shell commands for inspecting dependencies

** New Feature
    * [FELIX-1052] - Add log shell command
    * [FELIX-1181] - Add support for activation policy in shell "start" command
    * [FELIX-1510] - There is no command to set the initial bundle start level

Changes from 1.0.2 to 1.2.0
---------------------------

** Bug
    * [FELIX-703] - Cannot install ShellGUIPlugin with OBR

** Improvement
    * [FELIX-669] - Shell & Shell TUI OBR descriptions
    * [FELIX-1008] - Rename "packages" command to "exports" to match better with new "imports" command

** New Feature
    * [FELIX-741] - Modify shell start/stop commands to support transient starting/stopping of bundles
    * [FELIX-1006] - Add command to shell to list a bundles imported packages
    * [FELIX-1009] - Add requires/requirers commands to shell

Changes from 1.0.1 to 1.0.2
---------------------------

* [2008-08-12] Added OBR descriptor and updated to bundle plugin version
  1.4.3. (FELIX-669)
* [2008-05-08] Modified "update" command to not append ".jar" to URLs and 
  modified the "install" command to use the same code. (FELIX-544)

Changes from 1.0.0 to 1.0.1
---------------------------

* [2008-04-21] Re-release to make bytecode executable on jre 1.3.

Changes from 0.8.0-incubator to 1.0.0
-------------------------------------

* [2006-12-15] Changed the symbolic name, since it was being calculated
  incorrectly.
* [2007-05-03] Modified 'ps' so that it displays reasonable defaults if
  headers are missing. Also added ability to display symbolic name.
* [2007-06-14] Modified refresh command to accept bundle IDs.
