0.43 2021-11-16
        - 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.
        - HintMenu is now based on containerMenu instead of regular
          menu (lerepp)

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