Changes from 3.1.8 to 3.4.0
---------------------------

** Bug
    * [FELIX-1865] - Metatype resolving mechanism does not seem to work correctly
    * [FELIX-2707] - Webconsole does not resolve resource bundle properly
    * [FELIX-2708] - Webconsole causes NPE in Bundle.getResource(String)
    * [FELIX-2727] - WebConsole logs an error not being able to create the DepPackServlet
    * [FELIX-2830] - Tablesorter loses it's styling if placed in JQuery TAB component
    * [FELIX-2855] - WebConsole cannot read the list of enabled plugins when using FileInstall
    * [FELIX-2879] - Metatype Service confuses the id of the OCD with the Designate.pid/factoryPid.
    * [FELIX-2889] - Invalid JSON content in http response after starting or stopping a bundle.
    * [FELIX-2971] - Configuration changes cannot be made via Felix Web Console in IE7
    * [FELIX-2979] - Declarative Services Components page only displayed if Configuration Admin and Metatype Service API is available
    * [FELIX-3010] - XSS in Felix Web Console
    * [FELIX-3028] - Better handle configuration unbinding
    * [FELIX-3116] - Saving configuration shows "AJAX error" dialog
    * [FELIX-3132] - Extensions not properly supported
    * [FELIX-3268] - Cannot build webconsole and webconsole-plugins with JDK 7
    * [FELIX-3284] - NullPointerException may be thrown if asynchronous bundle update fails
    * [FELIX-3285] - Wrong vector and array handling in Configuration Admin plugin
    * [FELIX-3311] - Cookie handling seems not to work anymore
    * [FELIX-3320] - WebConsole UX: actions and status on bundle details don't update properly
    * [FELIX-3404] - Web Admin Log Plugin stops listing of log entries if message is null.
    * [FELIX-3405] - NPE in Web Console
    * [FELIX-3406] - Localization in Web Console doesn't work anymore
    * [FELIX-3408] - Web Console date chooser shows garbage text
    * [FELIX-3433] - WebConsole default ajax error handlers doesn't work with IE
    * [FELIX-3469] - Type mismatch JS error using the memoryusage plugin

** Improvement
    * [FELIX-2117] - Use DynamicImport instead of Optional Packages
    * [FELIX-2697] - Allow enable/disable internal plugins dynamically
    * [FELIX-3014] - Have a way to "deep link" to a particular tab within Configuration Status
    * [FELIX-3022] - Add Uptime indication to Status page
    * [FELIX-3024] - Add Delete and Unbind buttons to Configuration Detail dialogs
    * [FELIX-3025] - Add a configuration status list with a short bundle list
    * [FELIX-3027] - Make download links for single configuration status file (or ZIP file) more prominent
    * [FELIX-3040] - Configuration status dump should contain a timestamp when the dump has been taken
    * [FELIX-3099] - Separate Deployment Admin plugin
    * [FELIX-3100] - Separate SCR plugin
    * [FELIX-3107] - Separate Shell Plugin
    * [FELIX-3111] - Separate OBR Plugin
    * [FELIX-3168] - Add support for new PASSWORD attribute type of Metatype service
    * [FELIX-3236] - Make language selection cookie longer lasting
    * [FELIX-3282] - Generate default fields for configurations without descriptor
    * [FELIX-3290] - Improve Cookie handling of the Web Console
    * [FELIX-3298] - Add animal sniffer plugin to ensure no using any non-Java 1.4 API
    * [FELIX-3315] - Log plugin does not show the bundle that has logged the event
    * [FELIX-3316] - Log plugin should provide more detailed exception column
    * [FELIX-3417] - Web Console Inconsistent status text
    * [FELIX-3418] - Sort threads by name in Configuration Status -> Threads

** New Feature
    * [FELIX-2709] - Allow webconsole context root be obtained from framework properties

** Task
    * [FELIX-2904] - Inlined required/embedded dependencies
    * [FELIX-3279] - Drop default build and use bare profile as the single build
    * [FELIX-3280] - Update to use parent POM 2.1
    * [FELIX-3281] - Use bundle plugin 2.3.6 and BND annotations for package export


Changes from 3.1.6 to 3.1.8
---------------------------

