@tomachalek tomachalek released this Dec 15, 2017 · 126 commits to release-0.11.x since this release

Assets 2

User features

  • 2-dimensional frequency distribution with confidence intervals
  • support for UNDO in Live-attributes plug-in
  • support for UNDO in improved Tag-builder plug-in
  • improved query history
    • query history is now mapped to saved concordances which allows full query form restore (including all the text types)
    • checked text types are now properly restored too
    • query history items can be archived with a custom name for later reuse
  • IPM on demand calculation now works only in well defined situations (= in case user clicked text types using a respective checkbox form)
  • the chart depicting line group proportions can be exported into a custom format
    • currently, there is a module for the Excel export
  • word-list
    • more convenient upload and in-browser editing of uploaded wordlist black/white-lists
    • now it is possible to go to the last page
  • added an initial support for keyboard shortcuts on the concordance view page
  • added experimental plugin token_detail (currently for hackers, the API will change)
  • added support for hiding individual columns of parallel corpora in concordance view

Internal changes


  • the whole user interface is now based on React+Flux
    • React 16.2 is used and fully supported without helper libraries
  • removed some 3rd party dependencies: JQuery, JQuery-cookie, Typeahead+Bloodhound, RequireJS
  • project compilation and building is now based on Webpack (i.e. Grunt has been removed from the project)
  • improved specification of plug-in API TypeScript interfaces
    • client-side plug-in interfaces are now in a single file public/files/js/types/plugins.d.ts
  • added support for typed React components (TSX compiled by TypeScript compiler)
  • changed paths of some directories:
    • public/files/js/tpl -> public/files/js/pages
    • public/files/ts/declarations -> public/files/js/vendor.d.ts


  • improved and simplified error processing on server-side
    • HTTP redirect is now properly supported also in JSON mode
  • default_auth plug-in now supports more secure password storage format (pbkdf2)
  • controller refactoring - private vs. public attributes and methods
  • added some Python typing stub files for easier development when using an IDE
  • concordance calculation status is now stored directly to a respective cache record in database instead of a "pid-file" used in previous versions. This keeps all the related information together.

Backward compatibility + how to upgrade

Version 0.11.0 contains several minor changes which require update in configuration, stored data and alternative plug-in implementations. The release contains all the necessary scripts to automate the upgrade.

Subcorpora paths

KonText up to 0.10.x uses paths /path/to/subc_root/[user name]/[corpus ID] while KonText 0.11.x uses directories /path/to/subc_root/[user ID]/[corpus ID] . To upgrade the paths run

python scripts/migration/to-0.11/updsubc.py

DB plug-in

The interface of general_storage.KeyValueStorage now requires new methods:

list_set(key, idx, value) which mimics Redis' LSET function
clear_ttl(key) which mimics Redis' PERSIST function

Methods hash_* now store values in JSON-serialized form. It means that user of the API should never
serialize data himself.

a = dict(foo='bar')
plugins.runtime.DB.hash_set('x', 'y', a)   # OK

plugins.runtime.DB.hash_set('x', 'y', json.dumps(s))  # Wrong!

Users of redis_db implementation do not have to do anything to upgrade.

default_db plugin has been renamed to sqlite3_db which means users of default_db must upgrade their

user_index entry in database

The change in DB.hash_* caused the need for upgrade in user_index (which maps from username to user_id). To upgrade run:

python scripts/migration/to-0.11/upd_user_index.py

conc_persistence plug-in

the API now contains new method:

  • archive(conc_id) which is expected to make a respective concordance record persistent

auth plug-in

Method permitted_corpora() is now expected to return a dictionary of form canonical_corpus_id => corpus_variant (previously: canonical_corpus_id => corpus_id) where variant represents a registry file path infix between registry root path and registry file name. In case you do not use registry file variants (e.g. to restrict a kwic context width), just return an empty string as a value.

Dec 14, 2017
Merge pull request #2096 from tomachalek/param_fix
Check for an empty list

@tomachalek tomachalek released this Jun 27, 2017 · 1352 commits to master since this release

Assets 2

Version 0.10.0 should be compatible with 0.9.x

User features

  • special KWIC detail rendering for spoken corpora with easily distinguishable speeches
  • custom text types mixing for user-defined subcorpora (something like: "give me 30% fiction and 70% news")
  • fully editable query "pipeline" allows users to edit any operation (query, filter, sorting, sample) and then run all the operations again
  • colorized user-defined concordance line categories
  • corpus switching without full page reload
  • new on-screen keyboard

Internal changes

  • most of the forms (query, filter, sort,...) rewritten to React+Flux
  • miscellaneous refactoring and unused code removal

@tomachalek tomachalek released this Feb 3, 2017 · 34 commits to release-0.9.x since this release

Assets 2

Fixed issues

Fix #1385
Fix #1383
Fix - do not preserve current subcorpus when selecting a corpus
Fix - do not use server-shortened attr values
Fix - form pre-submit clean-up
Fix - CQL client-side grammar
Fix - Rewrite syncing of user corpora permissions
Fix - custom "within" form
Fix - Misprint in in templates/document.tmpl
Fix - lindat_footer_bar plugin fixed
Fix #1428
Fix - result[static_url]
Fix - incorrect result size in breadcrumb-like navigation bar
Fix #1475

Other changes

Use cpickle instead of pickle when possible

@tomachalek tomachalek released this Oct 24, 2016 · 84 commits to release-0.9.x since this release

Assets 2

Fixed issues

  • Fix request argument preparing
  • Fix #1312
  • Fix #1313
  • Improve chunk processing, fix import path
  • Recover from failed unlink
  • Fix #1322
  • Fix #1331
  • Fix subcname encoding
  • Backport improved CQL/RegExp syntax checker from 0.10.x
  • Fix #1350
  • Fix #1351
  • Fix #1359
  • Fix #1365
  • Fix - do not update react component after unmount
  • Fix #1343
  • Fix #1374
  • Fix cache cleanup

@tomachalek tomachalek released this Sep 28, 2016 · 131 commits to release-0.9.x since this release

Assets 2

This is the first public 0.9.x release. Special thanks to @ThatIsGeek for a security advice.

New features

  • concordance view
    • positional attributes visible on mouse-over (concordance view)
    • navigating between pages without whole web page reloading
    • added support for renaming/removing of concordance line groups
    • added support for displaying of syntactic structures based on data encoded in a respective vertical file
    • the whole view rewritten to React+Flux
  • caching of frequency distribution pages for faster pagination
  • caching of collocation pages for faster pagination
  • added support for displaying line numbers on concordance page
  • live_attributes plug-in:
    • added support for filtering based on aligned corpora
    • added support for auto-complete in raw text inputs (i.e. attributes with too many values to be shown)
    • whole Text Types module rewritten to React+Flux
  • subcorpora list page - fixed sorting, improved user interface
  • asynchronous building of a subcorpus
  • conc_cache plug-in
    • query -> cache_file mapping is now stored in Redis; this solution does not require the locking plug-in
  • fixed URL generating on miscellaneous pages allowing installation within URL sub-directories
  • new plug-in: footer_bar
  • application_bar plug-in
    • added support for loading external scripts and styles
  • new plug-in: ucnk_remote_auth3 (Czech National Specific authentication)
  • improved theme support
  • Celery worker - KonText now supports json mode operation (previously: pickle)
  • any plug-in now may include custom CSSs which are automatically packed into the main project (if enabled in config.xml)