Huong Nguyen [Wed, 11 Feb 2026 01:44:36 +0000 (08:44 +0700)]
Moodle release 5.1.3
AMOS bot [Wed, 11 Feb 2026 00:07:50 +0000 (00:07 +0000)]
Automatically generated installer lang files
Huong Nguyen [Tue, 10 Feb 2026 01:41:24 +0000 (08:41 +0700)]
weekly release 5.1.2+
Huong Nguyen [Mon, 9 Feb 2026 09:31:45 +0000 (16:31 +0700)]
MDL-87892 admin: Fix MoodleNet check
Huong Nguyen [Fri, 6 Feb 2026 12:53:54 +0000 (19:53 +0700)]
MDL-87892 admin: Fix MoodleNet removal warning
Instead of introducing a new optional parameter,
we will make all the changes in the Admin Renderer
AMOS bot [Mon, 9 Feb 2026 00:07:48 +0000 (00:07 +0000)]
Automatically generated installer lang files
AMOS bot [Sat, 7 Feb 2026 00:07:50 +0000 (00:07 +0000)]
Automatically generated installer lang files
Huong Nguyen [Fri, 6 Feb 2026 02:16:30 +0000 (09:16 +0700)]
Moodle release 5.1.2
Huong Nguyen [Fri, 6 Feb 2026 02:16:30 +0000 (09:16 +0700)]
NOBUG: Add upgrade notes
AMOS bot [Fri, 6 Feb 2026 00:07:49 +0000 (00:07 +0000)]
Automatically generated installer lang files
Mihail Geshoski [Thu, 5 Feb 2026 12:23:16 +0000 (20:23 +0800)]
weekly release 5.1.1+
Mihail Geshoski [Thu, 5 Feb 2026 12:23:16 +0000 (20:23 +0800)]
NOBUG: Add upgrade notes
Paul Holden [Wed, 4 Feb 2026 17:39:40 +0000 (17:39 +0000)]
MDL-87870 admin: tighten up validation of colour picker values.
Paul Holden [Wed, 4 Feb 2026 17:26:44 +0000 (17:26 +0000)]
MDL-87870 filter_tex: escape background argument content.
yusufwib01 [Sat, 11 Oct 2025 20:00:57 +0000 (03:00 +0700)]
MDL-86785 tiny_equation: Add timeout handling for mimetex execution
Huong Nguyen [Tue, 3 Feb 2026 10:39:06 +0000 (17:39 +0700)]
MDL-87843 filter_tex: Switch to use Colour picker setting
This will allow users to easily choose the background colour
and prevent invalid input values
Paul Holden [Fri, 30 Jan 2026 11:41:51 +0000 (11:41 +0000)]
MDL-87612 repository: safer unserializing of file source data.
AMOS bot [Thu, 5 Feb 2026 00:07:50 +0000 (00:07 +0000)]
Automatically generated installer lang files
Muhammad Arnaldo [Tue, 3 Feb 2026 10:46:17 +0000 (17:46 +0700)]
MDL-87757 block_myoverview: Remove navigation role and behat update
- Removal of the navigation role on main and zero-state template
- Add accessibility extra tests for the block_overview
Muhammad Arnaldo [Tue, 27 Jan 2026 04:59:56 +0000 (11:59 +0700)]
MDL-87757 block_myoverview: fix the heading-order
Andi Permana [Tue, 3 Feb 2026 16:39:19 +0000 (23:39 +0700)]
MDL-87352 admin: Add MoodleNet removal warnings
AMOS bot [Wed, 4 Feb 2026 00:07:44 +0000 (00:07 +0000)]
Automatically generated installer lang files
Alexander Bias [Sun, 28 Dec 2025 11:44:10 +0000 (12:44 +0100)]
MDL-87559 core: Set $SCRIPT even outside public/
Rajneel Totaram [Mon, 26 Jan 2026 04:51:52 +0000 (16:51 +1200)]
MDL-87258 mod_lti: request access for PNA
Since Chrome 142, public servers accessing resources on local networks
gets blocked by default. Users need to allow access for such requests
to proceed.
This patch introduces a new config setting `ltiallowlocalnetwork`.
This determines if the local-network-access flag should be added to LTI
iframes so that Chrome users get prompted when a local network access
is being made.
AMOS bot [Tue, 3 Feb 2026 00:07:58 +0000 (00:07 +0000)]
Automatically generated installer lang files
Stefan Topfstedt [Mon, 2 Feb 2026 18:35:44 +0000 (10:35 -0800)]
MDL-87694 core: prevent empty heading in context header.
Stefan Topfstedt [Mon, 2 Feb 2026 18:20:40 +0000 (10:20 -0800)]
MDL-87694 profile: change page title to "Login required".
This realigns the page title with public/user/view.php.
Stefan Topfstedt [Mon, 2 Feb 2026 18:12:45 +0000 (10:12 -0800)]
MDL-87694 profile: set top level heading when accessed as guest user.
Jun Pataleta [Wed, 28 Jan 2026 11:41:31 +0000 (19:41 +0800)]
MDL-87694 core: `headinglevel` display option for $OUTPUT->confirm()
`\core\output\core_renderer::confirm()`'s `$displayoptions` parameter
now also accepts a `headinglevel` option that developers can use to
specify the heading level of the confirmation's heading. If not
specified, the confirmation heading will be rendered in an `h4` tag.
Jun Pataleta [Mon, 20 Oct 2025 09:47:35 +0000 (17:47 +0800)]
MDL-86905 core: Use proper link markup for email links
Cameron Ball [Thu, 29 Jan 2026 23:37:48 +0000 (07:37 +0800)]
MDL-87029 quiz: Refetch attempts in overdue task to avoid stale submits
The update_overdue_attempts scheduled task iterated attempts from a recordset
and could act on stale attempt data if the web request finished an attempt
before cron processed it, causing duplicate submissions.
Change get_list_of_overdue_attempts() to return only attempt ids plus computed user
timeclose/timelimit, and refetch each attempt by id inside the task loop before
constructing quiz_attempt. This keeps quiz_attempt APIs unchanged and ensures cron
operates on current state
AMOS bot [Sat, 31 Jan 2026 00:07:50 +0000 (00:07 +0000)]
Automatically generated installer lang files
David Mudrák [Mon, 19 Jan 2026 21:47:12 +0000 (22:47 +0100)]
MDL-87520 core: Fix interpretation of CFG->branch in update API client
Starting in version 3.10, Moodle started to use a different format for
the $CFG->branch that has not been fixed here. This is to make sure that
we request the correct version of the plugin.
Benjamin Walker [Wed, 22 Oct 2025 23:46:22 +0000 (09:46 +1000)]
MDL-86601 core_task: Add index for scheduled task lastruntime
Benjamin Walker [Tue, 16 Sep 2025 23:40:17 +0000 (09:40 +1000)]
MDL-86601 core_task: Add index for large adhoc task queues
Sara Arjona [Thu, 29 Jan 2026 11:09:43 +0000 (12:09 +0100)]
MDL-87761 course: Add warning for phasing out subsection descriptions
The Description field within the Subsection edit form has been deprecated since Moodle 5.2 onwards (see MDL-87279).
To ensure a smooth transition and avoid data loss for our users, the XD team have prepared a solution to notify them
of this upcoming change in stable versions.
Iñigo Zendegi [Thu, 4 Dec 2025 06:00:32 +0000 (07:00 +0100)]
MDL-87396 mod_assign: Add availability check to notifications
Paul Holden [Thu, 27 Nov 2025 18:15:05 +0000 (18:15 +0000)]
MDL-87334 course: looser check for empty return field editing course.
When the course format switcher reloads the form, the `$returnto`
parameter is of type string: "0", rather of type integer per initial
load.
In this case the `empty(...)` check is verifying all of empty string,
0 (integer) and "0" (string). Hurrah for PHP type checking.
Huong Nguyen [Fri, 30 Jan 2026 08:39:13 +0000 (15:39 +0700)]
weekly release 5.1.1+
Huong Nguyen [Fri, 30 Jan 2026 08:39:13 +0000 (15:39 +0700)]
NOBUG: Add upgrade notes
Andrew Nicols [Fri, 30 Jan 2026 05:06:10 +0000 (13:06 +0800)]
NOBUG: Bump composer.lock
Niko Hoogeveen [Mon, 26 Jan 2026 16:18:22 +0000 (11:18 -0500)]
MDL-84966 core_question: Updated question bank tag filter
Fixes a bug where filtering questions by tag the 'NONE'
option was not being respected. Automated testing was also added
to cover tag filtering conditions in the question bank
Daniel Ureña [Fri, 14 Nov 2025 09:53:46 +0000 (10:53 +0100)]
MDL-87185 block_site_main_menu: Add required library
fgo [Thu, 2 Oct 2025 09:02:48 +0000 (11:02 +0200)]
MDL-86437 enrol_lti: Cast scoreGiven to float for LTI compliance
scoreGiven was being passed as a string (e.g. "8.0"), which caused
validation errors in some LMS implementations such as Rustici Engine.
According to the LTI specification, scoreGiven must be numeric if
present.
Co-authored-by: Jake Dallimore <jake@moodle.com>
Jake Dallimore [Thu, 29 Jan 2026 05:13:59 +0000 (13:13 +0800)]
MDL-87789 libraries: patch lti1p3 for certification support
https://github.com/packbackbooks/lti-1-3-php-library/issues/169 blocks
us from using the new build.1edtech certification tooling. This issue
commits that fix as a library customisation/hack for stables, so the
suite can be used for annual/bi-annual re-certification.
Angelia Dela Cruz [Wed, 14 Jan 2026 07:18:03 +0000 (15:18 +0800)]
MDL-87087 tool_dataprivacy: Test data request by authorized user
AMOS bot [Thu, 29 Jan 2026 00:07:47 +0000 (00:07 +0000)]
Automatically generated installer lang files
David Mudrák [Wed, 28 Jan 2026 20:44:05 +0000 (21:44 +0100)]
MDL-87593 lang: Fix strings order
Paul Holden [Wed, 28 Jan 2026 16:32:17 +0000 (16:32 +0000)]
MDL-87714 customfield_number: upgrade note for recalculate parameters.
Sebastian Gundersen [Mon, 26 Jan 2026 12:15:02 +0000 (13:15 +0100)]
MDL-87714 customfield: Add component/area to field number provider
Fixes ambiguous instances when using shared custom fields.
The component and area parameters are now used to get the proper handler.
Tim Hunt [Mon, 22 Dec 2025 19:45:01 +0000 (19:45 +0000)]
MDL-87521 behat: better error reporting if an adhoc task fails
Paul Holden [Wed, 28 Jan 2026 14:38:34 +0000 (14:38 +0000)]
MDL-87059 customfield: upgrade note regarding shortname uniqueness.
Yerai Rodríguez [Thu, 22 Jan 2026 15:11:26 +0000 (16:11 +0100)]
MDL-87736 customfield: Retrieve instances data using component and area
mioyu-ubiq [Tue, 20 Jan 2026 05:51:38 +0000 (13:51 +0800)]
MDL-86994 mod_assign: Behat to test permitted users can edit submission
Hai Nguyen Van [Mon, 19 Jan 2026 08:11:33 +0000 (08:11 +0000)]
MDL-87675 core: Add delay for displaying the YUI alert dialogue message
* Add a slight delay for displaying the message content of the YUI
alert dialogue's ARIA live container to allow screen readers to
announce the alert message accordingly.
David Mudrák [Mon, 26 Jan 2026 21:04:23 +0000 (22:04 +0100)]
MDL-87593 lang: Use the fixed strings in tests
Helen Foster [Tue, 27 Jan 2026 20:40:05 +0000 (21:40 +0100)]
MDL-87593 lang: Import fixed English strings (en_fix)
Mark Johnson [Thu, 8 Jan 2026 13:48:51 +0000 (13:48 +0000)]
MDL-87606 backup: Include child questions in backups
Since MDL-41924, because we are not always including the whole category
of each question being used in a backup, we have been missing some child
questions.
This expands the query selecting questions belonging to categories
where only annotated questions are being included, to also select any
children of those questions.
Paul Holden [Tue, 4 Nov 2025 17:24:14 +0000 (17:24 +0000)]
MDL-87104 message: remove border from contact request sent profile info.
Raquel Ortega [Sun, 18 Jan 2026 15:34:15 +0000 (16:34 +0100)]
MDL-87289 mod_forum: Disable mediaplugin filter in emails
David Carrillo [Fri, 23 Jan 2026 07:12:49 +0000 (08:12 +0100)]
MDL-87059 customfield: Check if custom field shortname is unique
- If is a shared field check that shortname does not exist anywhere.
- If is an entity field check that the shortname does not exist
within the same entity fields or in the shared fields.
Huong Nguyen [Mon, 26 Jan 2026 03:38:54 +0000 (10:38 +0700)]
weekly release 5.1.1+
Héctor Benedicte [Tue, 4 Nov 2025 17:56:37 +0000 (18:56 +0100)]
MDL-87018 qtype_essay: Add unit tests for un_summarise_response().
AMOS bot [Fri, 23 Jan 2026 00:08:05 +0000 (00:08 +0000)]
Automatically generated installer lang files
Mihail Geshoski [Tue, 20 Jan 2026 03:43:37 +0000 (11:43 +0800)]
MDL-87287 qbank_tagquestion: Fix version bump
Mark Johnson [Mon, 12 Jan 2026 10:33:10 +0000 (10:33 +0000)]
MDL-86136 question: Amend version restore test
Restoring a whole course will now restore the backed-up questions to a
new qbank instance. This means the test to restore versions was not
restoring the deleted versions to the original question bank entires,
but to a new question bank entry in the new qbank.
Updating the test to just backup and restore the quiz resolves this.
Mark Johnson [Fri, 7 Nov 2025 14:01:50 +0000 (14:01 +0000)]
MDL-86136 qbank: Restore entire activity when it is in the backup
When restoring a backup containing a question bank, we were always
trying to match questions to an existing category on the target course
if once existed. This meant that when duplicating a qbank on the same
course, or importing the same qbank to another course multiple times,
only one of the restored qbanks would end up with questions in it.
This adds a mechanism to record any activities in the backup which
support `FEATURE_PUBLISHES_QUESTIONS`. Then when we restore the
questions, we check if we will be restoring the original activity they
belong to, and skip trying to match them to an existing category. This
means a new copy of each question will be created, and moved to the new
copy of the qbank once it is created.
Muhammad Arnaldo [Tue, 23 Dec 2025 09:28:09 +0000 (16:28 +0700)]
MDL-86527 behat: Avoid element-click-intercepted failures
Adjusts the window size to accommodate wide tables.
This ensures that columns which were previously clipped
are now visible and accessible to the Behat driver.
Muhammad Arnaldo [Tue, 23 Dec 2025 09:20:39 +0000 (16:20 +0700)]
MDL-86527 behat: Fix random failures when toggling edit mode
Andrew Nicols [Wed, 14 Jan 2026 07:10:31 +0000 (15:10 +0800)]
MDL-87659 core: Hide "Details" section of checks Table when there are none
AMOS bot [Wed, 21 Jan 2026 00:08:12 +0000 (00:08 +0000)]
Automatically generated installer lang files
Yusuf Wibisono [Wed, 14 Jan 2026 08:23:57 +0000 (15:23 +0700)]
MDL-86639 groups: Wrap group names in grade report group selector
Paul Holden [Mon, 24 Nov 2025 11:29:46 +0000 (11:29 +0000)]
MDL-86797 courseformat: account for hidden delegated section info.
Kim Jared Lucas [Tue, 20 Jan 2026 02:37:23 +0000 (10:37 +0800)]
MDL-87092 tool_uploaduser: suspend enrolments via CSV upload
AMOS bot [Tue, 20 Jan 2026 00:08:12 +0000 (00:08 +0000)]
Automatically generated installer lang files
Anupama Sarjoshi [Mon, 19 Jan 2026 09:20:19 +0000 (14:50 +0530)]
MDL-51447 block_completionstatus: Show only user-visible activities
This change ensures that the completion details page displays only the
activities that are visible to the user on the course home page.
Activities that are hidden, unavailable or located in hidden sections
are no longer shown in the completion details view.
Co-authored by: ewallah <info@ewallah.net>
Anupama Sarjoshi [Mon, 19 Jan 2026 09:14:33 +0000 (14:44 +0530)]
MDL-51447 core_completion: Get visible activities with completion on
Simey Lameze [Mon, 19 Jan 2026 05:38:41 +0000 (13:38 +0800)]
MDL-87090 behat: improve new test
mioyu-ubiq [Tue, 6 Jan 2026 09:06:19 +0000 (17:06 +0800)]
MDL-87090 mod_assign : Teacher can override assignment deadlines
David Woloszyn [Fri, 12 Dec 2025 05:43:38 +0000 (16:43 +1100)]
MDL-78342 core_table: Remove line break conversion in format_text
Mark Johnson [Thu, 15 Jan 2026 17:05:36 +0000 (17:05 +0000)]
MDL-86609 qbank_bulkmove: Select the current category by default
Nicolas Dunand [Thu, 25 Sep 2025 13:01:55 +0000 (15:01 +0200)]
MDL-86609 qbank_bulkmove: Target qbank categoryid fix.
Luca Bösch [Wed, 26 Nov 2025 13:46:57 +0000 (14:46 +0100)]
MDL-87318 gradereport_grader: No over-thick table borders with BS 5.
Luca Bösch [Wed, 26 Nov 2025 12:22:04 +0000 (13:22 +0100)]
MDL-87317 report_progress: Striped hovering table rows with BS 5.
Jake Dallimore [Fri, 16 Jan 2026 08:38:17 +0000 (16:38 +0800)]
weekly release 5.1.1+
Jake Dallimore [Fri, 16 Jan 2026 08:38:17 +0000 (16:38 +0800)]
NOBUG: Add upgrade notes
Paul Holden [Thu, 15 Jan 2026 23:50:38 +0000 (23:50 +0000)]
MDL-85300 grade: account for tooltip size in bulk move dialogue.
Now that it actually works, it obscures some elements required in
Behat scenarios. Resize the icon, and place it to the right.
Jayce Birrell [Thu, 2 Oct 2025 05:09:41 +0000 (14:39 +0930)]
MDL-86802 core: make CURLOPT_USERPWD optional for put()
Microsoft does not always allow an Authorization header when using PUT but the put() method sets one
by default - https://learn.microsoft.com/en-us/graph/api/driveitem-createuploadsession?view=graph-rest-1.0#remarks.
I've included an optional argument to prevent this, but the default
value will maintain the pre-existing logic to avoid other regressions.
Paul Holden [Wed, 14 Jan 2026 17:09:42 +0000 (17:09 +0000)]
MDL-50364 forms: consistent access to language strings from JS.
Mi Jia Looi [Tue, 15 Jul 2025 06:12:15 +0000 (16:12 +1000)]
MDL-86017 mod_folder: Cast customdata to object in folder_cm_info_view()
AMOS bot [Thu, 15 Jan 2026 00:08:05 +0000 (00:08 +0000)]
Automatically generated installer lang files
Mark Johnson [Wed, 14 Jan 2026 11:56:41 +0000 (11:56 +0000)]
MDL-85653 qbank_editquestion: Display static status when not editable
Mark Johnson [Mon, 5 Jan 2026 14:48:30 +0000 (14:48 +0000)]
MDL-86444 questions: Fix question categories with incorrect top parents
Paul Holden [Mon, 12 Jan 2026 17:44:56 +0000 (17:44 +0000)]
MDL-87634 core: exclude fixtures from Github actions "one-by-one" job.
This is consistent with the PHPUnit general configuration in
20aa9d05.
Yerai Rodríguez [Fri, 9 Jan 2026 15:34:38 +0000 (16:34 +0100)]
MDL-76975 admin: Move AMD dependencies to data attribute to fix overflow
Since there is a 1024 length limit on arguments passed through
js_call_amd(), we pass it through a HTML element dataset to avoid
this limit.
Guest [Mon, 22 Dec 2025 08:55:57 +0000 (14:25 +0530)]
MDL-87478 mod_quiz: Make pre-create attempts work with previews
AMOS bot [Tue, 13 Jan 2026 00:08:07 +0000 (00:08 +0000)]
Automatically generated installer lang files
Andrew Nicols [Mon, 12 Jan 2026 02:06:42 +0000 (10:06 +0800)]
MDL-87625 core: Use the /r.php basepath to guess routes
Paul Holden [Mon, 12 Jan 2026 17:21:05 +0000 (17:21 +0000)]
MDL-87635 backup: ensure required test libraries are loaded.
Simey Lameze [Mon, 12 Jan 2026 04:10:11 +0000 (12:10 +0800)]
MDL-87088 behat: add missing @javascript tags to required tests