** Bug
    * [FELIX-2713] - Problem in HtmlConfigurationWriter
    * [FELIX-2729] - Webconsole - Configuration fails to print configuration for bundles without MetatypeService config
    * [FELIX-2735] - ClassCastException in PermissionsConfigurationPrinter
    * [FELIX-2793] - Plugin request is not detected as html request if context path contains a dot
    * [FELIX-2795] - Parameters are not removed from symbolic name when installing a bundle


Changes from 3.1.2 to 3.1.6
---------------------------

** Bug
    * [FELIX-2570] - HTML is escaped in ModeAwareConfigurationPrinter when in &quot;web&quot; mode
    * [FELIX-2573] - switching the console language bugs the jqueryUI datepicker component
    * [FELIX-2609] - WebConsole doesn't work with JDK 1.3.1_06 because of Locale
    * [FELIX-2610] -  WebConsole doesn't work with JDK 1.3.1_06 because of problem in MessageFormat
    * [FELIX-2617] - webconsole has option to change the language but doesn't show the currently selected one
    * [FELIX-2627] - can't install war files via webconsole
    * [FELIX-2635] - PluginHolder.setServletContext() must nullify servlet context after plugins destroying 
    * [FELIX-2644] - cannot disable plugin
    * [FELIX-2650] - ConfigurationPrinter with other modes than web should be excluded from web
    * [FELIX-2658] - Deprecate ConfigurationPrinter.PROPERTY_MODES constant
    * [FELIX-2659] - ConfigurationRender.searchMethod must catch problems more broadly

** Improvement
    * [FELIX-2541] - [Licenses Page] Add support for DEPENDENCIES files
    * [FELIX-2614] - Mark unresolved packages
    * [FELIX-2616] - Russian l10n files for Web Console
    * [FELIX-2639] - Improve Security Provider support
    * [FELIX-2652] - Allow attachment providers which do not implement the interface
    * [FELIX-2660] - Prevent Bundle ConfigurationPrinter from being used in the web output
    * [FELIX-2668] - Add localization for the meta-type
    * [FELIX-2674] - Too much error logging after fixing FELIX-2644

** New Feature
    * [FELIX-2638] - Make a single configuration printer output available via http
    * [FELIX-2649] - Support for configuration printers without requiring them to implement the interface

** Task
    * [FELIX-2540] - Ensure inclusion of the DEPENDENCIES file in the build artifacts
    * [FELIX-2684] - Fix legal files and add a changelog.txt


Changes from 3.1.0 to 3.1.2
---------------------------

** Sub-task
    * [FELIX-2412] - Update Web Console legal files

** Bug
    * [FELIX-2287] - Webcosole: showing all resources from a repository doesn't work
    * [FELIX-2288] - Felix SCR API problem/misunderstanding
    * [FELIX-2299] - OBR web console plugin doesn't show some bundles as installed
    * [FELIX-2424] - Internal Server Error requesting /system/console or /system/console/
    * [FELIX-2447] - Clicking on a service link does not display the service details
    * [FELIX-2448] - PermissionAdmin and WireAdmin plugins cause internal server error if service API is missing
    * [FELIX-2470] - No class def found error - Wire Admin (see screenshot)
    * [FELIX-2471] - No class def found error - Permissions Admin (see screenshot)
    * [FELIX-2508] - Web Console does not show all components
    * [FELIX-2535] - Cyrillic characters are not displayed properly.

** Improvement
    * [FELIX-2240] - Web Console should allow user to select http service to bind to
    * [FELIX-2277] - Allow the user to select display language
    * [FELIX-2282] - Optimize Services Printer
    * [FELIX-2391] - Potential dead locking issue in OsgiManager.init
    * [FELIX-2509] - Render more data for component details


Changes from 3.0.0 to 3.1.0
---------------------------

