0.45 2022-05-11
        - 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)

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