Note: Breaking changes between versions are indicated by "💥".
- [Bugfix] Fix "Read-only file system" errors when running
tutor dev runserver
commands on Mac OS. (#392)
- [Bugfix] Fix upload of video transcripts to S3 (again)
- [Bugfix] Fix missing celery tasks from edx-platform (see upstream PR)
- [Security] Apply security patch 25834
- [Bugfix] Fix Android apk directory mount path
- 💥[Improvement] Upgrade Open edX to Koa
- 💥 Setting changes:
- The
ACTIVATE_HTTPS
setting was renamed toENABLE_HTTPS
. - Other
ACTIVATE_*
variables were all renamed toRUN_*
. - The
WEB_PROXY
setting was removed andRUN_CADDY
was added. - The
NGINX_HTTPS_PORT
setting is deprecated.
- The
- Architectural changes:
- Use Caddy as a web proxy for automated SSL/TLS certificate generation:
- Nginx no longer listens to port 443 for https traffic
- The Caddy configuration file comes with a new
caddyfile
patch for much simpler SSL/TLS management. - Configuration files for web proxies are no longer provided.
- Kubernetes deployment no longer requires setting up a custom Ingress resource or custom manager.
- Gunicorn and Whitenoise are replaced by uwsgi: this increases boostrap performance and makes it no longer necessary to mount media folders in the Nginx container.
- Replace memcached and rabbitmq by redis.
- Use Caddy as a web proxy for automated SSL/TLS certificate generation:
- Additional features:
- Make it possible to disable all plugins at once with
plugins disable all
. - Add
tutor k8s wait
command to wait for a pod to become ready - Faster, more reliable static assets with local memory caching
- Make it possible to disable all plugins at once with
- Deprecation: proxy files for Apache and Nginx are no longer provided out of the box.
- Removed plugin
{{ patch (...) }}
statements:- "https-create", "k8s-ingress-rules", "k8s-ingress-tls-hosts": these are no longer necessary. Instead, declare your app in the "caddyfile" patch.
- "local-docker-compose-nginx-volumes": this patch was primarily used to serve media assets. The recommended is now to serve assets with uwsgi.
- 💥 Setting changes:
- [Security] Apply upstream edx-platform security patch
- [Improvement] Increase the timeout of the gunicorn worker command in openedx Dockerfile
- [Bugfix] Fix Dockerfile parsing on Windows
- [Improvement] Add option to patch lms and cms nginx server blocks
- 💥[Improvement] Remove
dev/local pullimages
. Instead, rundev/local dc pull
. - 💥[Improvement] Add
dev dc
andlocal dc
commands as thin wrappers of thedocker-compose
CLI. - 💥[Improvement] Remove the undocumented
local run_hook
command. Instead, runlocal init --limit=...
. - 💥[Improvement] Remove
tutor android pullimage
command. Instead, runtutor images pull android
. - [Bugfix] Fix
config save
on Windows. - [Bugfix] Fix platform checking in user ID function
- [Bugfix] Fix dependency error during
pip install tutor
due to urllib3 incompatibility - [Bugfix] Fix user ID checking under Windows.
- [Bugfix] Fix template rendering for Windows users.
- [Improvement] Switch to
bcrypt
for htpasswd password generation, for better portability on Windows. - [Improvement] In the openedx production docker image, add some jitter to the gunicorn worker restart process to prevent all workers from restarting at the same time.
Note for users of the Tutor AMI: To upgrade from a previous v10 release, run:
curl -fsSL https://overhang.io/tutor/ami/upgrade.sh | sh
- [Improvement] Mount config and setting files in read-only mode
- 💥[Improvement] Enable unit completion tracking by default.
- [Bugfix] Run
apt update
beforeapt install
when installing deps in the openedx Dockerfile
- [Improvement] Make all commands considerably faster
- [Improvement] Make it easier to override Mongodb connection parameters
- [Bugfix] Add support for .woff and .woff2 font files in themes (thanks @mrtndwrd!)
- 💥[Improvement] Simplify CORS configuration
- [Bugfix] Fix Apache proxy configuration when HTTPS is enabled (#370)
- [Feature] Add
images printtag
command - [Improvement] Make it possible to override individual contact email addresses with plugins
- [Bugfix] Replace "no-reply@LMS_BASE" email address by regular contact email address
- [Bugfix] Disable learner records globally by default
- [Improvement] Upgrade to the latest release of MySQL 5.6
- [Improvement] Non-plugin settings added by "set" directives are now automatically removed when the plugin is disabled (#241)
- [Improvement] Add CORS basic configuration to LMS for subdomains of the LMS
- [Feature] Add support for
images build --add-host
option (thanks @grinderz!) - [Bugfix] Fix podman compatibility by replacing
docker-compose rm
command bydocker-compose stop
when stopping containers - [Improvement] Improve plugin data deletion
- [Improvement] Introduce the
OPENEDX_COMMON_VERSION
setting - [Bugfix] Make it possible to run init jobs without starting the entire platform
- [Improvement] Reduce "openedx" Docker image size with static asset de-duplication
- [Bugfix] Upgrade all services to open-release/juniper.3
- [Bugfix] Fix upload of video transcripts to S3
- [Improvement] Memorize whether the user is running a production platform during interactive configuration
- [Bugfix] Fix incorrect loading of some resources from localhost:18000 in development
- [Bugfix] Fix Samesite=None Secure=False cookie error for users accessing the LMS with the latest release of Google Chrome
- [Security] Apply javascript security patch (pull request)
- [Bugfix] Fix "FileError" on Scorm package upload in Scorm XBlock
- 💥[Improvement] Serve openedx static assets with whitenoise instead of nginx. This removes the
k8s-deployments-nginx-init-containers
patch. Plugins are encouraged to implement static asset serving with Whitenoise as well. - [Bugfix] Fix dependency on mysql service when mysql is not activated
- [Improvement] Improve openedx Docker image build time and size with multi-stage build
- 💥[Feature] Get rid of outdated sysadmin dashboard in LMS at /sysadmin
- [Security] Apply edx-platform upstream xss security fixes (pull request)
- 💥[Feature] Make it possible to override the docker registry for just a few services by setting
DOCKER_IMAGE_SERVICENAME
values.
- [Feature] Upgrade all repositories to open-release/juniper.3
- [Bugfix] Fix
reload-gunicorn
command - [Feature] Enable sysadmin dashboard in LMS at /sysadmin
- [Bugfix] Fix pycontracts installation error when building openedx Docker image
- [Bugfix] Fix access to dicussion forum in development mode
- [Bugfix] Share grade download settings between the LMS and the CMS
- [Bugfix] Fix android user creation during init
- [Bugfix] Fix undefined settings in k8s scripts, such as
createuser
- [Bugfix] Fix TypeError on viewing xblock
- [Bugfix] Fix authentication in Android mobile application
- [Bugfix] Fix unsent activation emails and other asynchronous tasks
- [Security] Apply edx-platform upstream xss security fixes (pull request)
- [Bugfix] Fix broken
tutor ui
command in binary
- [Bugfix] Fix error on android user creation
- [Bugfix] Fix crash when viewing problem in LMS
- [Bugfix] Fix missing webpack-stats.json in openedx Docker image
- [Bugfix] Fix KeyError when running
local quickstart
for the first time
- 💥[Improvement] Upgrade to Juniper 🍾
- [Bugfix] Fix nginx resolver address to address container restarts
- [Feature] Add
--limit=myplugin
option toinit
commands to limit execution of initialisation to certain services and plugins
- [Improvement] Add
dig
,ping
utilities to openedx-dev Docker image - [Bugfix] Resolve "Can't connect to MySQL server" on init
- [Improvement] Make it possible to customize the MySQL root username, for connecting to external MySQL databases
- [Improvement] Upgrade Android app to v2.21.1 and enable many features, such as downloading videos to SD card. Thanks for the help @ejklock!
- [Bugfix] Fix Android app crash when accessing course
- [Improvement] Add ability to rescore SCORM units
- [Bugfix] Fix scoring of graded SCORM units
- [Improvement] Increase maximum uploaded file size in the CMS from 10 to 100 Mb.
- [Security] Apply most recent edx-platform security patches
- [Bugfix] Fix oauth2 authentication with 3rd-party services, such as discovery
- [Bugfix] Upgrade scorm xblock to solve caching issue
- [Improvement] Increase max upload allowed size to 250Mb in CMS
- 💥[Improvement] Do not deploy an ingress or SSL/TLS certificate issuer ressource by default in Kubernetes
- [Improvement] Fix tls certificate generation in k8s
- 💥[Improvement] Radically change the way jobs are run: we no longer "exec", but instead run a dedicated container.
- 💥[Improvement] Upgrade k8s certificate issuer to cert-manager.io/v1alpha2
- [Feature] Add SCORM XBlock to default openedx docker image
- [Feature] Make it easy to add custom translation strings to the openedx Docker image
- [Improvement] Make it possible to rely on a different npm registry for faster image building
- [Bugfix] Make sure all emails (including "password reset") are properly saved to a local file in development mode (#315)
- [Improvement] Add
openedx-development-settings
patch to patch the LMS and the CMS simultaneously in development - [Bugfix] Fix missing celery tasks in the CMS
- [Bugfix] Fix updates to the course structure in the LMS (#302)
- [Bugfix] Fix Android app build for domain names that include a dash ("-")
- [Feature] Add
encrypt
template filter to conveniently add htpasswd-based authentication to nginx - [Bugfix] Fix "missing tty" during init in cron jobs
- [Bugfix] Fix missing js translations
- [Bugfix] Fix tls certificate generation in cron jobs
- [Bugfix] Fix "Unable to resolve dependency" error during forum initialisation
- [Feature] Add
settheme
command to easily assign a theme to a domain name - [Improvement] Modify nginx access logs to include request scheme and server name (plugin developers should use the "tutor" log format)
- [Bugfix] Fix DNS resolution of restarted service
- [Feature] Restart multiple services with
local restart
- [Feature] Make it possible to easily reload openedx gunicorn process with
tutor local exec lms reload-gunicorn
- [Improvement] Rename lms/cms_worker to lms/cms-worker in local deployment
- [Improvement] Add the management plugin to the rabbitmq container
- [Improvement] Make it possible to run an Elasticsearch service on https
- [Improvement] Switch edx-platform from open-release/ironwood.2 tag to the open-release/ironwood.master branch
- [Security] Upgrade django to 1.11.28
- [Improvement] Make it possible to configure the elasticsearch heap size
- [Bugfix] Fix broken elasticsearch environment variables
- [Improvement] Restore more recent Android app version (#289).
- [Bugfix] Fix auth problem in Android app (#289)
- [Bugfix] Fix incorrectly parsed empty strings for
config save --set ...=...
commands
- [Bugfix] Make sure
docker-compose.override.yml
are loaded in dev and local contexts
- [Feature] Add
config render
command
- [Feature] Add support for simple, YAML-based plugins
- 💥[Improvement] The output of
plugins list
now includes plugin version numbers
- [Improvement] Explicitely point to docker.io images, when necessary, for podman compatibility
- [Bugfix] Fix oauth authentication in dev mode
- [Improvement] Upgrade to the 3.7 docker-compose syntax
- [Improvement] The
dev runserver
command can now be run for just any service - 💥[Feature]
dev run/exec
commands now support generic options which are passed to docker-compose. Consequently, defining theTUTOR_EDX_PLATFORM_PATH
environment variable no longer works. Instead, users are encouraged to explicitely pass the-v
option, define a command alias or create adocker-compose.override.yml
file.
- [Improvement] Make it possible to override the project name in development mode
- [Bugfix] Fix user switching in development mode
- [Bugfix] Fix "k8s quickstart" crash
- [Security] Apply django 1.11.21 -> 1.11.27 security patches
- [Bugfix] Fix running dev image with
sudo
- [Improvement] Add
cms/lms-env-features
patches (#276) - [Feature] Add plugin subcommands
- 💥[Improvement] Move
-r/--root
option to parent command level - [Bugfix] Fix course about page visibility
- [Improvement] Print gunicorn access logs in the console
- 💥[Improvement] Get rid of the
indexcourses
andportainer
command (#269)
- [Improvement] Add
k8s-deployments-nginx-volume-mounts
patch - [Bugfix] Fix running forum locally when both elasticsearch and mongodb are not activated (#266)
- [Bugfix] Fix MongoDb url in forum when running separate service (#267)
- 💥[Improvement] Better
dev
commands, with dedicated development docker image. One of the consequences is that thedev watchthemes
command is replaced bydev run lms watchthemes
. - [Improvement]
images
commands now accept multipleimage
arguments
- [Bugfix] Fix missing requirements file in pypi package (#261)
- [Improvement] Add missing cms/lms production/development setting patches
- [Improvement] Allow SigV4 authentication for video upload to S3
- [Bugfix] Fix cms development settings
- [Improvement] Upgrade openedx locales to Ironwood
- [Improvement] Properly set studio title (#246)
- [Improvement] Enable Mysql strict mode
- [Feature] Introduce tutor docker image
- [Feature] Introduce
local hook
command for plugin development. - [Bugfix] Persist
private.txt
file between two runs ofconfig save
. (#247) - [Improvement] Added configuration values to limit the number of gunicorn workers for the LMS and CMS.
- 💥[Improvement] Get rid of mysql-client container
- [Improvement] Add "local-docker-compose-lms/cms-dependencies" plugin patches
- [Improvement] Use "exec" instead of "run" to initialise local platform
- [Security] Fix CustomTagModule mako template injection
- [Improvement] Move all plugins outside of the tutor repo
- [Bugfix/Improvement] Add all plugins (with data) into binary bundle (#242)
- [Bugfix] Fix missing templates in bundled plugins
- [Bugfix] Enable html certificate view
- [Bugfix] Fix missing patches from minio plugin (thanks @Wejie!)
- [Feature] Modify
createuser
commands to define a password from the command line - [Improvement] Better yaml value parsing from command line
- [Feature] Add
dev exec
command - [Bugfix] Fix incorrect notes settings definition
- [Improvement] Make it possible to start/stop/reboot a selection of services
- [Improvement] Add
local/k8s reboot
commands - [Improvement] Add
-U/--unset
option toconfig save
- [Bugfix] Fix insecure static asset loading when web proxy is enabled
- [Improvement] Rename
SECRET_KEY
configuration parameter toOPENEDX_SECRET_KEY
- [Improvement] Add support for SSL and TLS in external SMTP server (#231)
- [Bugfix] Fix missing video transcripts in LMS (#229)
- [Improvement] Make it possible to enable/disable multiple plugins at once
- [Improvement] Add a few local and k8s patches for plugins
- [Bugfix] Add pre-init hook for correct initialisation of minio
- [Security] Apply certificate XSS security patch
- [Feature] Make it possible for plugins to patch the build templates
- [Improvement] Move Xqueue and Student notes to a dedicated plugin
- [Bugfix] Fix missing password values from generated configuration
- [Bugfix] Fix incorrect settings during lms/cms init (#224)
- [Bugfix] Fix install from pypi
- [Improvement] Get rid of kubernetes python package dependency
- [Feature] Creation of a plugin system
- [Feature] Kubernetes support out of beta
- [Improvement] Switch to pinned image tags for easier upgrades
- 💥[Improvement] Remove the
-y/--yes
option:tutor config save
is now non-interactive by default. Use-i/--interactive
to force interactive mode. - 💥[Improvement] Replace the
databases
command byinit
. - [Improvement] Upgrade to ironwood.2
- [Improvement] Add
-y/--yes
option tolocal quickstart
for non-interactive quickstart - [Improvement] Persist LMS/CMS logs to disk by default (with collaboration from @silviot 💪)
- [Bugfix] Fix installing a locally cloned requirement repository
- [Improvement] Add
--no-cache
option toimages build
- [Improvement] Make it possible to configure the notes service hostname
- [Improvement] Better, more robust MySQL initialisation
- [Bugfix] Fix boolean configuration choices
- [Improvement] Add
local exec
command for running commands inside existing containers - [Bugfix] Fix triple display of courses in LMS search (upstream patch, #189)
- [Bugfix] Reduce the number of gunicorn workers to address RAM usage (#207)
- [Bugfix] Fix "Timeout after 20s" on running migrations
- [Bugfix] Fix KeyError on first quickstart
- [Improvement] De-duplication of prod/dev settings. Thanks @silviot! 😺
- [Feature] Pluggable LMS/CMS/forum
- [Improvement] Safer environment overwrite. Thanks @silviot! 👐
- [Security] Fix Jinja2 vulnerability
- [Improvement] Improve CLI cold start performance
- [Improvement] Allow uppercase "Y" and "N" as answers to boolean questions
- [Improvement] Rename
--silent
option to-y/--yes
- [Bugfix] Fix (again) login from studio when https is activated (#193)
- [Bugfix] Fix
pip install tutor-openedx
- [Bugfix] Fix login from localhost
- [Bugfix] Fix Android app image build
- [Improvement] Improve assets building for development
- [Improvement] Support CMS login when the CMS is not a subdomain of the LMS
- [Feature] Upgrade from Hawthorn to Ironwood
- [Feature] Multiple platforms on a single server \o/
- [Feature] Easily configure web proxy on the host
- [Bugfix] Fix
images pull all
command which failed on "all" image - [Improvement] Add configurable mongodb, SMTP and rabbitmq authentication
- [Improvement] Harmonize mysql username/password configuration parameters
- [Feature] Configurable and pluggable data storage backends (#114)
- [Feature] Enable grade downloads by default (#143)
- [Improvement] Remove orphan containers on
local start
- [Improvement]
images pull
now also pulls vendor images - [Feature] Add convenient
config printvalue
command - [Feature] Customize docker registry
- [Feature] Load configuration parameters from the system environment
- [Improvement] Automatic environment re-generation after re-configuration
- [Improvement] Error and interrupt handling in UI and web UI
- [Bugfix] Fix missing webui env directory
- [Improvement] Install python requirements in virtual env in docker image
- [Bugfix] Add missing volume for theme development
- [Improvement] Rename "config [non]interactive" command to "config save [--silent]"
- [Improvement] More explicit logging during environment generation
- [Improvement] Configurable docker images (#122)
- [Bugfix] Fix "android pullimage" command
- [Improvement] Do not upgrade images as part of quickstart
- [Bugfix] Fix USERID setup in development mode and various dev-related docs (#177)
- [Bugfix] Fix import/export of demo course (#175)
- [Feature] Add cloud deployment script
- [Improvement] Run
images pull
command - [Improvement] Run
indexcourses
on importing demo course - [Improvement] Add
runserver stop
command
- [Minor] Minimum required
click
version is 7.0 (#171) - [Bugfix] Fix
runserver
dev command (#172) - [Minor] Fix non-https link to documentation in pypi
- [Minor] Fix
createuser
documentation
- [Bugfix] Add missing template data to pypi package
- [Bugfix] Fix quickstart on Kubernetes (#164)
- [Improvement] Add datatases task to Kubernetes quickstart (#167)
- [Bugfix] Fix import paths -- 🚀 thanks @silviot!
- [Bugfix] Properly set docker project name in mysql logs -- 🦊 thanks again @silviot!
- [Bugfix] fix mysql initialisation (#159, #160)
- [Improvement] Better handling of continuous integration
- [Bugfix] fix
tutor --version
(#156) - [Improvement] Absolute settings imports -- 📯 thanks @tonytan4ever!
- [Improvement] Complete rewrite of Tutor: switch from a make-based project to a single binary which runs all commands.
- [Feature] An web user interface can be created with
tutor webui start
- [Bugfix] Add missing elasticsearch to Kubernetes deployment (#147)
- [Improvement] Upload
tutor-openedx
to pypi
- 2019-01-27 [Bugfix] Fix video transcript/srt upload and download of user-uploaded files. Thanks @dannielariola!
- 2019-01-20 [Improvement] Make it easy to load custom settings for the local production install
- 2019-01-19 [Improvement] Upgrade to Ironwood
- 2019-01-16 [Improvement] Switch license from MIT to AGPL
- 2019-01-04 [Bugfix] Fix xqueue consumer command
- 2018-12-26 [Improvement] Upgrade nodejs to 5.5.1
- 2018-12-07 [Improvement] Bundle theme and production static assets in the openedx docker image
- 2018-12-02 [Feature] Download extra locales from openedx-i18n to the Open edX Docker image
- 2018-11-28 [Feature] Easily change openedx docker image
- 2018-11-28 [Feature] Enable comprehensive theming!
- 2018-11-28 [Improvement] Get rid of datadog
- 2018-11-28 [Improvement] Upgrade docker images to ubuntu 18.04 for android, forum, notes, xqueue
- 2018-11-28 [Feature] Make it possible to define default platform language interactively
- 2018-11-26 [Improvement] Make it easier to run a forked version of edx-platform
- 2018-11-25 [Feature] Use local filesystem for open assessment file upload
- 2018-11-23 [Improvement] Faster container bootstrapping without "chmod", as suggested by @silviot
- 2018-11-20 [Bugfix] Fix cross-platform theme assets generation
- 2018-11-17 [Improvement] Custom nginx port mapping. ⚔️ @frob @frohro
- 2018-11-17 [Improvement] Add "make restart-openedx" command. 👍 @frob
- 2018-11-13 [Improvement] Facilitate install of extra XBlocks. Thanks @frob!
- 2018-10-30 [Bugfix] Fix rabbitmq restart policy
- 2018-10-03 [Improvement/Bugfix] Fix and accelerate Android application build
- 2018-10-02 [Improvement] Bump Open edX version to hawthorn.2
- 2018-09-30 [Bugfix] Fix CMS celery worker, including export tasks
- 2018-09-30 [Improvement] Simplify boolean feature flags definition
- 2018-09-29 [Improvement] Add logging commands
- 2018-09-29 [Improvement] Add self-documented help with "make help"
- 2018-09-29 [Feature] Add Portainer as an optional web UI to administer docker containers
- 2018-09-15 [Feature] Add student notes as an optional feature
- 2018-09-15 [Feature] Add templates to configurator container, which can now be run separately
- 2018-09-15 [Improvement] Rename "up" and "daemon" commands to "run" and "daemonize"
- 2018-09-15 [Feature] Activate course search and discovery
- 2018-09-15 [Bugfix] Deduplicate console logs from lms/cms
- 2018-09-05 [Improvement] Use a single email address for all inbound email
- 2018-09-04 [Bugfix] Get make commands to work with 'sudo'
- 2018-09-02 [Bugfix] Get HTTPS to work for CMS. Thanks @flytreeleft!
- 2018-08-28 [Bugfix] Fix certbot image updating
- 2018-08-27 [Improvement] Add development requirements to openedx image
- 2018-08-27 [Bugfix] Upgrade mongodb
- 2018-08-19 [Improvement] Make Xqueue an optional feature
- 2018-08-16 [Feature] Add HTTPS support