** Bug
    * [FELIX-2243] - Bundle Plugin 'Find All&quot; button generates error with Opera
    * [FELIX-2244] - Bundles Printer fails when imports contains range.
    * [FELIX-2256] - Some small visual defects in the WebConsole
    * [FELIX-2257] - Bundle sort order is not stored in a cookie anymore
    * [FELIX-2260] - Potential NullPointerException in ServicesServlet.writeJSON()
    * [FELIX-2261] - On the Servlets page the list of using bundles is not displayed
    * [FELIX-2263] - OsgiManager servlet should commit response
    * [FELIX-2272] - SCR plugin shows misleading message
    * [FELIX-2274] - 404 when plugin is missing
    * [FELIX-2285] - Bundles Plugin doesn't render the bundles name in IE
    * [FELIX-2286] - Various rendering issues with IE
    * [FELIX-2338] - Problem in the Configuration Render
    * [FELIX-2390] - WebConsole Config Manager problem

** Improvement
    * [FELIX-1141] - Provide feedback for operations
    * [FELIX-2207] - License plugin should support Bundle-License manifest header
    * [FELIX-2245] - Log Plugin - level sorting should be by level
    * [FELIX-2246] - Lazy initialization of plugins
    * [FELIX-2250] - Security Policy configuration printer
    * [FELIX-2251] - Wire Admin configuration printer
    * [FELIX-2253] - Display progress indiciator on configuration status page
    * [FELIX-2259] - ServicesServlet should use BundleContext.getAllServiceReferences instead of getServiceReferences
    * [FELIX-2267] - Improved locale detection
    * [FELIX-2284] - Add common utility method for converting object (array) to string
    * [FELIX-2291] - Show available number of processors on the System Information page

** New Feature
    * [FELIX-1764] - Add support for pluggable access control


Changes from 2.0.6 to 3.0.0
---------------------------

** Bug
    * [FELIX-1992] - Change the use of the &#xA7; character as a separator in the BundleRepositoryRender class
    * [FELIX-2005] - Configuration done using &quot;org.apache.felix.webconsole.internal.servlet.OsgiManager&quot; PID is not used by WebConsole
    * [FELIX-2007] - JavaScript error on bundle page
    * [FELIX-2009] - Reconfiguring the web console location fails
    * [FELIX-2022] - [Branding] webconsole.product.image not treated correctly when referencing http resource
    * [FELIX-2023] - [Branding] webconsole.product.name is not used in HTML page title and header tags
    * [FELIX-2029] - Support for &quot;default&quot; locale does not work
    * [FELIX-2034] - WebConsole fails to register if Http Service is registered after Web Console start
    * [FELIX-2086] - Use a different symbolic name for the bare web console bundle
    * [FELIX-2105] - Make Web Console compatible with OSGi/Minimum-1.1 EE
    * [FELIX-2118] - IE7 does not properly load license files into &lt;pre&gt; element
    * [FELIX-2119] - Bundle update fails, if OBR is not installed
    * [FELIX-2120] - OBR plugin should hide the repository table, if OBR service is not available
    * [FELIX-2122] - Possible NullPointerException reporting failure to instantiate a plugin
    * [FELIX-2123] - Latest commit to ConfigurationRender is not OSGi/Minumum-1.0 compatible
    * [FELIX-2124] - remove internal usage of deprecated Action interface
    * [FELIX-2142] - The Config Manager doesn't show configurations which values are pritive arrays
    * [FELIX-2147] - ConfigurationPrinter services not unregistered on destroy
    * [FELIX-2149] - Configuration Status tabs are not properly left aligned
    * [FELIX-2157] - Login dialog delay
    * [FELIX-2183] - Global AJAX error handler can be improved
    * [FELIX-2188] - Layout problems with old pluggins
    * [FELIX-2198] - ConfigManager plugin logs NullPointerException if ConfigurationAdmin Service is not availble
    * [FELIX-2204] - Localization causes a problem in WebConsole configuration
    * [FELIX-2206] - Localization causes a problem in Configuration Printers
    * [FELIX-2214] - Event plugin - template &amp; localization files must be UTF-8.
    * [FELIX-2216] - Web console needs to be able to use service bundles like obr installed after it
    * [FELIX-2219] - Showing bundle details of an uninstalled bundles reports &quot;Internal Server Error&quot;
    * [FELIX-2235] - Deployment plugin fails with internal server error

