Version 3.6.6
-------------
** Bug
    * [FELIX-5832] - ConfigInstaller should only handle events for configurations it manages
    * [FELIX-6103] - ConfigInstaller, when using NotCachablePersistenceManager, can restore cached stale properties
    * [FELIX-6109] - NPE from null listener in DirectoryWatcher.findListener
    * [FELIX-6211] - fileinstall filter out subdirectories even though felix.fileinstall.subdir.mode property is set to 'recurse'

Version 3.6.4
-------------
** Bug
    * [FELIX-4661] - FileInstall: Property "felix.fileinstall.filter" ignored when the service start
    * [FELIX-4740] - Bundles don't start if no BundleEvent fired after reaching start level
    * [FELIX-4906] - Changes in symlinked bundles not detected with NIO2 WatcherScanner
    * [FELIX-5125] - NPE in ConfigInstaller
    * [FELIX-5686] - NPE in ConfigInstaller on ConfigDelete
    * [FELIX-5691] - Fix whitespace handling in TypedProperties
    * [FELIX-5692] - TypedProperties is missing a method to add a raw value
    * [FELIX-5723] - ConfigInstaller is not deleting files in the etc directory

Version 3.6.2
-------------
** Bug
    * [FELIX-4416] - Ability to specify an encoding for config files
    * [FELIX-4743] - Have to escape '=' characters in quoted values in *.config files
    * [FELIX-5145] - FileInstall writes .config files back with backslashes escaping spaces in config values
    * [FELIX-5306] - User friendly syntax for floats and doubles in FileInstall
    * [FELIX-5448] - Exceptions from bundle.start() should be logged, not swallowed
    * [FELIX-5539] - Directory Watcher leaks ZipInflater
    * [FELIX-5689] - FileInstall always expand configuration files

** Improvement
    * [FELIX-5684] - Set multi-location for created configurations

Version 3.6.0
-------------
** Improvement
    * [FELIX-5609] - Full support for both untyped and typed configurations
    * [FELIX-5610] - Files should be deleted if a configuration is deleted

Version 3.5.8
-------------
** Bug
    * [FELIX-5133] Remove properties that are not present in updated configuration

Version 3.5.6
-------------
** Bug
    * [FELIX-5133] - Removing an entry from a configuration does not remove it from the monitored file

** Improvement
    * [FELIX-5261] - FileInstall: allow comments in *.config files

Version 3.5.4
-------------
** Bug
    * [FELIX-4934] - Only log failures for consistently failing bundles
    * [FELIX-5209] - [FileInstall] use framework bundle location to get framework bundle
    * [FELIX-5217] - Fileinstall is handling removal of many files inefficiently
    * [FELIX-5218] - Fileinstall MemoryLeak / Performance degradation in WatcherScanner

Version 3.5.2
-------------
** Bug
    * [FELIX-4906] - Changes in symlinked bundles not detected with NIO2 WatcherScanner
    * [FELIX-4935] - Felix fileinstall project set to incorrect java version
    * [FELIX-4975] - fileinstall's ConfigInstaller leaks it's permission checks to caller
    * [FELIX-5135] - Felix Fileinstall does not use all properties
    * [FELIX-5136] - Felix Fileinstall temp dir generation is inefficient
    * [FELIX-5137] - Felix Fileinstall: add support for recursing and skipping subdirectories

** Improvement
    * [FELIX-4714] - Felix should sort bundles by alphabetical name from "deploy" directory
    * [FELIX-5167] - Upgrade to felix utils 1.8.2

Version 3.5.0
-------------
** New Feature
    * [FELIX-4759] - Support env:XXX subtitution for environment variables
    * [FELIX-4760] - Support default/alternate values for variable substitution

Version 3.4.2
-------------
** Bug
    * [FELIX-4532] - ConcurrentModificationException in fileinstall
    * [FELIX-4635] - Avoid a useless change in the bundle location and a persistence the configuration

Version 3.4.0
-------------
** Bug
    * [FELIX-4436] - DirectoryWatcher should not refresh transformed bundles on every start-up
    * [FELIX-4472] - Various concurrency issues in fileinstall

** Improvement
    * [FELIX-2436] - Reduce the number files created by the fileinstall Scanner.
    * [FELIX-2702] - File Install should be smarter about starting failed bundles
    * [FELIX-3543] - Upgrade to the new osgi wiring api
    * [FELIX-4474] - Remove the static fields on FileInstall
    * [FELIX-4475] - Improve logging in FileInstall

Version 3.2.8
-------------
** Bug
    * [FELIX-3686] - FileInstall bundle contains ConfigurationHandler.java source file
    * [FELIX-3712] - FileInstall throws Interrupted exception when refreshed
    * [FELIX-3714] - Error when when fragment bundle is updated
    * [FELIX-3821] - FileInstall does not support correctly ConfigAdmin being shut down
    * [FELIX-3822] - FileInstall should unregister its services
    * [FELIX-4071] - ConcurrentModificationException in DirectoryWatcher.bundleChanged
    * [FELIX-4225] - compile error on FileInstall.java
    * [FELIX-4332] - Incorrect evalution of variables
    * [FELIX-4338] - Incorrect overwriting of properties that have not been changed

Version 3.2.6
-------------
** Bug
    * [FELIX-3635] - Unnecessary processing in DirectoryWatcher

** Improvement
    * [FELIX-3597] - Hard to debug fileinstall because shaded classes lack source in -sources.jar

Version 3.2.4
-------------
** Bug
    * [FELIX-3414] - BundleException: Unable to acquire global lock for resolve
    * [FELIX-3416] - ConcurrentModificationException in DirectoryWatcher.findBundlesWithFragmentsToRefresh
    * [FELIX-3493] - PackageAdminImpl thorws NPE - File Install does not handle a bundle uninstall gracefully

** Improvement
    * [FELIX-3487] - Variables are not preserved during write-back if they are defined as framework properties

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
