Conn Warwicker [Mon, 19 Jan 2026 14:54:51 +0000 (14:54 +0000)]
MDL-86006 mod_assign: Add multimarking to assign backup and restore
Conn Warwicker [Mon, 19 Jan 2026 14:39:41 +0000 (14:39 +0000)]
MDL-86006 mod_assign: Calculate grade from multimarking agreement method
Conn Warwicker [Mon, 19 Jan 2026 14:20:24 +0000 (14:20 +0000)]
MDL-86006 mod_assign: Ability to set mark workflow state
Conn Warwicker [Mon, 19 Jan 2026 13:25:55 +0000 (13:25 +0000)]
MDL-86006 mod_assign: Add marker panel
Conn Warwicker [Fri, 16 Jan 2026 15:45:58 +0000 (15:45 +0000)]
MDL-86006 mod_assign: Update marks via quick grading
Conn Warwicker [Fri, 16 Jan 2026 15:23:34 +0000 (15:23 +0000)]
MDL-86006 mod_assign: Allocate markers via quick grading or batch
Conn Warwicker [Fri, 16 Jan 2026 15:00:05 +0000 (15:00 +0000)]
MDL-86006 mod_assign: Display markers on grading table
Conn Warwicker [Fri, 16 Jan 2026 14:53:26 +0000 (14:53 +0000)]
MDL-86006 mod_assign: Add multimarking config and plugin settings
- Add config setting to define max number of markers
- Add instance settings to assignment form to select number of markers
and agreement method
Conn Warwicker [Fri, 16 Jan 2026 14:45:00 +0000 (14:45 +0000)]
MDL-86006 mod_assign: Add multimarking database tables and fields
Add new database tables and fields, and remove references to old
"allocatedmarker" user flag field.
Andrew Nicols [Fri, 25 Jul 2025 10:17:24 +0000 (18:17 +0800)]
MDL-87045 core: Add initial OpenTelemetry solution
This commit provides changes required for our Open Telemetry
integration.
There are relatively few changes to the code itself, as most changes are
performed by Composer packages which inspect Moodle from outside, as is
typical with Open Telemetry.
The changes that we do have here are:
- introduction of a `\core\telemetry` class to provide helper methods
for:
- fetching the Trace ID of the current request's root span
- fetching the Trace Parent ID of the current request's root span
- checking if Open Telemetry is available
- Recording Throwables
- Recording Throwables from the exception handler
- Display the Trace ID in the page footer
- Adding the Trace Parent ID to the rendered page metadata
- Add the Trace parent ID to requests made using the `core/fetch` and
`core/ajax` modules.
Andrew Nicols [Thu, 9 Oct 2025 22:23:14 +0000 (06:23 +0800)]
MDL-87045 core: Move shutdown manager earlier in init
The shutdown manager was previously instantiated fairly late on in the
bootstrap process, after many files were already included, and after the
`ABORT_AFTER_CONFIG` early exit.
This meant that it was not possible to register shutdown handlers
automatically on some early-init components, such as the observability
API.
To allow the shutdown handler to be processed earlier in the Moodle
bootstrap we need to:
- stop assuming that the `debugging` method is available` as this is
loaded later;
- stop assuming that `$OUTPUT` and `$DB` are available
- allow its initialisation status to be checked so that an the
`ABORT_AFTER_CONFIG` behaviour does not lead to warnings about
multiple instantiations of the handler.
Andrew Nicols [Wed, 4 Mar 2026 07:25:45 +0000 (15:25 +0800)]
MDL-87950 core: Remove manual includes of third-party libs
meirzamoodle [Wed, 4 Mar 2026 08:44:36 +0000 (15:44 +0700)]
MDL-87922 core: Add ES module importmap infrastructure for React
Introduces the server-side infrastructure to serve React-based ES modules
and expose them to the browser via a native import map.
* Add `core\output\requirements\import_map` — a JsonSerializable registry
that is the single source of truth for specifier → URL and specifier →
filesystem path mappings. Built-in entries cover `react`, `react/`,
`react-dom`, `@moodlehq/design-system`, and `@moodle/lms/`. Additional
entries can be registered from a `pre_render` hook via `add_import()`.
* Add `core\route\controller\esm_controller` — serves ESM requests under
`/esm/{revision}/{scriptpath}`. All resolution is delegated to
`import_map::get_path_for_script()`. Valid revisions get long-lived
immutable cache headers with ETag; revision `-1` gets short-lived headers.
* Add `core\param::ESM_PATH` for validating ESM script paths.
* Add PHPUnit tests for `import_map` and `esm_controller`.
Co-Authored-By: Andrew Nicols <andrew@nicols.co.uk>
Jun Pataleta [Wed, 4 Mar 2026 10:51:56 +0000 (18:51 +0800)]
MDL-87810 quiz: Accessibility Behat coverage for quiz attempt
Amaia Anabitarte [Tue, 3 Mar 2026 17:09:43 +0000 (18:09 +0100)]
MDL-87571 course: Previous of first activity
Sara Arjona [Tue, 3 Mar 2026 15:36:16 +0000 (16:36 +0100)]
MDL-88003 course: Skip plugins without FEATURE_CAN_DISPLAY in navigation
Laurent David [Tue, 3 Mar 2026 11:38:03 +0000 (12:38 +0100)]
MDL-87981 mod_feedback: Fix description placement
Andrew Nicols [Thu, 19 Feb 2026 06:35:04 +0000 (14:35 +0800)]
MDL-88009 theme_boost: Disable input sanitisation for footer
The footer popover contains content that we have curated from a range of
places and which does not include user-provided content. It should be
safe to use the content unsanitised.
Andrew Nicols [Tue, 24 Feb 2026 00:48:02 +0000 (08:48 +0800)]
MDL-87950 core: Updating coding style on \core\component
Andrew Nicols [Fri, 13 Feb 2026 06:49:10 +0000 (14:49 +0800)]
MDL-87950 core: Add Moodle libraries to composer.json
This change copies all third-party libraries into the composer.json file
at the exact same version that they exist in Moodle.
Only dependencies without any form of customisation have been included.
A small number of dependencies have been modified and these are not
included.
Note: This includes a change to thirdpartylibs.xml to correct a
typo.
Andrew Nicols [Thu, 19 Feb 2026 08:23:53 +0000 (16:23 +0800)]
MDL-87950 core: Bump symfony/deprecation-contracts
This is just a metadata bump with no other changes required.
Andrew Nicols [Thu, 19 Feb 2026 09:21:31 +0000 (17:21 +0800)]
MDL-87950 core: Do not block insecure packages
This is a temporary state until we stop pinning insecure packages.
Andrew Nicols [Wed, 11 Feb 2026 07:28:54 +0000 (15:28 +0800)]
MDL-87950 core: Composer files should only be loaded if not included
Composer supports the automatic inclusion of files in its
`composer.json::files` array. To mimic this in Moodle we have a
`$composerautoloadfiles` array in our component autoloader, and at the
time that we register out autoloader we include all of these files.
As we migrate to using Composer for all of our third-party dependencies
we will have a period where they are defined both in Composer, and also
still exist in Moodle.
To support this use-case we need to make Moodle aware that some packages
may be depended upon by Composer and include the same function
definitions.
Jun Pataleta [Wed, 4 Mar 2026 06:00:38 +0000 (14:00 +0800)]
MDL-87810 question: Fix colour contrast issues on question view
* Lighten the background for the question formulation container.
* Lighten the background for the question feedback container while
slightly darkening the text font as well.
Jun Pataleta [Tue, 3 Mar 2026 12:49:41 +0000 (20:49 +0800)]
MDL-87955 mod_forum: Manage subscribers accessibility improvements
* Replace the layout table with responsive Bootstrap columns.
* Add accessible labels for the existing and potential subscribers
select boxes.
* Add accessibility Behat coverage.
* Remove unused CSS styles
Muhammad Arnaldo [Thu, 19 Feb 2026 07:08:53 +0000 (14:08 +0700)]
MDL-87553 admin: Consolidate login settings into dedicated admin page
Creates new "Login" category and moves login-related settings
into a unified loginsettings page.
Huong Nguyen [Wed, 4 Mar 2026 02:19:20 +0000 (09:19 +0700)]
Merge branch 'MDL-85322-main' of https://github.com/durenadev/moodle
Huong Nguyen [Wed, 4 Mar 2026 01:52:49 +0000 (08:52 +0700)]
Merge branch 'MDL-86112' of https://github.com/jonof/moodle
Huong Nguyen [Wed, 4 Mar 2026 01:49:51 +0000 (08:49 +0700)]
Merge branch 'MDL-87905-main' of https://github.com/sammarshallou/moodle
AMOS bot [Wed, 4 Mar 2026 00:08:00 +0000 (00:08 +0000)]
Automatically generated installer lang files
Sam Smucker [Tue, 3 Mar 2026 17:46:00 +0000 (11:46 -0600)]
MDL-83243 mod_scorm: Redirect user when network is unstable
When a user is on a SCORM player page and has a persistently
unstable network connection, their Moodle session can expire
and/or the SCORM package can fail to save their progress.
This change will force the user to exit the SCORM player page
to avoid losing unsaved progress.
Sam Smucker [Tue, 3 Mar 2026 16:58:42 +0000 (10:58 -0600)]
MDL-83243 core: User must leave page after two failed keepalive attempts
On pages using the session manager's keepalive logic, an unstable network
connection should cause an alert modal to appear warning the user that
their learning progress may not be saved. This doesn't always happen
because the modal contents must be fetched with a network request. This
commit pre-fetches the alert modal on page load to ensure that it is
available if network connection is lost, and if two consecutive requests
to touch the session fail, the modal will force the user to leave the
page, either by reloading or redirection.
Daniel Ureña [Tue, 20 Jan 2026 13:42:17 +0000 (14:42 +0100)]
MDL-85322 block_html: trust dashboard content in WS context
Huong Nguyen [Tue, 3 Mar 2026 10:28:42 +0000 (17:28 +0700)]
Merge branch 'MDL-88021-main' of https://github.com/junpataleta/moodle
Laurent David [Tue, 3 Mar 2026 10:05:01 +0000 (11:05 +0100)]
MDL-87979 core_course: No separator for manual completion
Sara Arjona [Tue, 3 Mar 2026 09:30:16 +0000 (10:30 +0100)]
Merge branch 'MDL-87980-main' of https://github.com/laurentdavid/moodle
Mihail Geshoski [Tue, 3 Mar 2026 08:36:49 +0000 (16:36 +0800)]
Merge branch 'MDL-87315_main' of https://github.com/marxjohnson/moodle
Paul Holden [Thu, 6 Jun 2024 09:00:18 +0000 (10:00 +0100)]
MDL-78476 notes: use standard text editor for editing note content.
Also allows for storage/embedding of files attached to the editor.
Simey Lameze [Tue, 3 Mar 2026 05:50:45 +0000 (13:50 +0800)]
MDL-87545 behat: add missing step to enable my home
Safat [Tue, 3 Mar 2026 06:27:18 +0000 (17:27 +1100)]
Merge branch 'MDL-87867-main' of https://github.com/andrewnicols/moodle
Andrew Nicols [Tue, 3 Mar 2026 05:52:23 +0000 (13:52 +0800)]
MDL-87867 core: Correct core/deprecated logic
- For final deprecations always show the alert
- For non-final deprecations show the alert:
- when `emit` is set to `true` (default value); and
- the deprecation has not been ignored in the `config.php` by the
site; and
- either:
- developer mode is set; or
- it is a behat site.
Safat [Tue, 3 Mar 2026 03:49:07 +0000 (14:49 +1100)]
Merge branch 'MDL-88030-main' of https://github.com/HuongNV13/moodle
Safat [Tue, 3 Mar 2026 03:11:00 +0000 (14:11 +1100)]
Merge branch 'MDL-82731-main' of https://github.com/raortegar/moodle
Safat [Tue, 3 Mar 2026 02:54:52 +0000 (13:54 +1100)]
Merge branch 'MDL-87867-main' of https://github.com/andrewnicols/moodle
Huong Nguyen [Tue, 3 Mar 2026 01:40:13 +0000 (08:40 +0700)]
Merge branch 'MDL-87545-main-v2' of https://github.com/andimendunia/moodle
Jonathon Fowler [Fri, 15 Aug 2025 05:35:24 +0000 (15:35 +1000)]
MDL-86112 courseformat: avoid a JS error modal when marking as done
When viewing an "available but not shown" cm with self-completion set,
then clicking the 'Mark as done' button in the activity header.
Huong Nguyen [Tue, 3 Mar 2026 01:35:55 +0000 (08:35 +0700)]
Merge branch 'MDL-87993-main' of https://github.com/junpataleta/moodle
Huong Nguyen [Tue, 3 Mar 2026 01:33:19 +0000 (08:33 +0700)]
Merge branch 'MDL-87945' of https://github.com/paulholden/moodle
Huong Nguyen [Tue, 3 Mar 2026 01:30:36 +0000 (08:30 +0700)]
Merge branch 'MDL-60912-main' of https://github.com/AnupamaSarjoshi/moodle
Huong Nguyen [Tue, 3 Mar 2026 01:25:35 +0000 (08:25 +0700)]
Merge branch 'MDL-87933' of https://github.com/paulholden/moodle
cescobedo [Mon, 2 Mar 2026 18:07:59 +0000 (19:07 +0100)]
Merge branch 'MDL-86932-main' of https://github.com/durenadev/moodle
Sara Arjona [Mon, 2 Mar 2026 16:50:01 +0000 (17:50 +0100)]
Merge branch 'MDL-87574-main' of https://github.com/sarjona/moodle
Sara Arjona [Mon, 2 Mar 2026 16:37:24 +0000 (17:37 +0100)]
Merge branch 'MDL-87573-main' of https://github.com/sarjona/moodle
Sara Arjona [Mon, 23 Feb 2026 13:49:02 +0000 (14:49 +0100)]
MDL-87574 course: Handle restricted sections in next/previous nav
Consider restricted sections in the linear navigation.
Sara Arjona [Mon, 2 Mar 2026 16:17:06 +0000 (17:17 +0100)]
Merge branch 'MDL-87570-main' of https://github.com/laurentdavid/moodle
Laurent David [Mon, 16 Feb 2026 10:49:07 +0000 (11:49 +0100)]
MDL-87570 core_course: Next for final course activity
Andrew Nicols [Thu, 5 Feb 2026 08:15:48 +0000 (16:15 +0800)]
MDL-87867 core: Update deprecated JS to use core/deprecated
Andrew Nicols [Thu, 5 Feb 2026 06:44:52 +0000 (14:44 +0800)]
MDL-87867 core: Add core/deprecated AMD module
Paul Holden [Mon, 2 Mar 2026 11:55:36 +0000 (11:55 +0000)]
Merge branch 'MDL-87690' of https://github.com/yerairogo/moodle
Paul Holden [Mon, 2 Mar 2026 10:37:56 +0000 (10:37 +0000)]
MDL-75067 behat: always interact with filepicker inside active dialogue.
This allows for tests to interact with multiple elements of this type
during scenarios, whereas previously Behat would always try to interact
with the first (even when referring to latter file managers).
Raquel Ortega [Mon, 2 Mar 2026 09:45:02 +0000 (10:45 +0100)]
MDL-82731 aiprovider_awsbedrock: add to standard plugin list.
Raquel Ortega [Mon, 19 Jan 2026 12:17:38 +0000 (13:17 +0100)]
MDL-82731 AI: Provider Plugin - AWS Bedrock
Add a provider plugin that supports AI models from AWS bedrock.
Supports both text and image models.
Co-authored-by: Matt Porritt <mattporritt@users.noreply.github.com>
Co-authored-by: Safat Shahin <safatshahin@users.noreply.github.com>
Daniel Ureña [Sat, 18 Oct 2025 05:53:01 +0000 (07:53 +0200)]
MDL-86932 mod_choice: Add userresponse field to get_choice_results WS
Mark Johnson [Thu, 26 Feb 2026 09:28:51 +0000 (09:28 +0000)]
MDL-86691 questions: Fix incorrect set reference category contexts
During the upgrade to 5.x, question categories are moved to new
mod_qbank module contexts, and any set references using those categories
are updated using `move_question_set_references()`. However, this
function wasn't updating the `cat` arribute of the set reference's
filter condition, leaving it pointing at the original context ID.
This change update `move_question_set_references()` so that when a set
reference is moved (during the 5.x upgrade, or otherwise) the `cat`
parameter will be updated correctly.
For sites that have already gone through the 5.x upgrade, this fix also
adds a CLI script to find and fix incorrect question_set_reference
records. I considered adding this as an upgrade step, but it potentially
has a lot of records to check, and it's redundant if the site is being
upgraded to 5.x with this fix already in place.
Sara Arjona [Tue, 24 Feb 2026 14:02:50 +0000 (15:02 +0100)]
MDL-87573 course: Handle restricted modules in next/previous nav
Brendan Heywood [Sun, 1 Mar 2026 02:44:46 +0000 (13:44 +1100)]
MDL-88093 task: Send task failure messages in correct language
Mark Johnson [Mon, 24 Nov 2025 10:12:02 +0000 (10:12 +0000)]
MDL-87264 qbank_managecategories: Move categories between banks
This restores the ability to move an entire category to a different
context,
which now means a different activity module.
The feature is accessed via the Move option in the category's action
menu,
which now has a "Switch bank" option like the "add from question bank"
UI
in the quiz.
When a category is moved to a different context, it will disappear from
the current page, and a link to the destination bank is displayed.
Mark Johnson [Thu, 20 Nov 2025 13:40:52 +0000 (13:40 +0000)]
MDL-87264 qbank_managecategories: Remove multiple context support
Since 5.0 we can no longer have categories in contexts above modules, so
there is no need to support multiple contexts in the question bank
category management UI.
Mark Johnson [Wed, 21 Jan 2026 15:03:49 +0000 (15:03 +0000)]
MDL-87264 questions: Add category route
Mark Johnson [Thu, 20 Nov 2025 13:40:34 +0000 (13:40 +0000)]
MDL-87264 questions: Make bank switcher more generic
Currently, the question bank switcher assumes its being displayed
inside a quiz. This means it can't easily be reused in other
activities, or outside activity contexts.
This change makes the inclusion and display of an activity's
question bank on the list of available banks optional, and
removes any references to the quiz.
Andrew Nicols [Mon, 19 Jan 2026 02:23:14 +0000 (10:23 +0800)]
MDL-87264 router: Add course and coursemodule query parameters
Yerai Rodríguez [Thu, 15 Jan 2026 15:22:27 +0000 (16:22 +0100)]
MDL-87690 customfield: Feature to convert CF category to shared category
This feature adds the ability to convert an existing custom field
category to a shared custom field category via adding a button to the
custom field management interface.
Mark Johnson [Tue, 6 Jan 2026 16:08:07 +0000 (16:08 +0000)]
MDL-86154 questions: Delete unused questions after restore
After restoring an activity using shared questions without the question
bank they belong to, we may have left over question categories in the
target course context. These were being deleted, but any questions they
contained weren't.
This replaces the bulk delete of question category records with a call
to `question_category_delete_safe()` for each category, which will also
delete the questions they contain.
Andi Permana [Tue, 10 Feb 2026 03:07:55 +0000 (10:07 +0700)]
MDL-87545 tool_mobile: expose enablemyhome via webservices
Andi Permana [Tue, 27 Jan 2026 06:46:34 +0000 (13:46 +0700)]
MDL-87545 core: route homepage selection with enablemyhome
MDL-87545 core: add unit coverage for homepage defaults
MDL-87545 core: update behat expectations for homepage options
Andi Permana [Tue, 27 Jan 2026 06:46:25 +0000 (13:46 +0700)]
MDL-87545 core: add enablemyhome config and upgrade step
Mark Johnson [Mon, 26 Jan 2026 15:57:27 +0000 (15:57 +0000)]
MDL-87315 backup: Update set reference question category ID on restore.
When a question bank is restored along with a quiz that uses a random question from that bank,
the set reference for the random question should now point to the category in the restored bank,
rather than original.
This uses the question bank context IDs recorded using the method added in MDL-86136
to decide if the set reference's question context is being restored, and update it
accordingly.
This required adding a new restore step in the restore_root_task, since when a restore is
performed asynchronously, the temp IDs table is deleted after the prechecks are performed
when the task is queued. Adding this step allows the IDs to be recorded again when the restore
runs.
Yerai Rodríguez [Tue, 27 Jan 2026 13:31:26 +0000 (14:31 +0100)]
MDL-87690 customfield: Added new partial named selector for CF category
Laurent David [Mon, 23 Feb 2026 14:07:17 +0000 (15:07 +0100)]
MDL-87980 mod_assign: Fix empty description display
Paul Holden [Tue, 30 Dec 2025 10:30:12 +0000 (10:30 +0000)]
MDL-79574 reportbuilder: consistent application of column indexes.
No longer reliant on persistent record indexing (whose behaviour
has now changed), we are now explicit in setting each column index
within reports.
Paul Holden [Mon, 5 Jan 2026 11:56:43 +0000 (11:56 +0000)]
MDL-79574 core: updates to component API that retrieve persistents.
Where the API previously returned the results of `::get_records()` call
then preserve existing behaviour of zero-based index. Update any tests
that call this method directly in order to perform assertions.
Paul Holden [Tue, 17 Dec 2024 14:55:17 +0000 (14:55 +0000)]
MDL-79574 core: index returned persistent instances on record ID.
Paul Holden [Mon, 5 Jan 2026 13:04:19 +0000 (13:04 +0000)]
MDL-87451 reportbuilder: pass existing entity instances in method calls.
Paul Holden [Fri, 12 Dec 2025 15:47:52 +0000 (15:47 +0000)]
MDL-87451 reportbuilder: accept entity instances when adding elements.
Where the report already has an instance of the entity, it should be
able to just pass that, avoiding a lookup of the same.
Ilya Tregubov [Fri, 27 Feb 2026 08:04:43 +0000 (09:04 +0100)]
Merge branch 'MDL-87967' of https://github.com/paulholden/moodle
Ilya Tregubov [Fri, 27 Feb 2026 07:51:57 +0000 (08:51 +0100)]
Merge branch 'MDL-29421' of https://github.com/paulholden/moodle
Huong Nguyen [Fri, 27 Feb 2026 02:38:14 +0000 (09:38 +0700)]
weekly release 5.2dev
Huong Nguyen [Fri, 27 Feb 2026 02:38:14 +0000 (09:38 +0700)]
NOBUG: Add upgrade notes
Huong Nguyen [Fri, 27 Feb 2026 02:38:02 +0000 (09:38 +0700)]
NOBUG: Fixed SVG browser compatibility
Huong Nguyen [Fri, 27 Feb 2026 02:38:01 +0000 (09:38 +0700)]
Merge branch 'install_main' of https://git.in.moodle.com/amosbot/moodle-install
AMOS bot [Fri, 27 Feb 2026 00:07:51 +0000 (00:07 +0000)]
Automatically generated installer lang files
sam marshall [Mon, 9 Feb 2026 12:02:21 +0000 (12:02 +0000)]
MDL-87905 Behat: pause incorrectly thinks terminal not interactive
When run from behat/cli/run.php, the pause command may fail because
it thinks the terminal is not interactive, even if the input and
output is passed through from an interactive terminal run.
Anupama Sarjoshi [Fri, 16 Jan 2026 14:23:17 +0000 (19:53 +0530)]
MDL-60912 core_completion: Fix course completion percentage calculation
This change ensures that course completion percentage calculations
include only completion activities visible to the user on the course
home page. Hidden or unavailable activities, and those in hidden
sections, are no longer included in the calculation.
Huong Nguyen [Thu, 26 Feb 2026 04:18:19 +0000 (11:18 +0700)]
Merge branch 'MDL-87831-main' of https://github.com/safatshahin/moodle
Huong Nguyen [Thu, 26 Feb 2026 02:16:01 +0000 (09:16 +0700)]
Merge branch 'MDL-86866-main' of https://github.com/andrewnicols/moodle
Huong Nguyen [Thu, 26 Feb 2026 02:07:23 +0000 (09:07 +0700)]
Merge branch 'MDL-87588-main' of https://github.com/muhammadarnaldo/moodle
Huong Nguyen [Thu, 26 Feb 2026 02:03:49 +0000 (09:03 +0700)]
Merge branch 'MDL-88020-main' of https://github.com/rxdelacruz/moodle
Huong Nguyen [Thu, 26 Feb 2026 02:01:20 +0000 (09:01 +0700)]
Merge branch 'MDL-88036-main' of https://github.com/mioyu-ubiq/moodle
Mihail Geshoski [Thu, 26 Feb 2026 01:56:50 +0000 (09:56 +0800)]
Merge branch 'MDL-85902-main' of https://github.com/junpataleta/moodle
Mihail Geshoski [Thu, 26 Feb 2026 01:43:52 +0000 (09:43 +0800)]
Merge branch 'MDL-86524_main' of https://github.com/marxjohnson/moodle