** Improvement
    * [FELIX-567] - Search for exported/imported packages
    * [FELIX-569] - Improve Configuration Page
    * [FELIX-957] - Migrate Bundle Repository Page to JQuery
    * [FELIX-1051] - Localize the web console
    * [FELIX-1910] - Normal URLs instead of Javascript links in Licenses screen
    * [FELIX-1956] - Collect duplicate &amp; reusable code in WebConsoleUtil
    * [FELIX-1958] - Branding L&amp;F issues 
    * [FELIX-1993] - Enhance configuration printer support
    * [FELIX-1996] - Console should warn when config is bound to a different bundle
    * [FELIX-2017] - Potential NullPointerException when running Web Console in Equinox
    * [FELIX-2099] - Cleanup logging
    * [FELIX-2125] - Localization of the bundle headers &amp; bundle name
    * [FELIX-2146] - Tab sorting and access of Configuration Status page is unstable
    * [FELIX-2148] - Support selection of default ConfigurationPrinter to display by URL
    * [FELIX-2158] - Localization of plugin titles
    * [FELIX-2162] - The bundle repository page can't scale
    * [FELIX-2167] - Simplify UpdateHelper.updateFromBundleLocation method
    * [FELIX-2171] - The OBR page should be able to display detailed information about a bundle
    * [FELIX-2189] - Shell Plugin Should Only be Available if shell is available
    * [FELIX-2199] - Extract Configuration Printers as top-level classes.
    * [FELIX-2203] - provide localization of plugin titles
    * [FELIX-2218] - webconsole dialog font size
    * [FELIX-2226] - Support direct details view of a resource by symbolic name and version
    * [FELIX-2227] - Request to OBR plugin should just act as if list=a parameter is set
    * [FELIX-2228] - Encoding issues with search queries in the OBR plugin
    * [FELIX-2229] - Provide German Translation for the Web Console
    * [FELIX-2238] - Bring back icons for backwards compatibility

** New Feature
    * [FELIX-1441] - Search manifest entries of bundles
    * [FELIX-1959] - Move towards unified L&amp;F and extended branding support

** Task
    * [FELIX-1988] - Integrate jQuery UI integration into the Web Console Trunk
    * [FELIX-2098] - Removed unused AssemblyListRender
    * [FELIX-2165] - Remove deprecated Action interface
    * [FELIX-2217] - Web Console OBR plugin should work with old OBR and new bundlerepository API
    * [FELIX-2220] - Use Manifest Header parser from new utils bundle


Changes from 2.0.4 to 2.0.6
---------------------------

** Bug
    * [FELIX-1961] - NPE when invoking install/update panel
    * [FELIX-1983] - WebConsole HttpContext should flush response after setting response status

** Improvement
    * [FELIX-1976] - Define Web Console build without embedded libraries
    * [FELIX-1977] - Improve message if a plugin cannot be installed

** New Feature
    * [FELIX-1957] - Make Web Console compatible with OSGi/Minimum-1.0 EE


Changes from 2.0.2 to 2.0.4
---------------------------

** Bug
    * [FELIX-1800] - Bound configurations for which there exists no bundle cannot be edited
    * [FELIX-1912] - Bundles without categories are never displayed in the bundle repository list
    * [FELIX-1930] - Clicking action on bundles detail page shows full bundle list while URL stays on bundles/&lt;id&gt;

** Improvement
    * [FELIX-1894] - Show more fragment information in bundle details
    * [FELIX-1895] - Show configuration property names in configuration forms
    * [FELIX-1916] - Rename &quot;Location&quot; label to &quot;Bundle Location&quot; in the bundle details display
    * [FELIX-1931] - Keep sort order of bundle list across page reloads (eg. in a cookie)

** New Feature
    * [FELIX-1808] - Support unbinding configurations through the Web Console
    * [FELIX-1884] - WebConsole should have a Services plugin


Changes from 2.0.0 to 2.0.2
---------------------------

** Bug
    * [FELIX-1370] - Sometimes the configuration for org.apache.felix.webconsole.internal.servlet.OsgiManager is ignored
    * [FELIX-1674] - typo in scr and webconsole - &quot;unsatisifed&quot;


Changes from 1.2.10 to 2.0.0
----------------------------

