• [#433] Rewrite of trend chart outlier detection
    • Added a “statistic” selector that allows the selection of “measurement” or “isolation forest”

    • Remove outlier detection from normal measurement plot, because the normal assumption is not reasonable

    • The isolation forest statistic plots the multivariate outlier score in a non-parametric way, with an adjustable threshold

  • [#440] Set up poetry to manage the dependencies, which might keep the dependencies from breaking down, and reduce the chances of the happening of issues such as [#430]

  • [#443]
    • Dropped support for Python 3.6, added support and testing for Python <= 3.11

    • Added docker-compose logging in the CI

    • Stopped using Meinheld workers in the Docker image, since this is largely unmaintained

    • Fix a bug in the database script when constructing URLs that broken under new SQLAlchemy versions

    • Bump pytest

    • Fix a bug in pytest where we used scope as a positional argument

    • Update the SubFactoryList to a new version that works with newer FactoryBoy versions


Breaking Changes

  • [#138] Added USER_REGISTRATION_APPROVAL as a config variable, which defaults to true. This means that the admin must explicitly activate new users in the user management page (/users/admin/users) before they can login. To disable this feature, you need to create a config file (for example megaqc.conf.yaml) with the contents:


    Then, whenever you run MegaQC, you need to export MEGAQC_CONFIG /path/to/megaqc.conf.yaml

  • Much stricter REST API permissions. You now need an API token for almost all requests. One exception is creating a new account, which you can do without a token, but it will be deactivated by default, unless it is the first account created

  • Dropped support for Node 8

New Features

  • [#140] Added a changelog. It’s here! You’re reading it!

  • Sphinx based documentation on Github Pages

  • [#69] Added a check to verify that a database exists and exit nicely if not

Bug Fixes

  • [#139] Fixed the user management page (/users/admin/users), which lost its JavaScript

  • [#148] Explicitly disable pagination for find() calls, ensuring we get more than 30 results in certain places

  • [#156] Fixed comparison plot running into comparisons with None values

  • [#170] Improved handling of environment variables with environs

  • [#194] Forward more headers through nginx when using Docker Compose. This should avoid bad HTTP redirects.

Internal Changes

  • Tests for the REST API permissions

  • Enforce inactive users (by default) in the model layer

  • Many and more dependency updates