Version 3.1.0
-------------
** Bug
    * [FELIX-2318] - Possible NPE for jars with null Manifest
    * [FELIX-2531] - Missing documentation for 'felix.fileinstall.noInitialDelay' configuration property
    * [FELIX-2556] - FileInstall fails to update fragments as it tries to stop them

** Improvement
    * [FELIX-2021] - Enable FileInstall to set Bundle Start Level
    * [FELIX-2571] - Have fileinstall listen for configuration changes and write them back to the config files
    * [FELIX-2643] - When using the jardir url handler, fileinstall should not compress the zip stream
    * [FELIX-2663] - Allow ConfigInstaller to perform placeholder substitution from framework properties

** New Feature
    * [FELIX-2513] - Support richer format for configurations
    * [FELIX-2514] - felix.fileinstall.dir should support more than one directory

Version 3.0.2
-------------
** Bug
    * [FELIX-2366] - Avoiding property substitution by escaping does not remove escape character

** Improvement
    * [FELIX-1657] - Add option in fileinstall to start bundles transiently (START_TRANSIENT)

Version 3.0.0
-------------
** Bug
    * [FELIX-1776] - FileInstall starts already installed bundles twice
    * [FELIX-2069] - FileInstall creates ./load by default
    * [FELIX-2248] - fileinstall does not restart bundles when the underlying file is modified
    * [FELIX-2302] - Fileinstall should add entries for directories when creating JARs
    * [FELIX-2313] - fileinstall does not recognize jars if it does not have Bundle-SymbolicName and Bundle-Version

** Improvement
    * [FELIX-2249] - fileinstall should log installation/uninstallation/updation/activation details at INFO level
    * [FELIX-2307] - There is no way to bypass / escape property substitution


Version 2.0.8
-------------
** Bug
    * [FELIX-1775] - fileinstall release archives contains an empty "load"
                     folder which should be removed
    * [FELIX-1789] - FileInstall is too verbose
    * [FELIX-1851] - FileInstall watched bundles are restarted twice upon update
    * [FELIX-1861] - FileInstall created temp directories are never deleted
    * [FELIX-1862] - fileinstall thread name as printed in log messages need
                     to be less verbose
    * [FELIX-1928] - File installer starts bundles too early on restart

** Task
    * [FELIX-1811] - fileinstall should depend on the official osgi artifacts


Version 2.0.4
-------------
** Bug
    * [FELIX-1386] - Updating fileinstall bundle in watched directory 
      causes IllegalsStateException
    * [FELIX-1572] - File Install running in an infinite loop while watching 
      multiple directories, once of which is itself
    * [FELIX-1578] - FileInstall issue when updating already installed bundles 
      at startup time
    * [FELIX-1591] - FIleInstall should have an optional / dynamic import on 
      org.osgi.service.cm instead of exporting it
    * [FELIX-1593] - Got an exception when restarting FileInstall bundle
    * [FELIX-1628] - Fileinstall should load configurations as soon as config 
      admin is available
    * [FELIX-1715] - osgi:update on xml deployments will cause ZIPExceptions
    * [FELIX-1716] - Fileinstall does not recognize changes in lastmodification 
      date of an uninstalled bundle inside deploy folder
    * [FELIX-1736] - After a restart, fileinstall does not always properly 
      uninstall bundles
    * [FELIX-1750] - fileinstall does not work on jdk 1.4
    * [FELIX-1787] - REGRESSION: FileInstall relies on location to be a valid 
      URL for update to be successful
    * [FELIX-1788] - Set felix.fileinstall.tmpdir to ${java.io.tmpdir} by default
    * [FELIX-1790] - fileinstal tmp dir needs to be different for each 
      watched directory

** Improvement
    * [FELIX-1756] - Allow fileinstall to override (i.e. update) bundles that have 
      not been deployed by fiileinstall initially

** New Feature
    * [FELIX-1537] - File Install should support XML property files

Version 2.0.0
-------------
** Bug
    * [FELIX-938] - FileInstall starts a stopped bundles even if it is stopped 
      transiently by user
    * [FELIX-1269] - MalformedURLException for bundle locations installed 
      by FileInstall
    * [FELIX-1377] - fileinstall tries to process files which are not fully 
      copied yet 
    * [FELIX-1382] - FileInstall attempts to uninstall "System Bundle"
    * [FELIX-1481] - When performing variable substitution, fileinstall throws an 
      exception if there is a start or stop delimiter without the other one
    * [FELIX-1540] - [FileInstall] When removing/re-adding a bundle, all the 
      dependent bundles don't start anymore

** Improvement
    * [FELIX-1301] - Limit FileInstall configuration information to one line in 
      the output
    * [FELIX-1387] - FileInstall unnenessarily computes length of files
    * [FELIX-1475] - Add a file filter for a given watched directory
    * [FELIX-1476] - Allow system property substitution while loading configurations 
      from files
    * [FELIX-1553] - fileinstall bundle should have an optional import on 
      org.osgi.service.log instead of exporting it
    * [FELIX-1554] - fileinstall should not export org.apache.felix.fileinstall 
      and org.apache.felix.fileinstall.utils packages

** New Feature
    * [FELIX-922] - File Install bundle should be extensible to support new 
      artifact type
    * [FELIX-1483] - Fileinstall should support exploded artifacts

Version 1.2.0
-------------
   * [FELIX-1179] - FileInstall should recognize Jar files by content instead
     of extension
   * [FELIX-1216] - ClassCastException when running FileInstall with
     Knopflerfish
   * [FELIX-1228] - Felix File Install - Spaces in File Names
   * [FELIX-1203] - NPE in fileinstall if a watched bundle is uninstalled by
     some other means
   * [FELIX-1235] - NullPointerException due to misconfigured watched dir
   * [FELIX-1174] - FileInstall bundle does not print stack trace of exceptions
     when log service is not used
   * [FELIX-1251] - Looping NullPointerException if the polled directory is
     removed after File Install registration
   * [FELIX-1241] - Log "Bundle Started" 

Version 1.0.0
-------------

** Bug
    * [FELIX-1036] - FileInstaller spawns multiple watchers for same directory

** Improvement
    * [FELIX-1055] - Making FileInstall bundle CDC-1.1/Foundation 1.1 compatible

Version 0.9.2
--------------

** Bug
    * [FELIX-895] - File Install treats configuration files with identical subnames as the same configuration
    * [FELIX-926] - FileInstall does not read all values from Configuration properties
    * [FELIX-937] - FileInstall can't handle autostart bundles that are part of watched directory
    * [FELIX-938] - FileInstall starts a stopped bundles even if it is stopped transiently by user

** Improvement
    * [FELIX-920] - Add option to only install or "install and start" newly discovered bundles 
    * [FELIX-939] - Optimize File Install
    * [FELIX-942] - Fileinstall unit tests
    * [FELIX-983] - Allow property substitution in config file
    * [FELIX-998] - Metatype definition for FileInstall
    
Version 0.9.0
--------------

 * First public release