** Sub-task
    * [FELIX-1014] - Hardcoded list of webconsole plugins in OSGiManager
    * [FELIX-1015] - Hardcoded HTML Header/Footer in AbstractWebConsolePlugin
    * [FELIX-1043] - Support WebConsole plugins without requiring extending the AbstractWebConsolePlugin
    * [FELIX-1211] - How to provide resources like CSS or JavaScript files for plugins
    * [FELIX-1281] - Provide official constants of web console request attributes
    * [FELIX-1599] - Validate TabWorld license


** Bug
    * [FELIX-1020] - Footer redered before content in bundle plugin
    * [FELIX-1160] - WebConsole Manifest.MF should specify required version for Servlet API (2.4)
    * [FELIX-1164] - Updating a configuration containing a property configured with unbound array size
    * [FELIX-1224] - Component display depends on ManagedService[Factory] instances to be registered for components
    * [FELIX-1230] - Configuration Page depends on ManagedService[Factory] instances to be registered for components
    * [FELIX-1270] - Displaying the bundle detail view resolves a bundle
    * [FELIX-1275] - On the Bundles page, when bundle details are displayed inline, the links to imported and importing bundles are invalid.
    * [FELIX-1389] - Main div is not closed
    * [FELIX-1415] - &quot;Reload&quot; button in webconsole bundles list doesn't work
    * [FELIX-1460] - Can't view installed but unresolved bundle details page
    * [FELIX-1622] - NullPointerException
    * [FELIX-1623] - Configuration status tabs not correctly rendered in FireFox 3.5
    * [FELIX-1630] - Make WebConsole more independent
    * [FELIX-1632] - Remove reference to KXml from NOTICE and LICENSE and update OSGi copyright years
    * [FELIX-1636] - Html footer and header are always added to the response for a servlet plugin

** Improvement
    * [FELIX-1171] - Enhance Configuration Status Page
    * [FELIX-1191] - Add logging to OBR support plugin
    * [FELIX-1215] - Provide hyperlinks when referring to bundles
    * [FELIX-1217] - Move install/update to separate page
    * [FELIX-1221] - Display the alias ID created by Karaf Features when showing service details
    * [FELIX-1282] - Cleanup bundle: do not export SCR API, only embedd header parser
    * [FELIX-1283] - Order page titles in top navigation ignoring case
    * [FELIX-1569] - Remove deprecated Render interface
    * [FELIX-1637] - Support additional CSS references provided by plugins

** New Feature
    * [FELIX-1644] - Reintroduce button to update a single bundle

** Task
    * [FELIX-1013] - Improve console extensibility
    * [FELIX-1607] - Enhance the Web Console Event Plugin


Changes from 1.2.8 to 1.2.10
----------------------------

** Bug
    * [FELIX-1003] - Saving Apache Felix OSGI Management Console on Safari cause Error 404
    * [FELIX-1028] - NPE in configuration view when running webconsole with Equinox
    * [FELIX-1048] - Handle fragment bundles differently than &quot;normal&quot; bundles
    * [FELIX-1061] - [PATCH] webconsole silently ignores bundles which have no Bundle-SymbolicName header

** Improvement
    * [FELIX-1042] - [PATCH] Add log service to web console
    * [FELIX-1049] - Display symbolic name and version in bundle list
    * [FELIX-1050] - Display complete manifest entry
    * [FELIX-1139] - Remove fixed width of layout
    * [FELIX-1143] - Upgrade to Felix Parent POM 1.2.0


Changes from 1.2.2 to 1.2.8
---------------------------

** Bug
    * [FELIX-871] - Bundle Repository page displays NullPointerException if no RepositoryAdmin service is available
    * [FELIX-873] - Server Stop should be Framework stop and does not work correctly
    * [FELIX-874] - Bundle startlevel of new bundle cannot be set from the bundle installation form
    * [FELIX-885] - Saving a factory configuraiton instance creates a new instance instead of updating the old instance
    * [FELIX-913] - IllegalStateException thrown on startup due to OsgiManager trying to unregister a not yet registered resource
    * [FELIX-916] - Web Console does not start if the org.osgi.service.log package is missing
    * [FELIX-918] - Relative redirect on config page does not work in WebSphere
    * [FELIX-975] - Several UI Problems with IE

