Changes in 4.3.18
-----------------
** Bug
    * [FELIX-6185] - jQuery <3.4.0 is vulnerable to prototype pollution attacks
    * [FELIX-5661] - The heuristic to derive the password type from the metatype id does not work reliably

Changes in 4.3.16
-----------------
** Bug
    * [FELIX-6171] - Webconsole OsgiManager throws NPE
    * [FELIX-6172] - Already Registered Servlet Exception with WebConsole


Changes in 4.3.14
-----------------
** Improvement
    * [FELIX-6037] - Commons FileUpload 1.4 breaks bundle uploads
    * [FELIX-6168] - Enable WebConsole login only after specified Security Providers are present


Changes in 4.3.12
-----------------
** Bug
    * [FELIX-6132] - XSS possible in service console

Changes in 4.3.10
-----------------
** Improvement
    * [FELIX-5934] - The web console stores unsalted hashed password
** Bug
    * [FELIX-6128] - Escape bundle name and manifest headers
    * [FELIX-6127] - Escape name hint in configuration listing


Changes in 4.3.8
----------------
** Improvement
    * [FELIX-5901] - Update to latest jQuery UI 1.12.1
** Bug
    * [FELIX-5893] - JQuery Security bug CVE-2015-9251 in Web Console


Changes from 4.3.2 to 4.3.4
---------------------------
** Bug
    * [FELIX-5638] - Unintended Web Console RESTful API change

Changes from 4.3.0 to 4.3.2
---------------------------
** Bug
    * [FELIX-5620] - Bundle start/stop buttons are missing
** Improvement
    * [FELIX-5566] - Stop/update/refresh/start bundles when updating through the webconsole for faster turnaround
    * [FELIX-5602] - Use Java 6 as base java version


Changes from 4.2.18 to 4.3.0
----------------------------
** Improvement
    * [FELIX-5504] - Switch from org.json to new simple json writer in utils
    * [FELIX-5509] - Remove method keyVal from WebConsoleUtil


Changes from 4.2.16 to 4.2.18
-----------------------------
** Bug
    * [FELIX-4840] - Asynchronous IO fails in webconsole plugin
    * [FELIX-5387] - NPE for requests missing 'felix-webconsole-locale' cookie

** Improvement
    * [FELIX-5445] - Web Console: Properly display non-string property arrays in name hint
    * [FELIX-5484] - Webconsole configuration factory name hint array rendering


Changes from 4.2.14 to 4.2.16
-----------------------------
** Bug
    * [FELIX-4941] - Configuration Properties not defined in Metatype are lost after update
    * [FELIX-4795] - Servlet API 3.x not supported 
    * [FELIX-5223] - [IE11][Edge]: Fields in OSGI Configuration Manager are not editable 


Changes from 4.2.12 to 4.2.14
-----------------------------
** Bug
    * [FELIX-5042] - Get system bundle by location, not number for global bundle list
    * [FELIX-5060] - Unnecessary import of org.osgi.service.component


Changes from 4.2.10 to 4.2.12
-----------------------------
** Bug
    * [FELIX-2880] - The Webconsole does not handle Vector<PrimitiveWrapper>
    * [FELIX-3366] - The Configuration Webconsole Plugin seems to ignore the ocd ref element
    * [FELIX-4849] - Do not call setContentLength after calling sendRedirect
    * [FELIX-4995] - NPE when updating Apache Felix OSGi Management Console configuration without a password
    * [FELIX-5004] - Null is passed to BundleInfoProvider if plugin root is null
    * [FELIX-5031] - NPE in Web Console configuration plugin when metatype service is missing
    * [FELIX-5041] - Cannot build web console with JDK 1.8 due to javadoc problems

** Improvement
    * [FELIX-5018] - [webconsole] "create factory configuration" link for config screen
    * [FELIX-5019] - [webconsole] "referer" parameter for configuration open/create link


Changes from 4.2.8 to 4.2.10
----------------------------
** Bug
    * [FELIX-4852] - Unbinding configuration does not have desired effect
    * [FELIX-4886] - Check for ConfigAdmin#listConfigurations returning null


Changes from 4.2.6 to 4.2.8
---------------------------
** Bug
    * [FELIX-3695] - When bundle filter doesn't match, the tool bars are duplicated
    * [FELIX-4800] - Bundle search in /system/console/bundles produces 405
** Improvement
    * [FELIX-3006] - Please create a logout button for the web console screen

Changes from 4.2.4 to 4.2.6
---------------------------
** Bug
    * [FELIX-4203] - ConfigAdmin plugin does not return json
    * [FELIX-4734] - Web Console RESTful API should wait for asynchonous operations until they complete 
    * [FELIX-4735] - Cannot create a new factory configuration from Web Admin Console
