0.59 2024-12-10
        - Improve appearance of title-addon on logo. (uyen-nhu)
        - Create and style new item on top navbar for 'News'. (uyen-nhu)
        - Change settings link in logout.html.ep to dynamic link. (uyen-nhu)
        - Add an indicator for user login, and some minor design changes. (uyen-nhu)
        - Add back content_block headerButtonGroup due to backwards
          compatibility and modify header.html.ep to fit changes. (uyen-nhu)
        - Correct color of minimize button for snippets to
          nearly-white, and add media query for border-radius of
          the search bar. (uyen-nhu)
        - Delete helper class get_user_name and set user_handle
          instead to get the user name. (uyen-nhu)
        - Add scroll functionality for navbar: hide on scroll down,
          show on scroll up. (uyen-nhu)
        - Create burger menu and add responsive styles for navbar,
          optimize element positions in header. (uyen-nhu)
        - Add and style registration link to fit in login area,
          change navbar size and input fields, improve positionings of
          logo and icons, fix animation of navbar when scrolling on
          small devices. (uyen-nhu)
        - Return cursor position for query object (fixes #228; diewald)
        - Keep plugin state in statemanager (fixes #201; diewald)

0.58 2024-11-15
        - Cookie path is settable now (hebasta)
        - Fix meta table view for key value pairs (diewald)
        - Fix warning on OAuth public clients (diewald)
        - Introduce navi->list helper (diewald)
        - Guided tour link changed from ID to class (hebasta)
        - Add border to query panel widgets (fixes #225; diewald)
        - Add 'desc' support to embedded widgets
          (fixes #224; diewald)
        - Support setting of query form elements via plugins (diewald)
        - Fix h1-logo (only visible in header; diewald)
        - Added translations for CQL (r-wilm)
        - Partial support for romanian (irimia) and hungarian
          (pfischer) localizations

0.57 2024-10-08
        - Support VCs via URL without queries (diewald)
        - Added translations for regexp and FCSQL (r-wilm)
        - Introduce 'ui-ready' global event (diewald)
        - Don't show random page option for single page
          results (diewald)
        - Move page to top after click on example queries (diewald)
        - Disable sidebar via stash (diewald)
        - Change malt/d for relation default in tour (kupietz)
        - Use 'pubDate eq 2018' as VC example in tour (kupietz)
        - Fix tour when started from a non-root path (hebasta)

0.56 2024-09-23
        - Improve slim test for plugin support
          (korapxml2...; diewald)
        - Fix layerInfo retrieval for relation view. (diewald)
        - Change look of addon logo. (diewald)

0.55 2024-07-03
        - Removed deprecated doc_link_to helper. (diewald)
        - Removed deprecated doc_ext_link_to helper. (diewald)
        - Removed deprecated doc_uc helper. (diewald)
        - Removed deprecated doc_navi helper. (diewald)
        - Removed deprecated doc->url helper. (diewald)
        - Correctly propagate warnings in frontend calls. (diewald)
        - Remove corpusQuery from statistics
          (as per Kudstvakt #758). (diewald)
        - Improve test suite for slim images. (diewald)
        - Add pages to references in snippet view. (diewald)
        - Added category to Piwik calls. (diewald)
        - Add SpaCy with STTS to annotation assistant. (diewald)
        - Support field objects in search responses. (diewald)
        - Add fields to search API (necessary
          for future Kustvakt releases). (diewald)

0.54 2024-06-10
        - Remove deprecated 'matchInfo' API path. (diewald, margaretha)
        - Improve footer responsiveness. (diewald)

        WARNING: This change requires at least Kustvakt v0.61.6.

0.53 2024-05-04
        - Add openapi url to documentation. (hebasta)
        - Solve a potential timing issue in VC rendering. (diewald)
        - Update DeReKo link in corpus specific localization. (hebasta)
        - News and announcements are now displayed in Safari (fixes #208).
          (hebasta) 
        - Translate example query documentation. (diewald)
        - Fix: The content of blockquote is displayed. (hebasta) 
        - Upgrade dependency and remove deprecated
          method. (diewald)
        - Add configuration option for defaults: items_per_page, context.
          (diewald)
        - Support for inline-markers in snippets. (see Krill #132; diewald)
        - Added CQP tutorial (part 1; irimia, hebasta, margaretha, diewald)

0.52 2023-11-29
        - Update Piwik dependency to point to matomo.js. (diewald)
        - Add addon to title and description. (diewald)
        - Improve Dockerfile to enable docker-slim. (diewald)
        - Introduce maintenance tag helper. (diewald)
        - Fix: Remembers the last position in the tutorial. (hebasta)

0.51 2023-09-27
        - Support defined log file in configuration. (diewald)
        - Remove experimental_client_registration setting
          and make client registration mandatory in OAuth
          (diewald)
        - Introduce 'reserved terms' in documentation (diewald)
        - Support CQP in frontend (diewald)
        - Fix support for dot-symbols in (corpus/doc/text)-IDs
          (diewald)
        - Update information regarding CSP in conf (diewald)
        - Support NKJP named entities in annotation helper
          (diewald)
        - Marketplace to install and uninstall plugins (hebasta)

0.50 2023-05-08
        - Improvement of NKJP-annotation helper. (diewald)
        - Add redirect-uri to client view. (diewald)
        - Added german translation for Cosmas-II. (hebasta)
        - Workaround for failing utf8 test in some
          environments (fixes #197). (diewald)
        - Require at least conllu2korapxml v0.6.1. (diewald)
        - Improve redirection on all authorization calls. (diewald)
        - Redirect-URIs are required to be absolute
          by newer versions of Kustvakt. (diewald)
        - Newer versions of Kustvakt disabled default
          scope on authorization requests. (diewald)
        - Introduce logo addon. (diewald)
        - Added ud to default foundries. (diewald)

0.49 2023-02-23
        - Introduce conllu2korapxml command via plugin. (diewald)
        - Introduce korapxml2conllu command via plugin. (diewald)
        - Do not follow redirect links on OAuth authorization
          requests. (diewald)

0.48 2023-01-12
        - Added support for NKJP tagset in annotation
          assistant. (diewald)
        - Remove deprecated 'auth_support' (since 0.31)
          configuration parameter - use 'Auth' plugin instead. (diewald)
        - Support environment variable KALAMAR_CLIENT_FILE for
          client information. (diewald)
        - Support KALAMAR_PLUGINS as a comma-separated environment
          variable to load plugins in addition to the 'plugins'
          parameter in the configuration file. (diewald)
        - Allow popups in plugin widgets. (diewald)
        - Set version via KALAMAR_VERSION environment variable.
          (diewald)
        - Add panel types. (diewald)
        - Add textSigle as a plugin receivable information. (diewald)
        - Introduce krill-indexer command via plugin. (diewald)
        - Introduce start-with-backend command via plugin. (diewald)
        - Update Mojolicious for security reasons. (diewald)
        - Fix terser installation (fixes #182). (diewald)
        - Replaced list with info API request for client information
          in OAuth registration flow. (diewald)
        - Fix tour localization to be overwritable. (diewald)
        - Make scope a requirement for OAuth authorizations.
          (diewald)
        - Improve security of OAuth redirects. (diewald)
        - Improve error handling for non-redirect error responses.
          (diewald)
        - Fix Gruntfile to copy css files after sass.
          (fixes #184; diewald)
        - Redirect to index on authorization failure,
          in case user is not logged in. (fixes #192; diewald)
        - Added annotation helper for UDPipe annotations. (wilm)

        WARNING: Mojolicious 9.31 is a security update -
          updating is highly recommended.

0.47 2022-11-22
        - Add command to generate super_client_info file. (diewald)
        - Support 'client_file' parameter as an alternative to 'client_id'
          and 'client_secret'. (diewald)

0.46 2022-08-08
        - Increased max query length from 1000 to 4096 characters. (kupietz)
        - Fix handling of public clients. (diewald)
        - Improve support for non-latin tokens in annotation table views.
          (Fixes #168; diewald)

0.45 2022-05-20
        - Added confidential client support to OAuth. (diewald)
        - Added OAuth client authorization handling. (diewald)
        - Mark public clients as slightly more insecure. (diewald)
        - Reintroduce email handle support. (fixes #165; diewald)
        - Support plugin declarations on registration. (diewald)
        - Fetch client information before grant request. (diewald)
        - Enable Zooming on mobile clients. (diewald)
        - Auth Plugin sets cookie expiration explicitely
          to 3 days. (diewald)
        - Remove JWT Auth flow, which was deprecated since 0.42.
          (diewald)

0.44 2022-02-31
        - Fixed autosecrets migration. (diewald)
        - Format page numbers in pagination. (diewald)
        - Introduce tei2korapxml command via plugin. (diewald)
        - Introduce korapxml2tei command via plugin. (diewald)
        - Plugin toggle states are now managed by the state
          manager and can therefore survive URL changes. (diewald)
        - Add KorAP::XML::Krill and KorAP::XML::TEI to
          Dockerfile. (diewald)
        - Improve handling of invalid URIs in attachements. (diewald)

0.43 2021-11-05
        - New menu class that has an entry at the very end,
          similar to the input text prefix,
          that is always available. (lerepp)
        - Fix error message in case of server error (500)
          response.
        - Added utility funcition to util that gets all direct
          childNodes of a given element by a tag or class. (lerepp)
        - Remove 'X-Frame-Options' in favor of 'frame-ancestors'
          as a CSP rule.
        - Fix CSS compression for new SASS compiler.
        - Support dynamic menu extensions.
        - Dynamically extend buttongroup menus.
        - Update to menu.js's removeItems function to only delete
          direct childNodes aswell as a specification to test for it. (lerepp)
        - Make actions private in panels and views.
        - Move pagination out of resultinfo.
        - Add support for "adopted" button groups and anchor children
          to prepend to.
        - New menu class that has a container for further
          entries at the very end that is always available. (lerepp)
        - Reorder documentation menu and make query languages the
          default entry point. (hebasta)
        - Fix init of matches.
        - Fix tests on text method to accept undef for Mojo >= 9.21.
        - Plugin::TagHelpers::ContenBlock now on CPAN.
        - Fix navigation behaviour for folded subdirectories.
        - Introduce legacy redirects for tutorial links.
        - Improve QueryParam response.
        - Fold all top-level navigation items.
        - Add plugin service to redirect to a certain location.
        - Add support for pagination information to retrieve by plugins.
        - Buttongroup menus can be opened at different positions.
        - Fix buttongroup anchoring if anchor doesn't exist.
        - Fix blind header titles.
        - Turn "upgradeTo" into an object prototype.
        - Fix QueryParam response to work with Chrome (#149).
        - Added DemoServer plugin.
        - Support CSP disabling.
        - Update intro.js (#109; hebasta)
        - Introduce pagination panel.
        - Support for inactive buttongroup items.
        - Support default values for state.
        - Introduce state manager (#119).
        - Support default value for plugin toggle embeddings.
        - Fix wrong handling of utf8 input in login that can
          lead to server crash.
        - Fix query-by-match for multiple colons.
        - Fix "menu below hint marker" bug.
        - HintMenu is now based on containerMenu instead of regular
          menu (lerepp)
        - Replace deprecated slash division in favor of math
          division in Sass
        - Detailed explanation of vc creation (#147) in guided
          tour (hebasta).
        - Upgrade Sass dependency.
        - Release preparation.

0.42 2021-06-18
        - Added GitHub based CI for perl.
        - Added further methods for communicating JSON Files
          with the server to the APIs (lerepp).
        - Remove ruby-sass requirement (fixes #123).
        - Added support to issue new OAuth2 tokens.
        - Added tests for Mojolicious >= 9.11 compatibility.
        - Replace old Kalamar logo with new KorAP logo
          (designed by Norbert Cußler-Volz)
        - Added large footer.
        - Make KorAP logo stay when side menu is active
          (fixes #133).
        - Change samesite to 'None' to temporarily
          allow for session riding by plugins.
        - Overhaul of menuSpec to use getElementsByClassName
          and getElementsById instead of child accessors
          (lerepp).
        - List tokens of a client.
        - Upgrade Mojolicious dependency to 9.19.
        - Added query reference API.
        - Use AutoSecrets plugin to improve security.
        - Fixed bug where missing documentation pages raise
          exceptions in Mojo >= 9.0.
        - Support revocation of tokens.
        - Disable caching in auth routes.
        - Deprecate JWT flow. In the future only OAuth2
          flow will be supported and will be the default
          option for authentication and authorization.
        - Added settings navigation by default.
        - Fix rendering bug in unauthenticated oauth route.
        - Add option to toggle password fields.
        - Add "copy to clipboard" feature for input fields.
        - Add "copy to clipboard" for client id.
        - Show settings only on demand.

        WARNING: Upgrading to Mojolicious 9.19 will
          invalidate all sessions. This is a security update.
        
        WARNING: Even testing this distribution will rewrite your
          kalamar.secret file to migrate to kalamar.secret.json.
          It will keep kalamar.secret - but you'll advise to
          delete the file after checking the integrity with
          kalamar.secret.json.
        - Separate prefix style from non-item style
          in menus.

0.41 2021-03-01
        - Introduce CORS headers to the proxy.
        - Introduce Content Security Policy.
        - Remove default api endpoint from config to
          enable changes in the 'Kalamar' config environment
          while keeping the api_path.
        - Added advice in Readme regarding scripts in
          Windows Powershell (lerepp).
        - Establish CSP plugin.
        - Added nonce helper to CSP plugin.
        - Remove no-js class in nonced inline script.
        - Introduce HSTS header for https_only conf.
        - Send 'nosniff' header.
        - defer main script.
        - Introduce X-Frame-Options header.
        - Introduce X-XSS-Protection header.
        - Support CSP in notifications framework.
        - Fetch plugin configs from JSON file to be
          CSP compliant.
        - Support CSP in Matomo/Piwik plugin.
        - Removed deprecated default behaviour
          of the Piwik/Matomo plugin.
        - Support CSP in overview SVG image.
        - Fix guided tour to work with CSP.
        - Fix strict-mode in tour.
        - Define resources in Makefile.
        - Support Mojolicious >= 9.
        - Remove deprecated helper methods.
        - Introduce Kalamar::Request and
          kalamar->request helper.
        - Move /js/tracking.js to /settings/asset/tracking.js
          to simplify asset configuration in proxy servers.
        - Fix working directory for plugin configuration.
        - Make mailto: embedding CSP compliant.
        - Add frame-src to Piwik plugin as '*' may be
          overwritten.
        - Fix tutorial queries (reported by margaretha).

0.40 2020-12-17
        - Modernize ES and fix in-loops.
        - add roll() method to state object.
        - Fix wrong hint-mirror behaviour in Firefox.
        - Fix VC fragments for redundant constraints.
        - Modernize ES and improve variable declarations.
        - Improve JS test coverage for Datepicker.
        - Fix character errors in hint helper at position 0.
        - Improve JS test coverage for tutorial.
        - Move "use strict" to file level.
        - Fix bug where event bubbles when prefix is clicked
          in hint menu.
        - Remove email support from login (as is not
          or no longer supported by LDAP) (#99).
        - Fix requirement of KorAP.vc in docgroupref
          (which broke the vc demo).
        - Improve RegEx-Button in vc builder.
        - Added 'Troubleshooting' section to Readme.
        - Update for Mojolicious >= 8.66.

0.39 2020-10-07
        - Add information on secret file to Readme.
        - Change default API endpoint to korap.ids-mannheim.de.
        - Fix label for toggle plugins.
        - Activate plugin registry.
        - Forward 'pipe' parameter to backend.
        - Introduce base css file for plugins.
        - Refactoring of sass files.
        - Added query form API to plugin server.
        - Exclude search results from robot indices.
        - Added responsive 'news' style.
        - Add support for icons in plugin definition (hebasta).
        - Change buttonGroup API to accept class and
          icon definitions.
        - Added query parameter API to plugin server.
        - Minor documentation fix in Koral.
        - Added banner style.
        - Introduced early 'Plugins' plugin to embed external
          services.
        - Introduced *-latest.css/*-latest.js files for plugin
          assets.
        - Add associates() method to state objects.
        - Add minimize() method to views.
        - Add "setWidget" action for plugin registration.
        - Add clear() method to state objects.
        - Fix "setWidget" action when the service was closed
          instead of minimized.
        - Add registrable permissions to widgets and services
          (#112).
        - Fix plugin info box.

        WARNING: If you relied on the former default API endpoint
          being http://localhost:9999/, this will break your
          deployment. Please override the default API endpoint.

0.38 2020-06-16
        - Support X-Forwarded-Host name for proxy.
        - Document API URI.
        - Improve redirect handling in proxy.
        - Added support for OAuth2 client registration.
        - Added support for OAuth2 client listing.
        - Added requestMsg() methods to clients for retrieving
          data from the embedding server.
        - Improve error status codes.
        - Support HTML responses for match information.
        - Reuse failure template.
        - Added support for OAuth2 client unregistration.
        - Remove experimental status of proxy (and therefore
          configuration option 'experimental_proxy') and enable
          proxy by default.
        - Establish 'after_search_results' content part.
        - Establish 'after_search' hook.
        - Recommend log in on zero matches in search results
          in case not logged in (addresses #67).
        - Update Mojolicious requirement for security reasons.
        - Fix order of promises in login handling.
        - Update Test::Mojo::Session to be compatible with latest
          version of Mojolicious.
        - Added Dockerfile.

0.37 2020-01-16
        - Removed deprecated 'kalamar_test_port' helper.
        - Separated KalamarHelpers and KalamarPages.
        - Renamed 'doc_link_to' to 'embedded_link_to'
          and deprecated 'doc_link_to'.
        - Renamed 'doc_ext_link_to' to 'ext_link_to'
          and deprecated 'doc_ext_link_to'.
        - Renamed 'doc_uc' to 'under_construction'
          and deprecated 'doc_uc'.
        - Introduced 'page_title' helper.
        - Simplified documentation routing.
        - Added 'realm' parameter to 'embedded_link_to' helper.
        - Introduced 'navigation' helper with 'realm' parameter.
        - Deprecated 'doc_navi' helper in favor of 'navigation'
          helper.
        - Added 'navi->set' and 'navi->add' helper.
        - Added settings skeleton.
        - Added query panel for query views.
        - Added result panel for plugin registration (hebasta).
        - Added state object.
        - Added toggle button to buttongroup.
        - Added pipe object to implement KoralPipes.
        - Separated "service" from "widget" plugin embeddings.
        - Implemented preliminary host->plugin communication.
        - Fixed matchID transformation to deal with textSigles
          having dashes.
        - Catch timeouts in proxy.
        - Support non-verbal elements in token table view.
        - Refresh corpus statistics by clicking the
          statistics button (#107, hebasta)
        - Fixed links to Leibniz association (hebasta)
        - Make proxy timeouts configurable.
        - Show busy indicator while waiting for query results
          (#104).
        - Update JS dependencies.

0.36 2019-09-19
        - Rename all cookies to be independent
          for different instance (#94).
        - Enable https only via
          configuration option 'https_only'.
        - Make VC replaceable via KorAP.vc.fromJson().
        - Emit 'after_render' in proxy responses
          to make it accessible to post processing
          (such as the Piwik plugin).
        - Fix treatment of legacy "collection" parameter.
        - Fix pagination by not repeating page value in URL.
        - Added auto-refresh of OAuth tokens.
        - Added token revocation on logout.
        - Improve visibility of keyword fields in metadata view.

        WARNING: This requires relogin for all users!

0.35 2019-07-19
        - Added EXPERIMENTAL proxy to API route.
        - Remove deprecated api configuration
          (requires api_path instead now).
        - Deprecated 'collection' parameter in
          favor of 'cq' (#92).
        - Update API for statistics.
        - Introduced documentation on CQL (margaretha).
        - Introduced documentation on Cosmas 2.
        - Improved documentation on APIs.
        - Introduced documentation on FCS-QL (margaretha).
        - Enable experimental proxy via
          configuration option 'experimental_proxy'.
        - Updated documentation on annotations.
        - Introduced documentation on Annis QL (margaretha).
        - Improved documentation on data.
        - Removed documentation stub for wildcards
          (fully integrated in C2 documentation).
        - Improved documentation on regular expressions.

0.34 2019-06-26
        - Introduced guided tour (hebasta, #19).
        - Updated dependency on M::P::Notifications to
          be compatible with recent versions of Mojolicious.
        - Introduce cuts in token views.
        - Improve QueryCreator to single-quote-escape special
          characters in orth-line and include more symbols.
        - Remove deprecated auth_support support.
        - Add OAuth2 password grand flow.

0.33 2019-03-28
        - Fix problem with serialization and deserialization
          of large numerical values (#87).
        - Added command to generate example HTML file
          to pick from JS test suite.

        WARNING: This requires complete recaching, so run
          $ perl script/kalamar chi clear default
          $ perl script/kalamar chi clear user
          in your MOJO_MODE environment after update.

0.32 2019-03-12
        - Support attachements in metadata fields (#77).
        - Added ping request option to Piwik.
        - Fix handling of login errors.
        - Added Statistics reload option (hebasta, #66).
        - Fixed VC query serialization (hebasta).
        - Fix treatment of 'data:,'-attachements.
        - Rename "Institute for the German Language" to
          "Leibniz Institute for the German Language".
        - Fixed "next"-character in paginations.
        - Added new IDS logo.
        - Fix timeout cache (#84).

0.31 2018-11-30
        - Update to Mojolicious >= 8.06.
        - Made Authentication/Authorization a separated Kalamar::Plugin::Auth
          (deprecated most helpers from Kalamar::Plugin::KalamarUser).
        - Introduced abstract 'korap_request' helper.
        - Introduce 'sidebar' content_block.
        - Introduce 'headerButtonGroup' content_block.
        - Added corpusByMatch assistant (#27).
        - Fixed XML fragment serialization in KQ highlighter.

0.30 2018-11-13
        - Rewrote backend:
          - Removed dependency of Mojolicious::Plugin::Search.
          - Removed abstract API.
        - Improved backend error handling.
        - Improved backend test suite.
        - Removed MMap cache from default configuration
          and rely on in-memory cache.
        - Introduced Piwik as a separated plugin
          (no longer a mandatory plugin).

0.29 2018-10-05
        - Deprecated Kalamar.api configuration key
          in favor of Kalamar.api_path.
        - Fix replacement of docs with docGroupRefs in
          VC builder.
        - Improve touch support for menus.
        - Improve touch support for annotation assistant.
        - Move token table view to marked match.
        - Added metadata headers.
        - Update to Mojolicious >= 8.02.

0.28 2018-08-29
        - Introduced Widget based plugin system.
        - Added corpus statistics to VC (hebasta, #25).
        - Introduce center alignment (#63).
        - Change KWIC lines from table style
          to flexbox style (#31).
        - Added doc group reference to VC builder (#62).
        - Show VC name, when a reference is defined.
        - Make close in match view to minimize.
        - Add minimize button to VC.
        - Make unspecified values in VC a button.
        - Fixed KoralQuery view to correctly update session.

0.27 2018-07-23
        - Introduced content blocks to create
          flexible entry lists in the footer
        - Add marker for "cutted" matches.
        - Re-enabled Windows installations.
        - Added buttongroup class.
        - Introduced panel and view system for
          results and matches.
        - Support verbatim keys/values in QueryCreator
          to deal with Koral issue #42.

0.26 2018-04-06
        - Added meta data view.
        - Attach reference line to match bottom.
        - Separate match views and integrate relation menu
          into reference line.
        - Attach querycreator object to annotation table.
        - Update client side dependencies
        - Introduce development mode to client side code.
        - Generalized Poliqarp tutorials and made
          example queries corpus independent.
        - Improve README.
        - Protect login for csrf attacks.
        - Remember app state after login (issue #20).
        - Fixed DRuKoLA annotation assistant data.
        - Fixed server error reporting.
        - Introduced text type in VC creation.
        - Removed "contains" and "containsnot" from
          string type.
        - Added "ne" operation to date meta type.
        - Added Piwik/Matomo integration.

0.25 2018-01-31
        - Make annotation assistant configurable.
        - Support multiple prefixes in menus.
        - Show annotation tooltips in table views.
        - Improve result display when JavaScript is disabled.
        - Improve VC creation tool by supporting "blurring".
        - Make tutorial queries localizable for different default corpora.
        - Update dependencies.
        - Add lwc annotations.
        - Adapt support for new relation serialization by Krill.

0.24 2017-11-22
        - Added support for relation visualization.
        - Added support for FCSQL.

0.23 2017-09-20
        - Added query creator tool.
        - Fix visualization of empty contexts in KWIC.
        - Added announcement template.

0.22 2017-06-26
        - Added user authentification using Kustvakts LDAP
          connection.
        - Added X-Forwarded-For.
        - Introduced proxy_prefix as a configuration option.
        - Added support for more rewrite options in js.
        - Fixed legacy sigle parsing.

0.21 2017-02-01
        - Use textSigle for API communication instead of
          {corpus,doc,text}ID.
        - Added alert to annotation assistant.
        - Improved menu creation.
        - Introduced benchmark system.
        - select elements are now improved menus.
        - Annotation menu do not append menus anymore.
        - Updated dependency for bugfixed Localize.
        - Improved readme for localization generation.
        - Fixed select menus to show selected item on
          initialization.
        - Improved compatibility for new text sigles.
        - Fixed alert to not be correctly hidden.
        - Added download of tree visualizations.
        - Do not show multiple identical annotations
          in table view.
        - Added preliminary support for metadata columns.
        - Added preliminary support for multimenus.
        - Updated to more recent version of Mojolicious (7.23).
        
0.20 2016-05-25
        - Improved menu using sliders.
        - Improved menu to make prefixes chooseable,
          even if list can't be filtered.
        - Improve pageup/pagedown behaviour in menus.
        - Fixed multiple bugs in menu.

0.19 2016-04-28
        - Improved datepicker to enter date strings.
        - Improved menus to have fixed length depending
          on entry list.

0.18 2016-02-29
        - Support for dashes in identifiers.
        - Minor changes to the layout.
        - Simplified configuration file.

0.17 2015-11-13
        - Support a larger template cache.
        - Minor style adjustments.

0.16 2015-06-18
        - Update to new KoralQuery API.
          WARNING! This version is no longer compatible
          with old responses of Krill.
        - Introduced new notifications engine.

0.15 2015-05-21
        - Cleanup for GitHub release
        - First realease on GitHub.

0.14 2015-04-15
        - Redesign of JS and Sass assets
        - Introduced RequireJS
        - Introduced VC
        - Improved tutorial
        - Localized client files

0.13 2015-03-10
        - Project name is now "Kalamar"
        - Removed Mr Crabs - introduced Karl
        - Support semantic markup for KWIC
        - Fixed Click-bug in annotation menu
        - Renamed "KorAP" classes to "Kalamar"
        - Support proxy

0.12 2015-01-28
        - Fixed alignment bug

0.11 2014-01-16
        - Fixed paging bug with the async api
        - Disabled Testing feature in tutorial
        - Improved test suite

0.10 2014-12-21
        - Fixed time_exceeded bug
        - Fixed test_port bug for inspection button

0.09 2014-12-03
        - Added new API module

0.08 2014-11-19
        - Added new suggestion module

0.07 2014-11-03
        - Added API-Response view

0.06 2014-09-22
        - Updated certain Notifications and AssetPack plugins
        - Updated pagination plugin

0.05 2014-07-15
        - Improved tutorial support
        - Added Exception mail system

0.04 2014-07-08
        - Fixed template view
        - Preliminary match view
        - Switched to asset pipeline wth sass
        - Added syntax highlighting to JSON
        - Update to Api 0.1

0.03 2014-06-20
        - Added preliminary autocompletion support (freetime project)

0.02 2014-06-17
        - Added morphological tables

0.01 2014-05-31
        - Simplifications:
          Notifications plugin is at
          https://github.com/Akron/Mojolicious-Plugin-Notifications
          All other plugins can be found at CPAN
