Version 3.7.0
-------------
** Bug
    * [FELIX-6229] - Not compatible with the symlinks Kubernetes uses to mount ConfigMaps
    * [FELIX-6409] - FileInstall logs useless messages due to incorrect interpolations
** Improvement
    * [FELIX-6410] - Set the  READ_ONLY attribute for configurations
    * [FELIX-6411] - use friendly name as factory name when creating new configurations
    * [FELIX-6412] - Use Configuration.updateIfDifferent
    * [FELIX-6413] - Make sure file checksums account for write permissions

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