** Improvement
    * [FELIX-3849] - Support setting configuration binding
    * [FELIX-4007] - enable multiline inputs in Web Console Configuration
    * [FELIX-4704] - Show ranking in web console services plugin
    * [FELIX-4710] - Web Console: Display templated name hint for factory configuration entries
    * [FELIX-4737] - Provide an option to use system bundle context to get bundles/services (Support for subsystems)
    * [FELIX-4746] - Escape outputting filter parameter in service servlet
** Task
    * [FELIX-4738] - Deprecate WebConsoleUtil#keyVal

Changes from 4.2.0 to 4.2.4
---------------------------
** Bug
    * [FELIX-3817] - Form parameters might clash with configuration parameters
    * [FELIX-4558] - Web Console Service plugin doesn&#39;t list properties with value 0
    * [FELIX-4562] - Web Console License plugin fails to load files
    * [FELIX-4572] - Web Console may cause NPE on refresh packages
    * [FELIX-4610] - WebConsole doesn&#39;t start with Java Security enabled
    * [FELIX-4652] - Security problem with AbstractWebConsolePlugin.spoolResource
    * [FELIX-4660] - Security problem in WebConsoleUtil.getParameter() method
    * [FELIX-4662] - WebConsole Xdialog javascript function is not working correctly
                
** New Feature
    * [FELIX-3848] - Differentiate between unbound and new configuration
    * [FELIX-4711] - Web Console: False AJAX error displayed on deleting or unbinding config

Changes from 4.0.0 to 4.2.0
---------------------------

** Bug
    * [FELIX-3318] - NPE in WebConsole when trying to uninstall a bundle
    * [FELIX-3570] - Commons IO dependency issue
    * [FELIX-3605] - Configuration Status plugin has an error in IE/Compatibility View
    * [FELIX-3663] - Java Runtime in the System Information tab appears as 'null(build null)' in Skelmir CEE-J VM
    * [FELIX-3666] - NPE when uninstalling a bundle
    * [FELIX-3694] - In some cases web console cannot edit configs without metatype
    * [FELIX-3783] - ConfigurationAdminConfigurationPrinter failing if Configuration Admin API not bound
    * [FELIX-3784] - Configuration Admin tab not working when Metatype Service API is missing
    * [FELIX-3795] - JS Error in Configuration Status printing
    * [FELIX-3814] - Javascript error when directly invoking a configuration with IE8
    * [FELIX-3829] - NullPointerException when creating configuration with multi-value password properties
    * [FELIX-3841] - CSS issues in IE with Web Console menus
    * [FELIX-3936] - Main menu items hidden in the Configuration Status page
    * [FELIX-3946] - NullPointerException in BundleServlet.bundleDetails when not called through HTTP
    * [FELIX-3965] - threads configuration status generates invalid results
    * [FELIX-3969] - web console shows invalid bundle symbolic name
    * [FELIX-3986] - ThreadDumper comparators are not correctly implemented
    * [FELIX-4074] - Plugin class name changed for config manager plugin, might be disabled on update
 
** Improvement
    * [FELIX-2234] - Reduce status information from bundle plugin
    * [FELIX-3594] - Service should be sorted by ID in service configuration printer
    * [FELIX-3798] - Make default category configurable
    * [FELIX-3799] - Sort plugin plugin links by title
    * [FELIX-3851] - Allow for refresh after bundle update/install
    * [FELIX-3861] - Set felix.webconsole.category on Web Console plugins
    * [FELIX-3951] - Let users able to specify the directory used to temporarily store uploaded files

** New Feature
    * [FELIX-2896] - Add support for bundle info providers
    * [FELIX-3769] - Improve the way Web Console UI manages growing number of plugins.
    * [FELIX-3770] - Upgrade jquery-ui to 1.9.1

** Task
    * [FELIX-3778] - Create all-in-one WebConsole build again
    * [FELIX-3833] - Consider backwards compatibility break with label map due to Categories
    * [FELIX-3834] - Create separate language fragment bundles
    * [FELIX-3874] - Create new status printer module


Changes from 3.1.8 to 4.0.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
    * [FELIX-3473] - web console config manager plugin no longer works with J9
    * [FELIX-3485] - ui-bg_glass_55_fbf9ee_1x400.png does not exist in admin_compat.css

** 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
    * [FELIX-3482] - Text wrapping goes out of bounds in Configuration Status
    * [FELIX-3491] - Better activity indication when pressing refresh/update bundle buttons 
    * [FELIX-3502] - Improve Threads web console printer

** 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
    * [FELIX-3490] - Notice included OSGi classes


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
