This file includes a history of past releases. Changes that were not yet added to a release are in the changelog.d/ folder.
-
💥[Feature] Upgrade default charset and collation of mysql to utf8mb4 and utf8mb4_unicode_ci respectively (by @Danyal-Faheem)
- Add do command to upgrade the charset and collation of tables in mysql.
- The command will perform the following upgrades:
- Upgrade all
utf8mb3
charset toutf8mb4
- Upgrade collation
utf8mb3_general_ci
toutf8mb4_unicode_ci
- Upgrade collation
utf8mb3_bin
toutf8mb4_bin
- Upgrade collation
utf8mb3_*
toutf8mb4_*
- Upgrade all
-
[Feature] Create a new /data/openedx-media-private volume to store media files that are not publicly accessible via the browser, and create configuration that Learning Core (openedx-learning) will use to access this storage space. Learning Core will use a sub-directory of /data/openedx-media-private to store Content Library file uploads, but other apps can create their own sub-directories for their own use. (by @ormsbee)
-
💥[Feature] Update Open edX Image to use Ubuntu 22.04 as base OS. (by @dawoudsheraz)
- Adds xmlsec related dependencies to fix xmlsec import issues during translations build
-
💥[Feature] Migrate from local.edly.io to local.openedx.io. (by @regisb)
-
💥[Feature] Upgrade to Sumac. (by @dawoudsheraz)
-
💥[Feature] Replace Elasticsearch by Meilisearch. Elasticsearch was both a source of complexity and high resource usage. With this change, we no longer run Elasticsearch to perform common search queries across Open edX. This includes: course discovery, courseware search and studio search. Instead, we index all these documents in a Meilisearch instance, which is much more lightweight in terms of memory consumption. (by @regisb)
-
[Bugfix] Don't build uwsgi with XML support (by @feanil)
-
[Feature] With the new forum v2 application, users have a choice to use MongoDB or MySQL as a storage backend, course per course. New users will automatically start using MySQL, while existing users will be responsible for migrating their data themselves (before the Teak release). Upgrade instructions are available here: https://github.com/overhangio/tutor-forum/#installation. (by @regisb)
-
💥[Improvement] Get rid of the
is_docker_rootless
template filter, which was used only by Elasticsearch. (by @regisb)
[Improvement] Forcefully enable the Learning MFE's navigation sidebar when upgrading to Sumac. (by @arbrandes)
- [Bugfix] Fix CI scripts to publish macOS binaries.
- [Feature] Add integer variables
TUTOR_VERSION_MAJOR
andTUTOR_VERSION_MINOR
to the template context. These are parsed from the existingTUTOR_VERSION
string variable, which takes the format"MAJOR.MINOR.PATCH"
. We add them as a convenience to developers who need to maintain version-agnostic Tutor plugins (by @michaelwheeler and @kdmccormick). - [Feature] Adds
tutor config edit
command. This opens the active tutor environment's config.yaml in an editor for manual editing. (by @tecoholic) - [Improvement] Disable celery gossip and mingle to improve celery performance. (by @Ian2012)
- [Bugfix] Fix breakpoint debugging by attaching container stdin when running
tutor dev start <service>
for a single service. (by @Danyal-Faheem)
- [Bugfix] Do not directly upgrade MySQL from v5.7 to v8.4 when upgrading from quince as MySQL does not allow that. First, upgrade to v8.1 and then to v8.4. This process should be automatic for most users. However, if you are running a third-party MySQL (i.e.,
RUN_MYSQL=false
), you are expected to perform this process yourself. Please refer to the third-party provider's documentation for detailed instructions. Ensuring that your MySQL version is up-to-date is crucial for maintaining compatibility and security. (by @Danyal-Faheem) - [Bugfix] Run MySQL 8.1 as a separate container during upgrade from Olive to Redwood as it crashed otherwise due to the
--mysql-native-password
option not being present. (by @Danyal-Faheem) - [Improvement] Do not prompt for environment deletion by default on
tutor config save --interactive
. (by @regisb) - 💥[Improvement] Rename Tutor's two branches (by @kdmccormick):
- Rename master to release, as this branch runs the latest official Open edX release.
- Rename nightly to main, as this branch runs the Open edX master (a.k.a. main) branches, which are the basis fort the next Open edX release.
- For Tutor Nightly users who do not set a TUTOR_ROOT, both the project root (
~/.local/share/tutor-nightly
on Linux) and the plugins root (~/.local/share/tutor-nightly-plugins
on Linux) will be automatically renamed. (by @regisb)
- 💥 [Deprecation] Drop support for python 3.8 and set Python 3.9 as the minimum supported python version. (by @DawoudSheraz)
- [Feature] Add a filter to define the celery workers startup command. (by @Ian2012)
- [Improvement] When building images with
tutor images build --cache-to-registry
, use an OCI-compliant cache artifact format that should be universally compatible with all registries. This enables the use of that option when working with third-party registries such as Harbor or ECR. Requires BuildKit 0.12 or later. (by @angonz and @fghaas) - [Feature] Add the
TUTOR_BRANCH_IS_MAIN
variable to the template context, which is set to True for users running Tutor Main (by @kdmccormick). - [Bugfix] Use
TUTOR_BRANCH_IS_MAIN
rather than the edx-platform branch name in order to determine which patches to apply. This way, when developers are testing an edx-platform branch that is not master but which may be based on master, they will receive master patches rather than release patches, assuming they are running Tutor Main in the first place (by @kdmccormick).
-
[Improvement] Set
EDXAPP_TEST_MONGO_HOST
env var in the openedx-dev image so that it no longer needs to be set by hand when running edx-platform unit tests (by @kdmccormick). -
[Feature] Added
-c
or--clean
option to tutor config save: For plugin developers and advanced users, this option cleans theenv/
folder before saving, ensuring a fresh environment for testing and development. (by @CodeWithEmad) -
[Feature] Add a
patches show my-patch-name
. This is a convenient command for the troubleshooting of plugins. (by @regisb) -
[Improvement] Fixes an issue which caused 502 errors by a premature closed connection by uwsgi, it also improves the handling of SIGTERM in docker and other uwsgi improvements (by @Ian2012).
-
[Improvement] Do not run useless celery workers (lms-worker, cms-worker) in development. This should save us ~700MB memory. (by @arbrandes, @regisb).
-
[Bugfix] Fixed an issue where the site name was not limited to 50 characters when creating a new site configuration. (by @CodeWithEmad)
-
[Feature] Update Open edX version to redwood.3 (by @dawoudsheraz)
- [Feature] Update to redwood.2 tag (by @dawoudsheraz)
- [Security] Add upstream security fix as patch in Open edX image (by @dawoudsheraz)
- [Bugfix] Fix
mysql-native-password is not loaded
error in MySQL 8.4 when upgrading from tutor 15 or an earlier release to tutor 18 by enabling the plugin. (by @Danyal-Faheem)
- 💥[Feature] Upgrade default charset and collation of mysql to "utf8mb4" and "utf8mb4_unicode_ci" respectively. This upgrade should be automatic for most users. However, if you are running a third-party MySQL (i.e.
RUN_MYSQL=false
), you are expected to upgrade manually. Please refer to the third-party provider's documentation for detailed upgrade instructions. Ensuring that your MySQL version is up-to-date is crucial for maintaining compatibility and security. (by @Danyal-Faheem) - [Bugfix] Do not fail on start when there are not persistent volume claims to apply. (by @snglth)
- [Bugfix] Fix legacy warnings during Docker build. (by @regisb)
-
💥[Feature] Upgrade to Redwood (by @dawoudsheraz)
-
[Bugfix] Wrap Django5 warning imports in try-except block to avoid failures in django3 that's still in use in edx-platform's master branch (by @mariajgrimaldi).
-
💥[Feature] Pull translations via
atlas
during Docker build. This breaks theopenedx-i18n
custom locale Tutor feature in favor of OEP-58 in favor of https://github.com/openedx/openedx-translations. (by @omarithawi) -
💥[Feature] The
openedx-assets
command is replaced withnpm run
subcommands. This will slightly reduce the build time for edx-platform assets and comprehensive themes. It will also open up the door for more significant build time reductions in the future. Here is a migration guide, where each command is to be run in thelms
orcms
container:Before After openedx-assets build --env=prod ARGS
npm run build -- ARGS
openedx-assets build --env=dev ARGS
npm run build-dev -- ARGS
openedx-assets common --env=prod ARGS
npm run compile-sass -- --skip-themes ARGS
openedx-assets common --env=dev ARGS
npm run compile-sass-dev -- --skip-themes ARGS
openedx-assets webpack --env=prod ARGS
npm run webpack -- ARGS
openedx-assets webpack --env=dev ARGS
npm run webpack-dev -- ARGS
openedx-assets npm
npm run postinstall
(npm clean-install
runs this automatically)openedx-assets xmodule
(no longer necessary) openedx-assets collect ARGS
./manage.py lms collectstatic --noinput ARGS && ./manage.py cms collectstatic ARGS
openedx-assets watch-themes ARGS
npm run watch-themes -- ARGS
For more details, see the deprecation notice for paver and the static assets reference in edx-platform.
-
💥[Feature] Update MongoDB to v7.0.7 (by @dawoudsheraz) MongoDB is upgraded from version 4.4 to 7.0. Since there have been major releases since 4.4, the upgrade will need to go through them before running Mongo 7. MongoDB would need to follow 4.4 --> 5.0 --> 6.0 --> 7.0 upgrade path to work correctly. The container will keep on restarting with featureCompatibility error if the upgrade path is not followed. To upgrade mongo, run the following command based in the appropriate environment:
tutor <dev|local|k8s> upgrade --from=quince
For k8s only, the above command will not perform the upgrade automatically. Instead, the command will output a series of commands that would need to be run manually to carry out the upgrade.
- [Improvement] Upgrade Nodejs from 16.14.0 to 18.20.1 in edx-platform. (by @regisb)
- [Improvement] Auto-detect bind mounts of openedx-learning for edx-platform (by @bradenmacdonald)
- [Feature] Upgrade Open edX image to use Python 3.11 (by @dawoudsheraz)
- [Bugfix] Remove CORS_ALLOW_HEADERS setting from the LMS/Studio config template. This setting, which holds site-agnostic application logic, is now consistently set to a reasonable value upstream by LMS and CMS config. Using the upstream values fixes a bug where course import in Studio using the new Course Authoring MFE was broken in Tutor deployments because it required additional headers to be allowed (content-range and content-disposition) (by @ormsbee)
- [Improvement] Made Docker cache hits more frequent during the openedx image build via BuildKit's
COPY --link
feature (by @kdmccormick). - 💥[Improvement] Upgrade MySQL to 8.4.0. The upgrade should be automatic for most users. However, if you are running a third-party MySQL (i.e., RUN_MYSQL=false), you are expected to upgrade manually. Please refer to the third-party provider's documentation for detailed upgrade instructions. Ensuring that your MySQL version is up-to-date is crucial for maintaining compatibility and security. (by @rohansaeed)
- 💥[Improvement] Ensure that the edx-platform repository git checkout is cached by Docker during image build. This means that the cache will automatically be cleared any time there is an upstream change. Thus, it is no longer necessary to run
tutor images build --no-cache
just to fetch the latest edx-platform changes. For this to work, any GitHub repository referenced byEDX_PLATFORM_REPOSITORY
needs to end with ".git". Make sure that this is the case if you have modified the value of this setting in the past. (by @regisb)
-
[Feature] Introduces the IS_FILE_RENDERED Filter, which allows developers to specify files that should be copied directly without rendering. This update empowers developers to manage special file types, ensuring that they are transferred intact without undergoing template processing. (by @Abdul-Muqadim-Arbisoft)
-
[Improvement] Remove the obsolete
version
property from all Docker Compose files and remove the DOCKER_COMPOSE_VERSION config setting. This addresses the deprecation warning from docker-compose (version 1.27 and above) regardingversion
being obsolete. (by @jasonmokk) -
[Bugfix] Fix permissions error on windows when running
tutor dev start
(by @Danyal-Faheem)
-
[Feature] Introduces the CONFIG_USER Filter. Used to declare unique key:value pairs in config.yml that will be overwritten when running tutor config save. Useful for injecting secrets from an external secrets manager into edx, or other values that may change over time that you need to programmatically fetch. (by @abonnell)
-
[Improvement] Add ability to patch proxy configuration for Caddy (by @ravikhetani)
-
[Security] Add Upstream "Privilege re-escalation in Studio after staff access removed" git security patch in Open edX Image(by @dawoudsheraz)
-
[Security] Update Redis to 7.2.4 (by @dawoudsheraz)
-
[Improvement] Update release to open-release/quince.3 (by @dawoudsheraz)
- 💥[Bugfix] Prevent infinite growth of course structure cache in Redis. (by @regisb)
- Redis is now configured with a maximum memory size of 4GB. If this is too low for your platform, you should increase this value using the new "redis-conf" patch.
- Make sure that course structure cache keys have an actual timeout.
- [Feature] Introduce the "redis-conf" patch. (by @regisb)
- [Bugfix] Fix merge conflicts in nightly when trying to apply patches from the master branch. (by @regisb)
- [Bugfix] Ensure mounted installable packages are installed as expected upon initialization. (by @dawoudsheraz)
- [Feature] Several enhancements to the Demo Course (by @kdmccormick):
- The Open edX Demo Course has been re-built from scratch with up-to-date instruction-focused content. Its directory structure has changed.
- In order to support both the old and new structures of the Demo Course's repository, the command
tutor local do importdemocourse
will now auto-determine the course root based on the location ofcourse.xml
. Use the--repo-dir
argument to override this behavior. - The new command
tutor local do importdemolibraries
will import any content libraries defined within the Demo Course repository. At the moment, that is just the "Respiratory System Question Bank", which is an optional but helpful extension to the new Demo Course. - To try out the new Demo Course now, run:
tutor local do importdemocourse --version master
. - To try out the demo Respiratory System Question Bank now, run:
tutor local do importdemolibraries --version master
. - To revert back to an older Demo Course version at any point, run:
tutor local do importdemocourse --version open-release/quince.2
, replacingquince.2
with your preferred course version.
- [Bugfix] Remove duplicate volume declarations that cause
docker compose
v2.24.1 to fail. - [Bugfix] Actually update the environment on
tutor plugins enable ...
. (by @regisb) - [Feature] Introduce a
tutor.hooks.lru_cache
decorator that is automatically cleared whenever a plugin is loaded or unloaded. This is useful, in particular when a plugin implements a costly function that depends on tutor hooks. (by @regisb) - [Bugfix] Fix compatibility with Python 3.12 by replacing pkg_resources with importlib_metadata and importlib_resources. (by @Danyal-Faheem)
- [Improvement] Upgrade base release to open-release/quince.2. (by @regisb)
- [Bugfix] Error "'Crypto.PublicKey.RSA.RsaKey object' has no attribute 'dq'" during
tutor config save
was caused by outdated minimum version of the pycryptodome package. To resolve this issue, runpip install --upgrade pycryptodome
. (by @regisb) - [Feature] add
CONFIG_INTERACTIVE
action that allows tutor plugins to interact with the configuration at the time of the interactive questionnaire that happens during tutor local launch. (by @Alec4r). - [Improvement] Add
.webp
and..otf
extensions to list of binary extensions to ignore when rendering templates. - [Security] Fix JWT scopes in XBlock callbacks. (by @regisb)
- 💥[Feature] Upgrade to Quince. (by @regisb)
- 💥[Feature] Replace ".local.overhang.io" hostnames by ".local.edly.io". (by @regisb)
- 💥[Feature] Enable the Indigo theme by default, if no other theme is set. (by @regisb)
- 💥[Deprecation] Tutor no longer supports the legacy Docker builder, which was previously available by setting
DOCKER_BUILDKIT=0
in the host environment. Going forward, Tutor will always use BuildKit (a.k.a.docker buildx
in Docker v19-v22, or justdocker build
in Docker v23). This transition will improve build performance and should be seamless for Tutor users who are running a supported Docker version (by @kdmccormick). - 💥[Deprecation] The template variable
is_buildkit_enabled
, which now always returns True, is deprecated. Plugin authors should assume BuildKit is enabled and remove the variable from their templates (by @kdmccormick). - 💥[Deprecation] Adding Python packages to edx-platform via
private.txt
is no longer supported. Instead, users should bind-mount their requirement directories withtutor mounts add ...
. (by @regisb) - [Bugfix] Updated how the Tutor setting
JWT_RSA_PRIVATE_KEY
is rendered into the LMS Django settingJWT_AUTH['JWT_PRIVATE_SIGNING_JWK']
as required by a recent breaking upstream change. The new representation of theJWT_PRIVATE_SIGNING_JWK
simply adds thedq
,dp
, andqi
parameters. Without this fix, LMS would encounter anInvalidKeyError
on all logins. (by @kdmccormick) - [Improvement] You don't have to run
tutor config save
every time you enable or disable a plugin anymore. (by @CodeWithEmad)
- [Feature] Make it easy to work on 3rd-party edx-platform Python packages with
tutor mounts add /path/to/my/package
. (by @regisb) - [Improvement] When configured with
RUN_MYSQL: true
, runmysqld
with binlog expiry set to 3 days (rather than the default of 30). - [Improvement] Fix
ulimits
error for elasticsearch in Docker rootless mode (by @OmarIthawi) - [Improvement] Do not hardcode
OPENEDX_COMMON_VERSION = master
in the nightly branch. This removes git conflicts whenever we bump the common version in the master branch. (by @regisb) - [Improvement] The
iter_mounts
template function can now take multiple image names as argument. This should concern only very advanced users. (by @regisb)
- [Feature] Upgrade to open-release/palm.4. It is strongly recommended to upgrade to this release for as long as possible before upgrading to Quince. Otherwise, many users will be logged out after the Quince upgrade and will have to log in again -- see the Quince release notes. (by @regisb)
- [Bugfix] Fix installation of tutor due to missing dev.txt file in Python package. (by @regisb)
- [Feature] Upgrade to open-release/palm.4. (by @regisb)
- [Improvement] Install tutor development tools with
pip install tutor[dev]
. (by @CodeWithEmad)
- [Bugfix] Fix ORA2 file uploads in CMS. As the cache settings are shared between CMS and LMS, the settings are moved from
common_lms.py
tocommon_all.py
. (by @FatemeKhodayari)
- [Improvement] No more large dev images. This was fixed by adding
--no-log-init
option to useradd command and reducing space usage of/var/log/faillog
. (by @CodeWithEmad) - [Improvement] Upgrade the Open edX default version to open-release/palm.3. (by @regisb)
- [Improvement] Adds
connect=False
to the LMS and CMS' MongoDB connection to preventServerSelectionError
after a cluster failover. (by @open-craft) - [Bugfix] Override
CMS_BASE
setting in Studio for the development environment. Without this, parts of Studio will try to use the devstack default of localhost:8010 instead. (by @ormsbee) - [Bugfix] Fix build error caused by py2neo package that was abruptly pulled from pypi and GitHub. (by @regisb)
- [Bugfix] Render config settings that are inside lists. (by @regisb)
- [Bugfix] Correctly parse strings prefixed with pound "#" key in
tutor config save --set KEY=#value
commands. (by @regisb) - [Feature] New action introduced:
CONFIG_LOADED
. This action is called whenever the config is loaded and makes it possible to verify the validity of configuration settings at runtime. (by @CodeWithEmad) - [Bugfix] Fix file upload in open response assessments. (by @regisb)
- 💥[Bugfix] Apply "fix mysql crash after upgrade to Palm" from 16.1.0 to
tutor k8s
deployments, as well. Users previously runningtutor k8s
withRUN_MYSQL: true
, with any version between 16.0.0 and 16.1.0 including, might have to fix their data manually. For users runningtutor local
, this change has no effect, as the underlying issue was already fixed in 16.1.0. For users runningtutor k8s
withRUN_MYSQL: false
, this change is also a no-op. (by @fghaas)
- [Improvement] Improve support of legacy non-BuildKit mode: (by @regisb)
- [Bugfix] Fix building of openedx Docker image.
- [Improvement] Remove
--cache-from
build option. - [Improvement] Add a warning concerning the lack of support of the
--build-context
option.
- 💥[Bugfix] Fix mysql crash after upgrade to Palm. After an upgrade to Palm, the mysql client run by Django defaults to a utf8mb4 character set and collation, but the mysql server still runs with utf8mb3. This causes broken data during migration from Olive to Palm, and more generally when data is written to the database. To resolve this issue, we explicitely set the utf8mb3 charset and collation in the client. Users who were running Palm might have to fix their data manually. In the future we will upgrade the mysql server to utf8mb4. (by @regisb)
- [Improvement] We upgrade to MySQL 8.1.0 to avoid having to restart the server after the upgrade.
- [Bugfix] Ask whether user wants to run locally during
tutor local launch
. (by @regisb) - [Bugfix] Fix a race condition that could prevent a newly provisioned Studio container from starting due to a FileExistsError when creating logs directory.
- [Improvement] Upgrade the Open edX default version to open-release/palm.2. (by @regisb)
- [Feature] Add support for HTTP/3, which considerably improves performance for Open edX. (by @regisb and @ghassanmas)
- [Bugfix] Do not display discussion units when the forum is not enabled. (by @regisb)
- [Improvement] Remove references to the wizard edition. (by @CodeWithEmad)
- [Bugfix] Improve
tutor ... do settheme default
so that it reverts to the default theme rather than trying to switch to a nonexistent theme named "default". This will clear up some error noise from LMS/CMS logs. (by @kdmccormick) - [Security] Fix content libraries creation by unprivileged users in studio (see security advisory). (by @regisb)
- [Bugfix] On Kubernetes, fix mysql deployment by removing the
--ignore-db-dir
option, which no longer exists on MySQL 8. (by @regisb)
- [Bugfix] Fix loading default Kubernetes config. (by @regisb)
- 💥[Feature] Upgrade to Palm. (by @regisb)
- [Bugfix] Rename ORA2 file upload folder from "SET-ME-PLEASE (ex. bucket-name)" to "openedxuploads". This has the effect of moving the corresponding folder from the
<tutor root>/data/lms/ora2
directory. MinIO users were not affected by this bug. - 💥[Improvement] During registration, the honor code and terms of service links are no longer visible by default. For most platforms, these links did not work anyway.
- 💥[Deprecation] Halt support for Python 3.7. The binary release of Tutor is also no longer compatible with macOS 10.
- 💥[Deprecation] Drop support for
docker-compose
, also known as Compose V1. Thedocker compose
(no hyphen) plugin must be installed. - 💥[Refactor] We simplify the hooks API by getting rid of the
ContextTemplate
,FilterTemplate
andActionTemplate
classes. As a consequences, the following changes occur:APP
was previously a ContextTemplate, and is now a dictionary of contexts indexed by name. Developers who implemented this context should replaceContexts.APP(...)
byContexts.app(...)
.- Removed the
ENV_PATCH
filter, which was for internal use only anyway. - The
PLUGIN_LOADED
ActionTemplate is now an Action which takes a single argument. (the plugin name)
- 💥[Refactor] We refactored the hooks API further by removing the static hook indexes and the hooks names. As a consequence, the syntactic sugar functions from the "filters" and "actions" modules were all removed:
get
,add*
,iterate*
,apply*
,do*
, etc. - 💥[Deprecation] The obsolete filters
COMMANDS_PRE_INIT
andCOMMANDS_INIT
have been removed. Plugin developers should instead useCLI_DO_INIT_TASKS
(with suitable priorities). - 💥[Feature] The "openedx" Docker image is no longer built with docker-compose in development on
tutor dev start
. This used to be the case to make sure that it was always up-to-date, but it introduced a discrepancy in how images were build (docker compose build
vsdocker build
). As a consequence:- The "openedx" Docker image in development can be built with
tutor images build openedx-dev
. - The
tutor dev/local start --skip-build
option is removed. It is replaced by opt-in--build
.
- The "openedx" Docker image in development can be built with
- [Improvement] The
IMAGES_BUILD
filter now supports relative paths as strings, and not just as tuple of strings. - [Improvement] Auto-complete the image names in the
images build/pull/push/printtag
commands. - [Deprecation] For local installations, Docker v20.10.15 and Compose v2.0.0 are now the minimum required versions.
- [Bugfix] Make
tutor config printvalue ...
print actual yaml-formatted values, such as "true" and "null" - 💥[Improvement] MongoDb was upgraded to 4.4.
- [Bugfix] Rename ORA2 file upload folder from "SET-ME-PLEASE (ex. bucket-name)" to "openedxuploads". This has the effect of moving the corresponding folder from the
- 💥[Improvement] Deprecate the
RUN_LMS
andRUN_CMS
tutor settings, which should be mostly unused. (by @regisb) - [Improvement] Greatly simplify ownership of bind-mounted volumes with docker-compose. Instead of running one service per application, we run just a single "permissions" service. This change should be backward-compatible. (by @regisb)
- [Feature] Add a
config save -a/--append -A/--remove
options to conveniently append and remove values to/from list entries. (by @regisb) - [Improvement] Considerably accelerate building the "openedx" Docker image with
RUN --mount=type=cache
. This feature is only for Docker with BuildKit, so detection is performed at build-time. (by @regisb) - [Improvement] Automatically pull Docker image cache from the remote registry. Again, this will considerably improve image build-time, particularly in "cold-start" scenarios, where the images need to be built from scratch. The registry cache can be disabled with the
tutor images build --no-registry-cache
option. (by @regisb) - [Feature] Automatically mount host folders at build time. This is a really important feature, as it allows us to transparently build images using local forks of remote repositories. (by @regisb)
- 💥[Deprecation] Remove the various
--mount
options. These options are replaced by persistent mounts, which are managed by thetutor mounts
commands. (by @regisb) - [Feature] Add the
do importdemocourse --repo-dir=...
option, to import courses from subdirectories of git repositories. This allows us to import the openedx-test-course in Palm with:tutor local do importdemocourse --repo=https://github.com/openedx/openedx-test-course --version=o pen-release/palm.master --repo-dir=test-course/course
. (by @regisb)
- [Bugfix] Change
authSource
toauthsource
(LOWERCASE) in mongo db parameters. This allow to authenticate with credentials in openedx code.(by @johanv26) - [Feature] Add support for loading in-cluster config when running inside a pod. In certain scenarios, Tutor may operate within a pod that has access to a cluster through role binding and a service account. In these instances, the ./kube/config file may not be present, but kubectl commands can still execute without any problems. (by @CodeWithEmad)
- [Improvement] Bump the default MongoDB Docker image reference from version 4.2.17 to 4.2.24. (by @fghaas)
- [Feature] Upgrade to open-release/olive.4. (by @regisb)
- [Feature] Make it possible to import the demo course from a different git repository or version. (by @regisb)
- [Feature] Add a convenient
do print-edx-platform-setting
command to print the value of an edx-platform setting. (by @regisb) - [Improvement] Improve edx-platform logging by silencing a couple deprecation warnings. (by @regisb)
- [Feature] Add a convenient
do sqlshell
command to enter a SQL shell as root. (by @regisb)
- [Feature] Upgrade to open-release/olive.3. (by @regisb)
-
[Improvement] Make it possible to extend or override the configuration of the uWSGI server. (by @MoisesGSalas)
-
[Improvement] Running
tutor dev launch --mount=edx-platform
now performs all necessary setup for a local edx-platform development. This includes running setup.py, installing node modules, and building assets; previously, those steps had to be run explicitly after bind-mounting a local copy of edx-platform (by @kdmccormick). -
[Bugfix] Running jobs in development mode with
tutor dev do ...
will now correctly use the development image. Previously, it used the production image, just liketutor local do ...
. (by @kdmccormick) -
[Improvement] Faster build with
npm clean-install
instead ofnpm install
in the openedx Docker image. This may change the version of npm packages installed next to edx-platform. (by @regisb) -
[Feature] Introduce the
DOCKER_BUILD_COMMAND
filter which makes it possible to customize thedocker build
command. (by @regisb) -
[Improvement] During openedx image build, copy
dockerize
utility from Docker registry for better efficiency. (by @regisb) -
[Improvement] Better highlight enabled plugins in
tutor plugins list
. (by @regisb) -
[Bugfix] Make sure that v0 plugin patches are applied in the same order as plugins are listed. (by @regisb)
- [Bugfix] Use supported YouTube API for transcripts imports. (by @mariajgrimaldi)
- [Feature] Add
tutor config patches list
CLI for listing available patches. (by @mafermazu) - [Bugfix] Add the missing
UWSGI_WORKERS
env variables to the lms and cms k8s deployments. (by @MoisesGSalas)
- [Bugfix]
patchStrategicMerge
can now be applied to jobs. (by @keithgg)
-
[Feature] Introduce plugin indexes, described in this Tutor enhancement proposal. This new feature introduces a lot of new
plugins
commands. See the docs for more information. (by @regisb) -
[Improvement] Add the
plugins list --enabled
option. (by @regisb) -
💥[Improvement] Modify the output of
plugins list
. Enabled plugins are indicated as "enabled". Installed but not enabled plugins are no longer indicated as "disabled" but as "installed". -
💥[Feature] Simplify the hooks API. The modules
tutor.hooks.actions
,tutor.hooks.filters
, andtutor.hooks.contexts
are no longer part of the API. This change should not affect most developers, who only use theActions
andFilters
classes (notice the plural) fromtutor.hooks
. (by @regisb)- Instead of
tutor.hooks.actions.get("some:action")
, usetutor.hooks.Actions.SOME_ACTION
. - Instead of
tutor.hooks.filters.get("some:filter")
, usetutor.hooks.Filters.SOME_FILTER
. - Instead of
tutor.hooks.actions.add("some:action")
, usetutor.hooks.Actions.SOME_ACTION.add()
. The same applies to thedo
method. - Instead of
tutor.hooks.filters.add("some:filter")
, usetutor.hooks.Filters.SOME_FILTER.add()
. The same applies to theadd_item
,add_items
,apply
, anditerate
methods. - Instead of
tutor.hooks.contexts.enter
, usetutor.core.hooks.contexts.enter
.
- Instead of
-
[Improvement] Make it possible to override the max upload size in the LMS and the CMS. This is achieved by moving the "caddyfile-lms" and "caddyfile-cms" patches just before the
import proxy
declarations. We also wrap therequest_body
directives withinhandle
statements, which means that themax_body
sizes can be overridden for specific paths. (by @regisb) -
[Security] Fix grading issue in LTI consumer XBlock. See security advisory. (by @regisb)
-
[Feature] Upgrade all Open edX services to open-release/olive.2. (by @regisb)
- 💥[Bugfix] Fix "example.com" links in registration emails. This is a breaking change for platforms that have modified the "id" field of the LMS site object in the database. These platforms should set
SITE_ID=1
in the common settings via a plugin. (by @regisb) - [Bugfix] Running
tutor k8s upgrade --from=maple
won't apply and won't wait for the MySQL deployment to be ready ifRUN_MYSQL: false
(When you host your MySQL somewhere else like RDS) (by @CodeWithEmad) - [Bugfix] Fix HTML component editing in studio by cherry-picking upstream fix. (by @regisb)
- [Improvement] Changes annotations from
typing
to use built-in generic types from__future__.annotations
(by @Carlos-Muniz) - [Improvement] Resolve
CORS_ORIGIN_WHITELIST
warnings that pollute the LMS and CMS logs. As far as we know they were not causing any issue, apart from being a nuisance. (by @regisb)
- [Improvement] Upgrade ipdb and ipython packages in the openedx development image. (by @regisb)
- [Improvement] Skip unnecessary image building in development. This should make
tutor dev launch
slightly faster. (by @regisb) - [Bugfix] Fix Authn MFE login in development by disabling enterprise integration. (by @regisb)
- [Bugfix] Fix "Invalid value for ‘--from’" when running
tutor local upgrade --from=nutmeg
. If you are facing this error, just runtutor local launch
and your platform should be automatically upgraded. - [Bugfix] Fix "TypeError: Parameters to Generic[...] must all be type variables" error. This error may occur when upgrading from a very old installation of Tutor. It is due to an old version of the typing-extensions package.
- 💥[Deprecation] Get rid of the
quickstart
command. v15.0.0 introduced a deprecation warning, but we actually want users to stop using this command. Instead, uselaunch
(by @regisb). - [Improvement] Backfill persistent grades during upgrade from Nutmeg. If you observe missing grades after the upgrade from Nutmeg, run
tutor local upgrade --from=nutmeg
. (by @regisb)
- 💥[Feature] Upgrade to Olive (by @regisb):
- Mypy type checking options were modified: developers are encouraged to add the
--implicit-reexport
option to their IDE.
- Mypy type checking options were modified: developers are encouraged to add the
- [Bugfix] Update problem templates according newer python versions. (by @mariajgrimaldi)
- [Improvement] Add the
-h
help option to all commands and subcommands. Previously, we could only use--help
, which is quite long for lazy fingers. (by @regisb) - 💥[Feature] Add an extensible
local/dev/k8s do ...
command to trigger custom job commands. These commands are used to run a series of bash scripts in designated containers. Any plugin can add custom jobs thanks to theCLI_DO_COMMANDS
filter. This causes the following breaking changes:- The "init", "createuser", "settheme", "importdemocourse" commands were all migrated to this new interface. For instance,
tutor local init
was replaced bytutor local do init
. - Plugin developers are encouraged to replace calls to the
COMMANDS_INIT
andCOMMANDS_PRE_INIT
filters byCLI_DO_INIT_TASKS
.
- The "init", "createuser", "settheme", "importdemocourse" commands were all migrated to this new interface. For instance,
- [Feature] Implement hook filter priorities, which work like action priorities. (by @regisb)
- 💥[Improvement] Remove the
local/dev bindmount
commands, which have been marked as deprecated for some time. The--mount
option should be used instead. - 💥[Bugfix] Fix local installation requirements. Plugins that implemented the "openedx-dockerfile-post-python-requirements" patch and that needed access to the edx-platform repo will no longer work. Instead, these plugins should implement the "openedx-dockerfile-pre-assets" patch. This scenario should be very rare, though. (by @regisb)
- 💥[Improvement] Rename the implementation of tutor quickstart to tutor launch. (by @Carlos-Muniz)
- 💥[Improvement] Remove the implementation of tutor dev runserver. (by @Carlos-Muniz)
- [Bugfix] Fix MongoDB replica set connection error resulting from edx-platform's pymongo (3.10.1 -> 3.12.3) upgrade (edx-platform#30569). (by @ormsbee)
- [Bugfix] Update
celery
invocations for lms-worker and cms-worker to be compatible with Celery 5 CLI. - [Improvement] Point CMS at its config file using
CMS_CFG
environment variable instead of deprecatedSTUDIO_CFG
.
- [Security] Fix rotation of JWT tokens for disabled users. (by @regisb)
-
[Bugfix] Fix
jinja2.exceptions.TemplateSyntaxError: expected token 'end of statement block', got '|'
error by bumping the minimum required version of the Jinja2 package. -
[Feature] Add support for MongoDB SSL, authentication source, mechanism and replica set via the
MONGODB_USE_SSL
,MONGODB_AUTH_MECHANISM
,MONGODB_AUTH_SOURCE
,MONGODB_REPLICA_SET
settings. (by @zakum1 and @regisb) -
[Bugfix] Fix tag of "openedx" development Docker image. Previously, this Docker tag did not include the Tutor version. As a consequence, a different cached image could be used in some cases. For instance: when running
tutor dev run
commands. Now, the image tag is "openedx-dev:TUTOR_VERSION". -
[Bugfix] Fix name of Swahili locale: it is "sw-ke" and not "sw" (by @regisb).
-
[Security] Apply drag-n-drop v2 xblock security patch. (by @regisb)
- [Improvement] Auto-completion of
plugins
andconfig
arguments:plugins enable/disable NAME
,plugins install PATH
,config save --set KEY=VAL
,config save --unset KEY
,config printvalue KEY
. (by @regisb) - [Bugfix] Fix minimum click version (>= 8.0.0) when installing tutor from pip.
- [Improvement] Enable CORS by default for both LMS and CMS by moving those settings to the
common_all
partial. (by @arbrandes)
- [Improvement] Auto-complete implicit
local/dev --mount /path/to/...
options. (by @regisb) - 💥[Feature] Strong typing of action and filter hooks: this allows us to detect incorrect calls to
actions.add
orfilters.add
early. Strong typing forces us to break thedo
andapply
API by removing thecontext
named argument. Developers should replacedo(context=...)
bydo_from_context(..., )
(and similar forapply
).
- [Security] Fix edx-platform XSS vulnerability on "next" parameter. (by @regisb)
- [Deprecation] Tutor is no longer compatible with Python 3.6. (by @regisb)
- [Security] Fix xblock ajax handler vulnerability. (by @regisb)
- [Improvement] Use web proxy gzip encoding to improve bandwidth. We observe a 75% size reduction on the LMS dashboard. (by @ghassanmas)
- [Improvement] Upgrade Scorm XBlock to v14.0.0. (by @regisb)
- 💥[Improvement] The Richie plugin was transferred to the Openfun organization; thus, it is no longer officially supported and it is removed from the default set of plugins that ships with
pip install tutor[full]
or the Tutor pre-compiled binary. Users are encouraged to uninstall thetutor-richie
Python package and install thetutor-contrib-richie
package instead. - [Feature] Upgrade edx-platform i18n strings to nutmeg.2. (by @regisb)
- [Bugfix] Fix MongoDB replica set connection error resulting from edx-platform's pymongo (3.10.1 -> 3.12.3) upgrade (edx-platform#30569). (by @ormsbee)
- [Feature] Upgrade all applications to open-release/nutmeg.2. (by @BbrSofiane)
- [Feature] Add the
-m/--mount
option totutor dev quickstart
. (by @regisb) - [Bugfix] Fix
tutor dev start -m /path/to/frontend-app-learning
by introducing dev-specificCOMPOSE_DEV_TMP
andCOMPOSE_DEV_JOBS_TMP
filters (by @regisb). - [Bugfix] Log the shell commands that Tutor executes more accurately. (by @kdmccormick)
- [Bugfix]
tutor dev quickstart
would fail under certain versions of docker-compose due to a bug in the logic that handled volume mounting. (by @kdmccormick) - [Bugfix] The
tutor k8s start
command will succeed even whenk8s-override
andkustomization-patches-strategic-merge
are not specified. (by @edazzocaisser) - [BugFix]
kubectl wait
checks deployments instead of pods as it could hang indefinitely if there are extra pods in a broken state. (by @keithgg)
- [Bugfix] Build openedx-dev Docker image even when the host user is root, for instance on Windows. (by @regisb)
- [Bugfix] Patch nutmeg.1 release with LTI 1.3 fix. (by @ormsbee)
- [Improvement] Make it possible to override k8s resources in plugins using
k8s-override
patch. (by @foadlind)
- [Bugfix] Update problem with hint template so it works with newer python versions. (by @mariajgrimaldi)
- [Feature] Add default PYTHONBREAKPOINT to openedx/Dockerfile (by @Carlos-Muniz)
- [Bugfix] Fix smtp server port in
cms.yml
which was causing email sending failures in the Studio. (by @regisb) - [Bugfix] Skip waiting for MongoDB if it is served using SRV records. (by @gabor-boros)
- [Improvement] Use
git am
instead ofcherry-pick
to simplify patching process. - [Improvement] Tutor is now compatible with Docker Compose subcommand.
- [Bugfix] Fix missing tables on migration from maple (#689). (by @ibrmora)
- [Bugfix] Fix plugin patches in cms.env.yml template.
- 💥[Feature] Upgrade to Nutmeg: (by @regisb)
- 💥[Feature] Hide a course from the
/course
search page in the LMS when the course visibility is set to "none" in the Studio. (thanks @ghassanmas!) - 💥[Improvement] The
lms.env.json
andcms.env.json
files are moved tolms.env.yml
andcms.env.yml
. As a consequence, plugin developers must reformat the following patches to use YAML format, and not JSON: "common-env-features", "lms-env-features", "cms-env-features", "lms-env", "cms-env", "openedx-auth". - 💥[Feature] Persistent grades are now enabled by default.
- [Bugfix] Remove edX references from bulk emails (issue).
- [Improvement] For Tutor Nightly (and only Nightly), official plugins are now installed from their nightly branches on GitHub instead of a version range on PyPI. This will allow Nightly users to install all official plugins by running
pip install -e ".[full]"
. - [Bugfix] Start MongoDB when running migrations, because a new data migration fails if MongoDB is not running
- 💥[Feature] Hide a course from the
- [Bugfix] Crashing celery workers in development (#681). (by @regisb)
- [Bugfix] Fix studio logout issue. (by @Alec4r)
- [Security] Apply logout redirect url security fix. (by @regisb)
- [Feature] Make it possible to force the rendering of a given template, even when the template path matches an ignore pattern. (by @regisb)
- 💥[Bugfix] Get rid of the
tutor config render
command, which is useless now that themes can be implemented as plugins. (by @regisb)
- [Bugfix] Truncate site display name to 50 characters with a warning, fixing data too long error for long site names. (by @navinkarkera)
- [Feature] Add patch to allow overriding final openedx docker image CMD.
- [Bugfix] Ignore Python plugins that cannot be loaded. (by @regisb)
- [Improvement] Faster and more reliable builds with
npm clean-install
instead ofnpm install
. (by @regisb. Thanks @ghassanmas!) - [Bugfix] Fix 500 error during studio login. (by @regisb)
- [Bugfix] Fix updates for the Caddy deployment in multi-node Kubernetes clusters (#660). Previously, Caddy configuration updates might fail if the Kubernetes cluster had more than one worker node. (by @fghaas)
- [Bugfix] Mounts were broken in dev mode. (by @kdmccormick)
- [Bugfix] Fix broken file upload in studio because of unpinned studio-frontend requirement (see discussion and pull request) (by @regisb. Thanks @uetuluk!).
- [Bugfix] "The Compose file is invalid" error on mounting dev-only folders. (by @regisb)
- [Bugfix] CMS settings in development. (by @regisb)
- [Improvement] Add the
COMPOSE_PROJECT_STARTED
action and rundev stop
onlocal start
(and vice versa). (by @regisb) - [Feature] Introduce
local/dev copyfrom
command to copy contents from a container. (by @regisb) - [Bugfix] Fix a race condition that could prevent a newly provisioned LMS container from starting due to a
FileExistsError
when creating data folders. - [Deprecation] Mark
tutor dev runserver
as deprecated in favor oftutor dev start
. Sincestart
now supports bind-mounting and breakpoint debugging,runserver
is redundant and will be removed in a future release. (by @kdmccormick) - [Improvement] Allow breakpoint debugging when attached to a service via
tutor dev start SERVICE
. (by @kdmccormick) - [Security] Apply rate limiting security fix (see commit). (by @regisb)
- [Feature] Introduce the
-m/--mount
option inlocal
anddev
commands to auto-magically bind-mount folders from the host. (by @regisb) - [Feature] Add
tutor dev quickstart
command, which is similar totutor local quickstart
, except that it uses dev containers instead of local production ones and includes some other small differences for the convience of Open edX developers. This should remove some friction from the Open edX development setup process, which previously required that users provision using local producation containers (tutor local quickstart
) but then stop them and switch to dev containers (tutor local stop && tutor dev start -d
). (by @kdmccormick) - 💥[Improvement] Make it possible to run
tutor k8s exec <command with multiple arguments>
(#636). As a consequence, it is no longer possible to run quoted commands:tutor k8s exec "<some command>"
. Instead, you should remove the quotes:tutor k8s exec <some command>
. (by @regisb) - 💥[Deprecation] Drop support for the
TUTOR_EDX_PLATFORM_SETTINGS
environment variable. It is now recommended to create a plugin instead. (by @regisb) - 💥[Improvement] Complete overhaul of the plugin extension mechanism. Tutor now has a hook-based Python API: actions can be triggered at different points of the application life cycle and data can be modified thanks to custom filters. The v0 plugin API is still supported, for backward compatibility, but plugin developers are encouraged to migrate their plugins to the new API. See the new plugin tutorial for more information. (by @regisb)
- [Improvement] Improved the output of
tutor plugins list
. (by @regisb) - [Feature] Add
tutor [dev|local|k8s] status
command, which provides basic information about the platform's status. (by @kdmccormick)
- [Security] Apply SAML security fix.
- [Improvement] In addition to the Docker build arguments
EDX_PLATFORM_REPOSITORY
andNPM_REGISTRY
, also support two corresponding and identically-namedconfig.yml
values serving the same purpose.
- [Feature] Upgrade all applications to open-release/maple.3.
- [Security] Fix open redirect vulnerability in inactive user flow (see commit)
- [Bugfix] Fix "evalsymlink failure" during
k8s quickstart
(#611). - [Bugfix] Fix "TypeError: upgrade() got an unexpected keyword argument 'non_interactive'" during
local upgrade
.
- [Bugfix] Fix dockerize on arm64 by switching to the powerman/dockerize fork (#591).
- [Bugfix] Fix "Unexpected args" error during service initialisation on Kubernetes (#611).
- [Bugfix] Fix
local/k8s quickstart
commands when upgrading from an older release (#595). - [Bugfix] Fix running the default exim-relay SMTP server on arm64 (#600).
- [Feature] Add
tutor k8s apply
command, which is a direct interface withkubectl apply
. - [Feature] Add
openedx-dockerfile-minimal
patch, which you can use to install custom packages and run commands as root in the Docker image.
- [Improvement] Upgrade all services to open-release/maple.2.
- [Security] Fix vulnerability in redirect URL during authentication (see commit).
- [Security] Fix vulnerability in call to invalid enrollment API (see commit).
- [Bugfix] Fix "Internal Server Error / AttributeError / object has no attribute 'get_metadata'" in learning MFE.
- [Improvement] Replace all links to github.com/edx by github.com/openedx, following the migration of all repositories.
- [Bugfix] Fix
k8s start caddy
command.
- [Bugfix] Fix auto-renewal of certificates revoked by Let's Encrypt (see discussion).
- [Bugfix] Fix authentication in development due to missing SameSite policy on session ID cookie.
- [Bugfix] Display properly themed favicon.ico image in LMS, Studio, and microfrontends.
- [Bugfix] Fix "LazyStaticAbsoluteUrl is not JSON serializable" error when sending bulk emails.
- [Bugfix] Fix
tutor local importdemocourse
fails when the platform is not up.
- [Improvement] Provide much more comprehensive instructions when upgrading.
- [Bugfix] During the upgrade, make sure that the environment is up-to-date before prompting to rebuild the custom images.
- [Bugfix] Fix ownership of MySQL data, in particular when upgrading a Kubernetes cluster to Maple.
- [Bugfix] Ensure that
tutor k8s upgrade
is run duringtutor k8s quickstart
, when necessary. - 💥[Bugfix] By default, detect the current version during
tutor k8s/local upgrade
. - [Bugfix] Fix upgrading from Lilac to Maple on Kubernetes by deleting deployments and services.
- [Security] Upgrade Django to 3.2.11 in edx-platform.
- [Security] Prevent non-staff users from searching usernames by email by abusing the logout URL.
- [Security] Prevent non-staff users from searching usernames by email.
- [Bugfix] Missing requirements file in
pip install tutor[full]
.
- 💥[Improvement] Upgrade to Maple
- Install all official plugins as part of the
tutor[full]
package. - Don't print error messages about loading plugins during autocompletion.
- Prompt for image building when upgrading from one release to the next.
- 💥 Allow concurrent logins to the LMS and the CMS.
- Add
tutor local start --skip-build
option to skip building Docker images.
- Install all official plugins as part of the
- [Feature] Better support of Caddy as a load balancer in Kubernetes:
- Make it possible to start/stop a selection of resources with
tutor k8s start/stop [names...]
. - Make it easy to deploy an independent LoadBalancer by converting the caddy service to a ClusterIP when
ENABLE_WEB_PROXY=false
. - Add a
app.kubernetes.io/component: loadbalancer
label to the LoadBalancer service. - Add
app.kubernetes.io/name
labels to all services. - Preserve the LoadBalancer service in
tutor k8s stop
commands. - Wait for the caddy deployment to be ready before running initialisation jobs.
- Fix running Caddy container in k8s, which should always be the case even if
ENABLE_WEB_PROXY
is false.
- Make it possible to start/stop a selection of resources with
- [Security] On Kubernetes, convert all NodePort services to ClusterIP to guarantee network isolation from outside the cluster.
- 💥[Improvement] Move the Open edX forum to a dedicated plugin (#450).
- 💥[Improvement] Drop Python 3.5 compatibility.
- 💥[Bugfix] No longer track the Tutor version number in resource labels (and label selectors, which breaks the update of Deployment resources), but instead do so in resource annotations.
- 💥[Improvement] Get rid of the "tutor-openedx" package, which is no longer supported.
- 💥[Improvement] Run all services as unprivileged containers, for better security. This has multiple consequences:
- The "openedx-dev" image is now built with
tutor dev dc build lms
. - The "smtp" service now runs the "devture/exim-relay" Docker image, which is unprivileged. Also, the default SMTP port is now 8025.
- The "openedx-dev" image is now built with
- 💥[Feature] Get rid of the Nginx container and service, which is now replaced by Caddy. this has the following consequences:
- Patches "nginx-cms", "nginx-lms", "nginx-extra", "local-docker-compose-nginx-aliases" are replaced by "caddyfile-cms", "caddyfile-lms", "caddyfile", " local-docker-compose-caddy-aliases".
- Patches "k8s-deployments-nginx-volume-mounts", "k8s-deployments-nginx-volumes" were obsolete and are removed.
- The
NGINX_HTTP_PORT
setting is renamed toCADDY_HTTP_PORT
.
- [Bugfix] Fix building of the
openedx
image on ARM64 due to missinglibgeos-dev
- [Bugfix] Fix incorrect "from" address in course bulk emails (see pull request).
- 💥[Improvement] Fail on incorrect image name argument in
images build/pull/push/printtag
commands. - [Bugfix] Remove trailing slashes in docker-compose files for compatibility with docker-compose v2 in WSL.
- [Improvement]
settheme
now works with the preview domain. - [Feature] Allow specifying extra pip packages through config.yml.
- [Security] Timed exam security fix 29347.
- [Feature] Add tutor-richie to the plugins that are bundled with the tutor binary.
- [Improvement] Make
tutor plugins list
print plugins sorted by name. - [Improvement] Ignore Python plugins that cannot be loaded.
- [Bugfix] When configured with
RUN_FORUM: false
, omit forum-related Jobs from the manifests thattutor k8s
generates. (#525)
- [Improvement] Upgrade all services to open-release/lilac.3.
- [Feature] Make it possible to override job configuration in development: if they exist,
dev/docker-compose.jobs.yml
anddev/docker-compose.jobs.override.yml
will be loaded when running jobs. - [Improvement] Faster
tutor local start
by building only necessary images.
- 💥[Improvement] Change the
settheme
command such that, by default, a custom theme is assigned to the LMS and the CMS, both in production and development mode. - [Bugfix] Change the
local quickstart
command to check for adequate Docker memory allocation on macOS (#463)
- [Feature] Add configuration setting
PREVIEW_LMS_BASE
for custom preview domain. - [Improvement] Enable milestones application flag
MILESTONES_APP
and prerequisite courses feature flagsENABLE_PREREQUISITE_COURSES
by default.
- [Bugfix] Fix 500 error during user registration.
- [Bugfix] Fix Mongodb compatibility version upgrade when upgrading from Koa to Lilac.
- [Feature] Ability to pass docker build options via
--docker-arg
option intutor images build
command.
- [Bugfix] Fix (again) forum starting issue: "NoMethodError: undefined method 'encode' for nil:NilClass".
- [Bugfix] Fix forum starting issue: "NoMethodError: undefined method 'encode' for nil:NilClass".
- [Improvement] Make it easier to run edx-platform unit tests.
- [Bugfix] Fix segmentation fault during
tutor config save
on Mac OS M1 (#473). Thanks @ghassanmas! - [Bugfix] Fix a bug that prevented connecting to external MongoDB instances.
- [Improvement] Make sure that the logo included in email notifications (including discussion responses) is the same as the site logo.
- [Bugfix] Install IPython directly from PyPI instead of installing it from source (the reason it was installed from source is no longer relevant). The effect of this shall speed up the process of building the openedx-dev Docker image.
- [Feature] Add "openedx-dockerfile-post-git-checkout" patch.
- [Improvement] In the "openedx" Docker images, convert git patches to cherry-picks for a cleaner source tree.
- 💥[Feature] Make it possible to override local job configuration. This deprecates the older model for running jobs which dates back from a long time ago.
- [Security] Apply security patch 28442.
- [Improvement] Upgrade all services to open-release/lilac.2.
- [Bugfix] Fix "
sh
is not a recognized command" in some plugins, including minio. - [Improvement] Set the default contact mailing email address
- [Bugfix] Fix minio initialisation in Kubernetes.
- [Bugfix] Fix "Invalid command argument" during upgrade from Koa to Lilac.
- [Bugfix] Fix MySQL initialisation in docker-compose==2.0.0beta4.
- [Improvement] Tutor is now published on PyPI as "tutor".
- [Bugfix] Fix double pulling MongoDB image when upgrading from Koa to Lilac.
- [Improvement] Better logging during
plugins disable
. - [Bugfix] Fix "upstream sent too big header" error during login of existing users after a Koa to Lilac upgrade.
- [Feature] Added the ability to skip
config.yml
file modification while runningtutor config save
command with-e
or--env-only
flag. - [Feature] Add new config value
FORUM_MONGODB_DATABASE
to set the forum database name.
- 💥[Improvement] Upgrade all services to open-release/lilac.master.
- 💥[Feature] Migrate Android app building and the WebUI frontend away from core Tutor and to dedicated plugins (see TEP). The
DOCKER_IMAGE_ANDROID
setting is thus renamed toANDROID_DOCKER_IMAGE
. - [Feature] Run
docker-compose build
as part oftutor local start
.
- [Improvement] Avoid permission issues in Kubernetes/Openshift for users who do not have the rights to edit their namespace.
- [Improvement] Better Kubernetes object creation.
- 💥[Security] Disable python-evaluated input by default as we don't run codejail.
- [Bugfix] Fix missing discussion notifications.
- [Improvement] Better error logging when loading a plugin from an incompatible version.
- [Feature] Add Redis database configuration for both cache and celery.
- [Security] Apply Django security patches by upgrading from 2.2.20 to 2.2.23.
- [Bugfix] Fix video unit completion (see pull request).
- [Bugfix] Fix crashing installation because of a major release of all Pallets projects.
- [Bugfix] Fix crash in
local quickstart -p
command. - [Bugfix] Fix 502 error on request to lms with header larger than the maximum uwsgi buffer size.
- [Bugfix] Fix parsing of YAML-formatted values in
config save --set KEY=VALUE
commands, in use for instance with Ecommerce.
- [Security] Apply security patch 27394.
- [Feature] Add patches to extend python requirements installation process in openedx and openedx-dev Dockerfiles.
- [Improvement] Apply edx-platform patches during Docker image build using tutor patch 'openedx-dockerfile-git-patches-default'.
- [Improvement] Upgrade all services to open-release/koa.3.
- [Feature] Make it possible to build the openedx Docker image with a custom openedx-i18n version with the
--build-arg OPENEDX_I18N_VERSION=custom
command line argument.
- [Bugfix] Fix edge case where
PLUGINS
entry is null in config.yml. - [Bugfix] Fix missing py2neo dependency in
images build openedx
(#411).
- [Bugfix] Fix "Invalid Request" error during SAML authentication (thanks @Ant1x!).
- [Feature] Add
make pull-base-images
command to update base images. - [Improvement] Annotate types all over the Tutor code base.
- [Bugfix] Fix parsing of YAML CLI arguments that include equal "=" signs.
- [Bugfix] Fix minor edge case in
long_to_base64
utility function. - [Improvement] Add openedx patches to add settings during the build process.
- [Bugfix] Make LMS celery workers actually process LMS tasks and not CMS tasks.
- [Security] Apply security patch 26592.
- [Bugfix] Actually persist Redis data.
- [Bugfix] Upgrade all services to open-release/koa.2.
- [Security] Apply security patch 26432.
- [Bugfix] Print warnings to stderr.
- [Security] Apply security patch 26358.
- [Security] Apply security patch 26253.
- [Bugfix] Fix django setting value and static asset loading in openedx-dev image.
- [Feature] Add a
tutor images build --target=...
argument for multi-stage Docker builds. - [Feature] Create a test version of the openedx-dev Docker image for running edx-platform unit tests.
- [Security] Apply security patch 26112.
- [Bugfix] Fix
local exec
command which crashed with aAttributeError
.
- [Bugfix] Fix "Read-only file system" errors when running
tutor dev runserver
commands on Mac OS (again, see #392). - [Feature] Automatically bind-mount volumes from the
volumes/
directory with the--volume=/...
syntax.
- [Security] Apply security patch 26029.
- [Security] Apply security patch 25974.
- [Bugfix] Fix "Invalid type for parameter ContentType" error on js upload in Scorm xblock (openedx-scorm-xblock #16).
- [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 with uwsgi: this increases bootstrap performance and makes it no longer necessary to mount media folders in the Nginx container.
- Replace Memcached and RabbitMQ with 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 solution 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 withdocker-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 the 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 the discussion 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 the 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 the 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 customise 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 the 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 resource 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 the 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
is 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] Explicitly 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 explicitly 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 the forum when running a 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 the 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 withinit
. - [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 the 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] Customise 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 the PyPI package.
- [Bugfix] Fix quickstart on Kubernetes (#164).
- [Improvement] Add databases 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 that 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.