Version 3.2.2
-------------
** Bug
    * [FELIX-3467] - Configuration is not flush back to the file

** Improvement
    * [FELIX-3398] - Track new versions of artifact listener and optionally update all bundles when a new version is detected
    * [FELIX-3448] Small optimization when using file name filters

Version 3.2.0
-------------
** Bug
    * [FELIX-2066] - File Install fails to move fragment bundle into RESOLVED state
    * [FELIX-2763] - [FileInstall] disableConfigSave actually enables configuration save
    * [FELIX-2794] - noInitialDelay is not correctly implemented
    * [FELIX-2843] - Parsing PID assumes last 4 chars are file extension
    * [FELIX-2852] - Infinite reloading of config file ending with .config
    * [FELIX-2890] - FileInstall starts non-daemon threads
    * [FELIX-2982] - noInitialDelay option does not work
    * [FELIX-3047] - Infinite loop in File Install if java.io.tmpdir is non-writable
    * [FELIX-3109] - FileInstall sorts artifact url handlers in the wrong order so that the ranking does not work correctly
    * [FELIX-3112] - Default for felix.fileinstall.start.level documented incorrectly
    * [FELIX-3346] - File Install doesn't scan when the framework start level is lower than felix.fileinstall.start.level setting
    * [FELIX-3373] - File install logging doesn't notify user of important errors
    * [FELIX-3396] - Fileinstall is not able to handle configuration file if in a path containing braces

** Improvement
    * [FELIX-2787] - [File Install] Do not perform management activities while framework is starting/stopping
    * [FELIX-2848] - Saving config file to original location shouldn't add system properties
    * [FELIX-3294] - file install dependencies on osgi artifacts should have "provided" scope
    * [FELIX-3386] - File install tests use deprecated EasyMock API and fail on BundleContext.getProperty

Version 3.1.10
--------------
** Bug
    * [FELIX-2818] - File Install does not support empty configuration when no configuration already exists
    * [FELIX-2799] - FileInstall creates multiple configurations for factory configurations on windows
    * [FELIX-2798] - ArtifactListener services are not ordered according to the OSGi ranking

Version 3.1.6
-------------
** Bug
    * [FELIX-2791] - NPE in getStartLevel due to race condition

Version 3.1.4
-------------
** Bug
    * [FELIX-2756] - NPE when loadiong configurations
    * [FELIX-2745] - New configurations throw NPE

Version 3.1.2
-------------
** Bug
    * [FELIX-2699] - Disable writing configuration back to .cfg files
    * [FELIX-2698] - File Install Circular Configuration Update Loop
    * [FELIX-2675] - ileinstall always starts bundle eagerly

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