** Improvement
    * [FELIX-564] - Allow changing the sort order in the bundle list
    * [FELIX-858] - Use new layout from event plugin in bundle plugin
    * [FELIX-863] - Merge license and NOTICE information of OBR bundle embedded in web console with the main license and NOTICE files
    * [FELIX-875] - Support updating the system bundle
    * [FELIX-882] - Use Logger to log messages in the OsgiManager instead of the servlet context log
    * [FELIX-888] - JSON information and actions for a bundle should be possible with symbolic name
    * [FELIX-904] - Dependencies should be included as jars and not as classes
    * [FELIX-919] - Use new table layout for the components list
    * [FELIX-933] - Config Manager Plugin should support displaying a form even if no configuration is stored
    * [FELIX-955] - Cleanup Bundle Repository Page
    * [FELIX-956] - Enhance log output in case of failed resource resolution

** New Feature
    * [FELIX-878] - Allow to get configurations directly in json format


Changes from 1.2.0 to 1.2.2
---------------------------

** Bug
    * [FELIX-738] - First access to &quot;Bundles&quot; web console tab takes a long time if the server has no internet access 
    * [FELIX-752] - webconsole 1.2.0 seems to depend on SCR
    * [FELIX-767] - NOTICE file should list OSGi under &quot;includes&quot; and &quot;uses&quot;
    * [FELIX-774] - Checkboxes do not work in configuration admin
    * [FELIX-780] - ArrayIndexOutOfBoundsException in webconsole
    * [FELIX-802] - Bundle and other displays incomplete and show JavaScript error(s)
    * [FELIX-856] - Web Console fails to start if HttpService is only available after the WebConsole bundle start
    * [FELIX-859] - Event display shows double lines between event properties for some events

** Improvement
    * [FELIX-757] - Add status message about bundle
    * [FELIX-793] - Improve update and install through web console
    * [FELIX-857] - Do not rely on Declarative Services for plugins of the Web Console itself

** New Feature
    * [FELIX-781] - Add basic thread dump to Configuration Status page
    * [FELIX-790] - Add console plugin to display OSGi events


Changes from 1.0.0 to 1.2.0
---------------------------

** Bug
    * [FELIX-563] - Add support to access the Felix ShellService
    * [FELIX-583] - org.apache.felix.webconsole.internal.compendium.ConfigManager.listConfigurations(): ManagedServiceFactory instances are listed twice: with pid and factoryPid
    * [FELIX-584] - org.apache.felix.webconsole.internal.compendium.AjaxConfigManagerAction.applyConfiguration(): &quot;create&quot; action is not handled properly
    * [FELIX-585] - org.apache.felix.webconsole.internal.compendium.ConfigManager.listConfigurations(): Configuration instances for ManagedServiceFactoy instances cause IllegalArgumentException
    * [FELIX-586] - org.apache.felix.webconsole.internal.compendium.BaseConfigManager.getAttributeDefinitionMap(): implementation does not properly handle Configuration instances of a ManagedServiceFactory
    * [FELIX-587] - org.apache.felix.webconsole.internal.compendium.AjaxConfigManagerAction.configForm(): Configuration instance for a ManagedServiceFactory will cause Exception
    * [FELIX-592] - Console does not work properly in Internet Explorer
    * [FELIX-600] - Insert Delay before refreshing packages after install/update
    * [FELIX-662] - ConfigManager should check for empty value before converting into a specific type

** Improvement
    * [FELIX-566] - More RESTful management console URLs
    * [FELIX-574] - Replace Action and Render service interfaces by the Servlet interface
    * [FELIX-614] - Change behaviour of little arrow on single bundle/component display
    * [FELIX-671] - Web Console OBR description
    * [FELIX-742] - Order configurations alphabetically
    * [FELIX-743] - Support configuration filtering
    * [FELIX-744] - Support configuration creation from the GET request
    * [FELIX-745] - Mark optional imports as such
    * [FELIX-746] - Display Bundle Doc URL as a link
    * [FELIX-747] - Enable bundle installation through OBR again

** New Feature
    * [FELIX-604] - Add License/Notice page
    * [FELIX-691] - Add support for the deployment admin


Initial Release 1.0.0
---------------------
** Improvement
    * [FELIX-570] - Add flag to InstallAction asking for PackageAdmin.refreshPackages after package update

** Task
    * [FELIX-562] - Move OSGi Console to Apache Felix
