moodle.git
3 weeks agoMDL-88145 core: Security helper additional unit test and typo fix
Michael Hawkins [Mon, 10 Nov 2025 11:28:32 +0000 (19:28 +0800)]
MDL-88145 core: Security helper additional unit test and typo fix

Adds unit testing to incorrect call order for get_resolve_info() and
also fixes an incorrect bracket closure on an empty statement.

3 weeks agoMerge branch 'MDL-88391' of https://github.com/paulholden/moodle
Sara Arjona [Wed, 8 Apr 2026 06:10:53 +0000 (08:10 +0200)]
Merge branch 'MDL-88391' of https://github.com/paulholden/moodle

3 weeks agoMDL-88360 message: fix cannot send error shown in group conversations
Muhammad Arnaldo [Wed, 8 Apr 2026 04:52:54 +0000 (11:52 +0700)]
MDL-88360 message: fix cannot send error shown in group conversations

3 weeks agoMerge branch 'MDL-88006' of https://github.com/paulholden/moodle
Huong Nguyen [Wed, 8 Apr 2026 01:12:55 +0000 (08:12 +0700)]
Merge branch 'MDL-88006' of https://github.com/paulholden/moodle

3 weeks agoMDL-88391 tool_mobile: update usage of Bootstrap margin class.
Paul Holden [Tue, 7 Apr 2026 19:50:46 +0000 (20:50 +0100)]
MDL-88391 tool_mobile: update usage of Bootstrap margin class.

3 weeks agoMDL-88390 repository: explicit string cast of file source data.
Paul Holden [Tue, 7 Apr 2026 19:11:45 +0000 (20:11 +0100)]
MDL-88390 repository: explicit string cast of file source data.

3 weeks agoMDL-87778 tasks: Fix bug with deep linking to log page
Brendan Heywood [Wed, 28 Jan 2026 23:27:11 +0000 (10:27 +1100)]
MDL-87778 tasks: Fix bug with deep linking to log page

3 weeks agoMerge branch 'MDL-88214-main' of https://github.com/aanabit/moodle
Sara Arjona [Tue, 7 Apr 2026 12:42:54 +0000 (14:42 +0200)]
Merge branch 'MDL-88214-main' of https://github.com/aanabit/moodle

3 weeks agoMerge branch 'MDL-87739' of https://github.com/paulholden/moodle
Mihail Geshoski [Tue, 7 Apr 2026 09:05:40 +0000 (17:05 +0800)]
Merge branch 'MDL-87739' of https://github.com/paulholden/moodle

3 weeks agoMerge branch 'MDL-87796' of https://github.com/paulholden/moodle
Mihail Geshoski [Tue, 7 Apr 2026 09:00:37 +0000 (17:00 +0800)]
Merge branch 'MDL-87796' of https://github.com/paulholden/moodle

3 weeks agoMerge branch 'MDL-87269' of https://github.com/paulholden/moodle
Mihail Geshoski [Tue, 7 Apr 2026 08:55:06 +0000 (16:55 +0800)]
Merge branch 'MDL-87269' of https://github.com/paulholden/moodle

3 weeks agoMerge branch 'MDL-88316-main' of https://github.com/laurentdavid/moodle
Sara Arjona [Tue, 7 Apr 2026 08:54:09 +0000 (10:54 +0200)]
Merge branch 'MDL-88316-main' of https://github.com/laurentdavid/moodle

4 weeks agoMerge branch 'MDL-77649-main' of https://github.com/junpataleta/moodle
Mihail Geshoski [Tue, 7 Apr 2026 07:19:45 +0000 (15:19 +0800)]
Merge branch 'MDL-77649-main' of https://github.com/junpataleta/moodle

4 weeks agoMerge branch 'MDL-80496-main' of https://github.com/parzers/moodle
Mihail Geshoski [Tue, 7 Apr 2026 07:13:48 +0000 (15:13 +0800)]
Merge branch 'MDL-80496-main' of https://github.com/parzers/moodle

4 weeks agoMDL-88316 core_courseformat: Fix URL mapping for subsections
Laurent David [Tue, 31 Mar 2026 06:07:38 +0000 (08:07 +0200)]
MDL-88316 core_courseformat: Fix URL mapping for subsections

4 weeks agoMerge branch 'MDL-88361-main' of https://github.com/sarjona/moodle
Sara Arjona [Tue, 7 Apr 2026 05:56:55 +0000 (07:56 +0200)]
Merge branch 'MDL-88361-main' of https://github.com/sarjona/moodle

4 weeks agoMerge branch 'MDL-88349-main' of https://github.com/muhammadarnaldo/moodle
Huong Nguyen [Tue, 7 Apr 2026 02:01:44 +0000 (09:01 +0700)]
Merge branch 'MDL-88349-main' of https://github.com/muhammadarnaldo/moodle

4 weeks agoMerge branch 'MDL-88348-main' of https://github.com/andimendunia/moodle
Huong Nguyen [Tue, 7 Apr 2026 01:58:42 +0000 (08:58 +0700)]
Merge branch 'MDL-88348-main' of https://github.com/andimendunia/moodle

4 weeks agoMDL-88380 aiprovider_awsbedrock: Add Claude 3.5 cross-region support
Anupama Sarjoshi [Mon, 6 Apr 2026 12:45:54 +0000 (18:15 +0530)]
MDL-88380 aiprovider_awsbedrock: Add Claude 3.5 cross-region support

4 weeks agoMDL-80496 filter_codehighlighter: add prism- prefix to CSS classes
Simon Parzer [Sat, 26 Apr 2025 14:32:15 +0000 (16:32 +0200)]
MDL-80496 filter_codehighlighter: add prism- prefix to CSS classes

Add CustomClass plugin to PrismJS
Update behat test

4 weeks agoMerge branch 'MDL-87957-main' of https://github.com/jfederico/moodle
Huong Nguyen [Mon, 6 Apr 2026 01:48:25 +0000 (08:48 +0700)]
Merge branch 'MDL-87957-main' of https://github.com/jfederico/moodle

4 weeks agoMDL-87903 core: Warm local hooks cache from shared cache
Brendan Heywood [Mon, 9 Feb 2026 23:12:07 +0000 (10:12 +1100)]
MDL-87903 core: Warm local hooks cache from shared cache

4 weeks agoMoodle release 5.2beta
Huong Nguyen [Fri, 3 Apr 2026 02:25:52 +0000 (09:25 +0700)]
Moodle release 5.2beta

4 weeks agoNOBUG: Add upgrade notes
Huong Nguyen [Fri, 3 Apr 2026 02:25:51 +0000 (09:25 +0700)]
NOBUG: Add upgrade notes

4 weeks agoNOBUG: Fixed SVG browser compatibility
Huong Nguyen [Fri, 3 Apr 2026 02:25:29 +0000 (09:25 +0700)]
NOBUG: Fixed SVG browser compatibility

4 weeks agoMerge branch 'install_main' of https://git.in.moodle.com/amosbot/moodle-install
Huong Nguyen [Fri, 3 Apr 2026 02:25:22 +0000 (09:25 +0700)]
Merge branch 'install_main' of https://git.in.moodle.com/amosbot/moodle-install

4 weeks agoAutomatically generated installer lang files
AMOS bot [Fri, 3 Apr 2026 00:07:55 +0000 (00:07 +0000)]
Automatically generated installer lang files

4 weeks agoMDL-88214 course: Remove the settings menu from restricted pages
Amaia Anabitarte [Thu, 2 Apr 2026 14:17:08 +0000 (16:17 +0200)]
MDL-88214 course: Remove the settings menu from restricted pages

4 weeks agoMDL-88348 repository_upload: move validation before session close
Andi Permana [Thu, 2 Apr 2026 11:18:03 +0000 (18:18 +0700)]
MDL-88348 repository_upload: move validation before session close

4 weeks agoMDL-88006 ai: normalise line breaks in AI response helper.
Paul Holden [Tue, 3 Mar 2026 13:57:35 +0000 (13:57 +0000)]
MDL-88006 ai: normalise line breaks in AI response helper.

Match multiple instances of either CRLF, LF and/or BR tags, replace
them with double <br/> tags for consistent output.

4 weeks agoMDL-88361 course: Avoid duplicate dates in restricted page for classic
Sara Arjona [Thu, 2 Apr 2026 10:17:26 +0000 (12:17 +0200)]
MDL-88361 course: Avoid duplicate dates in restricted page for classic

Forcing incourse pagelayout for restricted module page aligns it with
regular activity pages and prevents the duplicate date rendering path.

4 weeks agoMDL-88358 core: Improve performance of ESM JS delivery
Andrew Nicols [Thu, 2 Apr 2026 04:10:58 +0000 (12:10 +0800)]
MDL-88358 core: Improve performance of ESM JS delivery

4 weeks agoMerge branch 'MDL-88210-main' of https://github.com/mickhawkins/moodle
Huong Nguyen [Thu, 2 Apr 2026 03:54:53 +0000 (10:54 +0700)]
Merge branch 'MDL-88210-main' of https://github.com/mickhawkins/moodle

4 weeks agoMDL-88349 core: fix preventredirect guard
Muhammad Arnaldo [Thu, 2 Apr 2026 03:23:30 +0000 (10:23 +0700)]
MDL-88349 core: fix preventredirect guard

Added the missing the $preventredirect check
for the restricted-but-visible activity case.

4 weeks agoMDL-88210 core: Fix filtering of additionalhtmlfooter
Michael Hawkins [Mon, 16 Mar 2026 03:11:33 +0000 (11:11 +0800)]
MDL-88210 core: Fix filtering of additionalhtmlfooter

When filtering was added to support multi-lang, it used format_string
which broke necessary JS support, this update corrects it to format_text

4 weeks agoMerge branch 'MDL-84579-main' of https://github.com/vietlx426/moodle-1
Mihail Geshoski [Thu, 2 Apr 2026 02:22:19 +0000 (10:22 +0800)]
Merge branch 'MDL-84579-main' of https://github.com/vietlx426/moodle-1

4 weeks agoMerge branch 'MDL-87498-main' of https://github.com/davewoloszyn/moodle
Huong Nguyen [Thu, 2 Apr 2026 02:19:32 +0000 (09:19 +0700)]
Merge branch 'MDL-87498-main' of https://github.com/davewoloszyn/moodle

4 weeks agoMerge branch 'MDL-88272-main' of https://github.com/junpataleta/moodle
Huong Nguyen [Thu, 2 Apr 2026 02:11:38 +0000 (09:11 +0700)]
Merge branch 'MDL-88272-main' of https://github.com/junpataleta/moodle

4 weeks agoMerge branch 'MDL-68335-main' of https://github.com/lucaboesch/moodle
Mihail Geshoski [Thu, 2 Apr 2026 01:56:30 +0000 (09:56 +0800)]
Merge branch 'MDL-68335-main' of https://github.com/lucaboesch/moodle

4 weeks agoMerge branch 'MDL-87848_main' of https://github.com/marxjohnson/moodle
Mihail Geshoski [Thu, 2 Apr 2026 01:49:16 +0000 (09:49 +0800)]
Merge branch 'MDL-87848_main' of https://github.com/marxjohnson/moodle

4 weeks agoMDL-88266 core: Fix upgrade note issues
Andrew Nicols [Mon, 23 Mar 2026 04:43:09 +0000 (12:43 +0800)]
MDL-88266 core: Fix upgrade note issues

4 weeks agoMerge branch 'MDL-88228-main' of https://github.com/raortegar/moodle
Huong Nguyen [Thu, 2 Apr 2026 01:40:40 +0000 (08:40 +0700)]
Merge branch 'MDL-88228-main' of https://github.com/raortegar/moodle

4 weeks agoAutomatically generated installer lang files
AMOS bot [Thu, 2 Apr 2026 00:08:20 +0000 (00:08 +0000)]
Automatically generated installer lang files

4 weeks agoMDL-86093 course: Change the completion conditions container's role
Jun Pataleta [Wed, 1 Apr 2026 17:16:53 +0000 (01:16 +0800)]
MDL-86093 course: Change the completion conditions container's role

Change the completion conditions container's ARIA role from `list` to
a `region`. Ideally, the container doesn't need to have a region role
and an aria-label, but having a region landmark for the completion
conditions is not so bad and can help screen reader users easily
navigate to the completion conditions.

4 weeks agoMerge branch 'MDL-88092-main' of https://github.com/rezaies/moodle
Safat [Wed, 1 Apr 2026 11:13:31 +0000 (22:13 +1100)]
Merge branch 'MDL-88092-main' of https://github.com/rezaies/moodle

4 weeks agoMDL-87498 tool_task: Adhoc queue check ignores failed tasks
Brendan Heywood [Thu, 18 Dec 2025 13:18:25 +0000 (00:18 +1100)]
MDL-87498 tool_task: Adhoc queue check ignores failed tasks

Co-authored-by: David Woloszyn <david.woloszyn@moodle.com>
4 weeks agoMDL-77649 glossary: Do not use layout tables for glossary entries
Jun Pataleta [Thu, 15 Jan 2026 04:40:40 +0000 (12:40 +0800)]
MDL-77649 glossary: Do not use layout tables for glossary entries

4 weeks agoMDL-77649 glossary: Do not use layout tables in glossary functions
Jun Pataleta [Tue, 23 Dec 2025 08:35:40 +0000 (16:35 +0800)]
MDL-77649 glossary: Do not use layout tables in glossary functions

* Refactor `glossary_print_entry_lower_section()` and
`glossary_print_entry_approval()` so that they are not rendered using
layout tables.

4 weeks agoMDL-77649 glossary: Create a reusable glossary entry header
Jun Pataleta [Thu, 15 Jan 2026 04:28:07 +0000 (12:28 +0800)]
MDL-77649 glossary: Create a reusable glossary entry header

4 weeks agoMDL-77649 glossary: Query user record only when necessary
Jun Pataleta [Thu, 15 Jan 2026 04:34:28 +0000 (12:34 +0800)]
MDL-77649 glossary: Query user record only when necessary

We should only be querying the user record only when we are displaying
an entry. If there's no entry to be shown, we do not need to query it.

# Conflicts:
# public/mod/glossary/formats/encyclopedia/encyclopedia_format.php

4 weeks agoMDL-77649 glossary: Use appropriate author lang string
Jun Pataleta [Tue, 23 Dec 2025 08:14:01 +0000 (16:14 +0800)]
MDL-77649 glossary: Use appropriate author lang string

* Create mod_glossary's own `bynameondate` lang string to avoid
violating component communication rules.

4 weeks agoMDL-77649 glossary: Fix skipped heading levels
Jun Pataleta [Tue, 23 Dec 2025 08:45:45 +0000 (16:45 +0800)]
MDL-77649 glossary: Fix skipped heading levels

* And adjust Behat tests accordingly

4 weeks agoMDL-77649 glossary: Set presentation role for entry tables
Jun Pataleta [Thu, 15 Jan 2026 05:33:18 +0000 (13:33 +0800)]
MDL-77649 glossary: Set presentation role for entry tables

* And for entry formats that display a user picture, make the user
picture decorative only to avoid duplicate user profile links on
the page.

4 weeks agoMerge branch 'MDL-88343-main' of https://github.com/junpataleta/moodle
Huong Nguyen [Wed, 1 Apr 2026 01:56:28 +0000 (08:56 +0700)]
Merge branch 'MDL-88343-main' of https://github.com/junpataleta/moodle

4 weeks agoMerge branch 'MDL-87605' of https://github.com/paulholden/moodle
Huong Nguyen [Wed, 1 Apr 2026 01:50:16 +0000 (08:50 +0700)]
Merge branch 'MDL-87605' of https://github.com/paulholden/moodle

4 weeks agoMerge branch 'MDL-87862-main' of https://github.com/djarran/moodle
Huong Nguyen [Wed, 1 Apr 2026 01:46:17 +0000 (08:46 +0700)]
Merge branch 'MDL-87862-main' of https://github.com/djarran/moodle

4 weeks agoMDL-77649 glossary: Set presentation role for glossary functions
Jun Pataleta [Thu, 15 Jan 2026 05:31:51 +0000 (13:31 +0800)]
MDL-77649 glossary: Set presentation role for glossary functions

* Set the tables rendered by `glossary_print_entry_lower_section()` and
`glossary_print_entry_approval()` as decorative.

4 weeks agoMDL-77649 glossary: Render category headers without using layout tables
Jun Pataleta [Tue, 23 Dec 2025 01:50:05 +0000 (09:50 +0800)]
MDL-77649 glossary: Render category headers without using layout tables

4 weeks agoMerge branch 'MDL-87632-main' of https://github.com/andimendunia/moodle
Mihail Geshoski [Wed, 1 Apr 2026 01:18:01 +0000 (09:18 +0800)]
Merge branch 'MDL-87632-main' of https://github.com/andimendunia/moodle

4 weeks agoMerge branch 'MDL-87624-main' of https://github.com/snake/moodle
Mihail Geshoski [Wed, 1 Apr 2026 01:07:11 +0000 (09:07 +0800)]
Merge branch 'MDL-87624-main' of https://github.com/snake/moodle

4 weeks agoMerge branch 'MDL-87331' of https://github.com/paulholden/moodle
Mihail Geshoski [Wed, 1 Apr 2026 00:59:56 +0000 (08:59 +0800)]
Merge branch 'MDL-87331' of https://github.com/paulholden/moodle

4 weeks agoAutomatically generated installer lang files
AMOS bot [Wed, 1 Apr 2026 00:07:58 +0000 (00:07 +0000)]
Automatically generated installer lang files

4 weeks agoMDL-68335 qbehaviour: read in settings.php files
Marcus Green [Sun, 15 Feb 2026 19:34:36 +0000 (20:34 +0100)]
MDL-68335 qbehaviour: read in settings.php files

4 weeks agoMDL-88272 theme: Update the login background for Boost and Classic
Jun Pataleta [Fri, 27 Mar 2026 04:40:03 +0000 (12:40 +0800)]
MDL-88272 theme: Update the login background for Boost and Classic

Co-authored-by: Matt Porritt <matt.porritt@moodle.com>
4 weeks agoMDL-88272 theme_boost: Expose auth instructions to assistive tech
Jun Pataleta [Wed, 25 Mar 2026 06:04:24 +0000 (14:04 +0800)]
MDL-88272 theme_boost: Expose auth instructions to assistive tech

* Setting the `aside` and stats container hidden from assistive
technologies means that screen reader users will miss out on the
login instructions on the site. We must make sure to display them
so screen reader users do not miss out.
* In addition to that, not sure why we need to set a presentation
role to the div containing the stats. I think it's better for
assistive technology users to be able to perceive these as well,
just like sighted users can.

4 weeks agoMDL-88272 core: Add a semi-opaque backdrop for the login instructions
Jun Pataleta [Wed, 25 Mar 2026 06:02:21 +0000 (14:02 +0800)]
MDL-88272 core: Add a semi-opaque backdrop for the login instructions

This is to ensure sufficient contrast regardless of the background
image.

4 weeks agoMDL-88228 core: Rename "Suspended" users label at system level
Raquel Ortega [Wed, 25 Mar 2026 11:42:09 +0000 (12:42 +0100)]
MDL-88228 core: Rename "Suspended" users label at system level

5 weeks agoMDL-88092 core_h5p: Remove the h5plib_v127 plugin
Shamim Rezaie [Thu, 12 Mar 2026 22:48:22 +0000 (09:48 +1100)]
MDL-88092 core_h5p: Remove the h5plib_v127 plugin

The h5plib_v127 plugin can be removed because it has been replaced with
h5plib_v128, which is using the latest versions of the libraries.

5 weeks agoMDL-88092 core_h5p: Update editor lib with Moodle-specific adjustments
Shamim Rezaie [Thu, 12 Mar 2026 01:58:57 +0000 (12:58 +1100)]
MDL-88092 core_h5p: Update editor lib with Moodle-specific adjustments

5 weeks agoMDL-88092 core_h5p: Upgrade joubel/editor library to moodle-1.27.2
Shamim Rezaie [Wed, 11 Mar 2026 20:14:27 +0000 (07:14 +1100)]
MDL-88092 core_h5p: Upgrade joubel/editor library to moodle-1.27.2

This commit is upgrading the joubel/editor library to the one tagged as
moodle-1.27.2 (which interestingly has no difference to moodle-1.27.0).

5 weeks agoMDL-88092 core_h5p: Update core lib with Moodle-specific adjustments
Shamim Rezaie [Thu, 12 Mar 2026 21:37:24 +0000 (08:37 +1100)]
MDL-88092 core_h5p: Update core lib with Moodle-specific adjustments

5 weeks agoMDL-88092 core_h5p: Upgrade joubel/core library to v1.28.0
Shamim Rezaie [Thu, 12 Mar 2026 21:37:10 +0000 (08:37 +1100)]
MDL-88092 core_h5p: Upgrade joubel/core library to v1.28.0

This commit is upgrading the joubel/core library to the one
tagged as 1.28.0 (which also increases the coreApi minorVersion).
That's why the previous commit was duplicating the existing h5plib_v127.

5 weeks agoMDL-88092 h5plib: Create first version of h5plib_v128
Shamim Rezaie [Thu, 12 Mar 2026 20:44:56 +0000 (07:44 +1100)]
MDL-88092 h5plib: Create first version of h5plib_v128

AMOS BEGIN
 CPY [editor:a11ytitleshowlabel,h5plib_v127],[editor:a11ytitleshowlabel,h5plib_v128]
 CPY [editor:a11ytitlehidelabel,h5plib_v127],[editor:a11ytitlehidelabel,h5plib_v128]
 CPY [editor:atoz,h5plib_v127],[editor:atoz,h5plib_v128]
 CPY [editor:add,h5plib_v127],[editor:add,h5plib_v128]
 CPY [editor:addauthor,h5plib_v127],[editor:addauthor,h5plib_v128]
 CPY [editor:addentity,h5plib_v127],[editor:addentity,h5plib_v128]
 CPY [editor:addfile,h5plib_v127],[editor:addfile,h5plib_v128]
 CPY [editor:addnewchange,h5plib_v127],[editor:addnewchange,h5plib_v128]
 CPY [editor:addtitle,h5plib_v127],[editor:addtitle,h5plib_v128]
 CPY [editor:addvideodescription,h5plib_v127],[editor:addvideodescription,h5plib_v128]
 CPY [editor:avtablistlabel,h5plib_v127],[editor:avtablistlabel,h5plib_v128]
 CPY [editor:belowmin,h5plib_v127],[editor:belowmin,h5plib_v128]
 CPY [editor:cancel,h5plib_v127],[editor:cancel,h5plib_v128]
 CPY [editor:cancellabel,h5plib_v127],[editor:cancellabel,h5plib_v128]
 CPY [editor:changefile,h5plib_v127],[editor:changefile,h5plib_v128]
 CPY [editor:changelanguage,h5plib_v127],[editor:changelanguage,h5plib_v128]
 CPY [editor:changelibrary,h5plib_v127],[editor:changelibrary,h5plib_v128]
 CPY [editor:changelogdescription,h5plib_v127],[editor:changelogdescription,h5plib_v128]
 CPY [editor:close,h5plib_v127],[editor:close,h5plib_v128]
 CPY [editor:commonfields,h5plib_v127],[editor:commonfields,h5plib_v128]
 CPY [editor:commonfieldsdescription,h5plib_v127],[editor:commonfieldsdescription,h5plib_v128]
 CPY [editor:confirmchangelibrary,h5plib_v127],[editor:confirmchangelibrary,h5plib_v128]
 CPY [editor:confirmdeletechangelog,h5plib_v127],[editor:confirmdeletechangelog,h5plib_v128]
 CPY [editor:confirmimageremoval,h5plib_v127],[editor:confirmimageremoval,h5plib_v128]
 CPY [editor:confirmpastebuttontext,h5plib_v127],[editor:confirmpastebuttontext,h5plib_v128]
 CPY [editor:confirmpastecontent,h5plib_v127],[editor:confirmpastecontent,h5plib_v128]
 CPY [editor:confirmremoval,h5plib_v127],[editor:confirmremoval,h5plib_v128]
 CPY [editor:confirmremoveauthor,h5plib_v127],[editor:confirmremoveauthor,h5plib_v128]
 CPY [editor:contenttypebackbuttonlabel,h5plib_v127],[editor:contenttypebackbuttonlabel,h5plib_v128]
 CPY [editor:contenttypecacheoutdated,h5plib_v127],[editor:contenttypecacheoutdated,h5plib_v128]
 CPY [editor:contenttypecacheoutdateddesc,h5plib_v127],[editor:contenttypecacheoutdateddesc,h5plib_v128]
 CPY [editor:contenttypedemobuttonlabel,h5plib_v127],[editor:contenttypedemobuttonlabel,h5plib_v128]
 CPY [editor:contenttypedetailbuttonlabel,h5plib_v127],[editor:contenttypedetailbuttonlabel,h5plib_v128]
 CPY [editor:contenttypegetbuttonlabel,h5plib_v127],[editor:contenttypegetbuttonlabel,h5plib_v128]
 CPY [editor:contenttypeiconalttext,h5plib_v127],[editor:contenttypeiconalttext,h5plib_v128]
 CPY [editor:contenttypeinstallbuttonlabel,h5plib_v127],[editor:contenttypeinstallbuttonlabel,h5plib_v128]
 CPY [editor:contenttypeinstallerror,h5plib_v127],[editor:contenttypeinstallerror,h5plib_v128]
 CPY [editor:contenttypeinstallsuccess,h5plib_v127],[editor:contenttypeinstallsuccess,h5plib_v128]
 CPY [editor:contenttypeinstallingbuttonlabel,h5plib_v127],[editor:contenttypeinstallingbuttonlabel,h5plib_v128]
 CPY [editor:contenttypelicensepaneltitle,h5plib_v127],[editor:contenttypelicensepaneltitle,h5plib_v128]
 CPY [editor:contenttypenotinstalled,h5plib_v127],[editor:contenttypenotinstalled,h5plib_v128]
 CPY [editor:contenttypenotinstalleddesc,h5plib_v127],[editor:contenttypenotinstalleddesc,h5plib_v128]
 CPY [editor:contenttypeowner,h5plib_v127],[editor:contenttypeowner,h5plib_v128]
 CPY [editor:contenttyperestricted,h5plib_v127],[editor:contenttyperestricted,h5plib_v128]
 CPY [editor:contenttyperestricteddesc,h5plib_v127],[editor:contenttyperestricteddesc,h5plib_v128]
 CPY [editor:contenttypesearchfieldplaceholder,h5plib_v127],[editor:contenttypesearchfieldplaceholder,h5plib_v128]
 CPY [editor:contenttypesectionall,h5plib_v127],[editor:contenttypesectionall,h5plib_v128]
 CPY [editor:contenttypeunsupportedapiversioncontent,h5plib_v127],[editor:contenttypeunsupportedapiversioncontent,h5plib_v128]
 CPY [editor:contenttypeunsupportedapiversiontitle,h5plib_v127],[editor:contenttypeunsupportedapiversiontitle,h5plib_v128]
 CPY [editor:contenttypeupdateavailable,h5plib_v127],[editor:contenttypeupdateavailable,h5plib_v128]
 CPY [editor:contenttypeupdatebuttonlabel,h5plib_v127],[editor:contenttypeupdatebuttonlabel,h5plib_v128]
 CPY [editor:contenttypeupdatesuccess,h5plib_v127],[editor:contenttypeupdatesuccess,h5plib_v128]
 CPY [editor:contenttypeupdatingbuttonlabel,h5plib_v127],[editor:contenttypeupdatingbuttonlabel,h5plib_v128]
 CPY [editor:contenttypeusebuttonlabel,h5plib_v127],[editor:contenttypeusebuttonlabel,h5plib_v128]
 CPY [editor:contributetranslations,h5plib_v127],[editor:contributetranslations,h5plib_v128]
 CPY [editor:copiedbutton,h5plib_v127],[editor:copiedbutton,h5plib_v128]
 CPY [editor:copiedtoclipboard,h5plib_v127],[editor:copiedtoclipboard,h5plib_v128]
 CPY [editor:copybutton,h5plib_v127],[editor:copybutton,h5plib_v128]
 CPY [editor:copytoclipboard,h5plib_v127],[editor:copytoclipboard,h5plib_v128]
 CPY [editor:createcontenttablabel,h5plib_v127],[editor:createcontenttablabel,h5plib_v128]
 CPY [editor:currentmenuselected,h5plib_v127],[editor:currentmenuselected,h5plib_v128]
 CPY [editor:editcopyright,h5plib_v127],[editor:editcopyright,h5plib_v128]
 CPY [editor:editimage,h5plib_v127],[editor:editimage,h5plib_v128]
 CPY [editor:editmode,h5plib_v127],[editor:editmode,h5plib_v128]
 CPY [editor:enteraudiotitle,h5plib_v127],[editor:enteraudiotitle,h5plib_v128]
 CPY [editor:enteraudiourl,h5plib_v127],[editor:enteraudiourl,h5plib_v128]
 CPY [editor:enterfullscreenbuttonlabel,h5plib_v127],[editor:enterfullscreenbuttonlabel,h5plib_v128]
 CPY [editor:entervideotitle,h5plib_v127],[editor:entervideotitle,h5plib_v128]
 CPY [editor:entervideourl,h5plib_v127],[editor:entervideourl,h5plib_v128]
 CPY [editor:errorcalculatingmaxscore,h5plib_v127],[editor:errorcalculatingmaxscore,h5plib_v128]
 CPY [editor:errorcommunicatinghubcontent,h5plib_v127],[editor:errorcommunicatinghubcontent,h5plib_v128]
 CPY [editor:errorcommunicatinghubtitle,h5plib_v127],[editor:errorcommunicatinghubtitle,h5plib_v128]
 CPY [editor:errorheader,h5plib_v127],[editor:errorheader,h5plib_v128]
 CPY [editor:errornotsupported,h5plib_v127],[editor:errornotsupported,h5plib_v128]
 CPY [editor:errorparamsbroken,h5plib_v127],[editor:errorparamsbroken,h5plib_v128]
 CPY [editor:errortoohighversion,h5plib_v127],[editor:errortoohighversion,h5plib_v128]
 CPY [editor:example,h5plib_v127],[editor:example,h5plib_v128]
 CPY [editor:exceedsmax,h5plib_v127],[editor:exceedsmax,h5plib_v128]
 CPY [editor:exitfullscreenbuttonlabel,h5plib_v127],[editor:exitfullscreenbuttonlabel,h5plib_v128]
 CPY [editor:expandcollapse,h5plib_v127],[editor:expandcollapse,h5plib_v128]
 CPY [editor:filetolarge,h5plib_v127],[editor:filetolarge,h5plib_v128]
 CPY [editor:fillinthefieldsbelow,h5plib_v127],[editor:fillinthefieldsbelow,h5plib_v128]
 CPY [editor:gethelp,h5plib_v127],[editor:gethelp,h5plib_v128]
 CPY [editor:h5pfileuploadservererrorcontent,h5plib_v127],[editor:h5pfileuploadservererrorcontent,h5plib_v128]
 CPY [editor:h5pfileuploadservererrortitle,h5plib_v127],[editor:h5pfileuploadservererrortitle,h5plib_v128]
 CPY [editor:h5pfilevalidationfailedcontent,h5plib_v127],[editor:h5pfilevalidationfailedcontent,h5plib_v128]
 CPY [editor:h5pfilevalidationfailedtitle,h5plib_v127],[editor:h5pfilevalidationfailedtitle,h5plib_v128]
 CPY [editor:h5pfilewrongextensioncontent,h5plib_v127],[editor:h5pfilewrongextensioncontent,h5plib_v128]
 CPY [editor:h5pfilewrongextensiontitle,h5plib_v127],[editor:h5pfilewrongextensiontitle,h5plib_v128]
 CPY [editor:height,h5plib_v127],[editor:height,h5plib_v128]
 CPY [editor:hide,h5plib_v127],[editor:hide,h5plib_v128]
 CPY [editor:hideimportantinstructions,h5plib_v127],[editor:hideimportantinstructions,h5plib_v128]
 CPY [editor:hubpanellabel,h5plib_v127],[editor:hubpanellabel,h5plib_v128]
 CPY [editor:illegaldecimalnumber,h5plib_v127],[editor:illegaldecimalnumber,h5plib_v128]
 CPY [editor:imagelightboxprogress,h5plib_v127],[editor:imagelightboxprogress,h5plib_v128]
 CPY [editor:imagelightboxtitle,h5plib_v127],[editor:imagelightboxtitle,h5plib_v128]
 CPY [editor:importantinstructions,h5plib_v127],[editor:importantinstructions,h5plib_v128]
 CPY [editor:insert,h5plib_v127],[editor:insert,h5plib_v128]
 CPY [editor:invalidformat,h5plib_v127],[editor:invalidformat,h5plib_v128]
 CPY [editor:language,h5plib_v127],[editor:language,h5plib_v128]
 CPY [editor:librarymissing,h5plib_v127],[editor:librarymissing,h5plib_v128]
 CPY [editor:licensecandistribute,h5plib_v127],[editor:licensecandistribute,h5plib_v128]
 CPY [editor:licensecanholdliable,h5plib_v127],[editor:licensecanholdliable,h5plib_v128]
 CPY [editor:licensecanmodify,h5plib_v127],[editor:licensecanmodify,h5plib_v128]
 CPY [editor:licensecansublicense,h5plib_v127],[editor:licensecansublicense,h5plib_v128]
 CPY [editor:licensecanusecommercially,h5plib_v127],[editor:licensecanusecommercially,h5plib_v128]
 CPY [editor:licensecannotholdliable,h5plib_v127],[editor:licensecannotholdliable,h5plib_v128]
 CPY [editor:licensedescription,h5plib_v127],[editor:licensedescription,h5plib_v128]
 CPY [editor:licensefetchdetailsfailed,h5plib_v127],[editor:licensefetchdetailsfailed,h5plib_v128]
 CPY [editor:licensemodalsubtitle,h5plib_v127],[editor:licensemodalsubtitle,h5plib_v128]
 CPY [editor:licensemodaltitle,h5plib_v127],[editor:licensemodaltitle,h5plib_v128]
 CPY [editor:licensemustincludecopyright,h5plib_v127],[editor:licensemustincludecopyright,h5plib_v128]
 CPY [editor:licensemustincludelicense,h5plib_v127],[editor:licensemustincludelicense,h5plib_v128]
 CPY [editor:licenseunspecified,h5plib_v127],[editor:licenseunspecified,h5plib_v128]
 CPY [editor:listbelowmin,h5plib_v127],[editor:listbelowmin,h5plib_v128]
 CPY [editor:listexceedsmax,h5plib_v127],[editor:listexceedsmax,h5plib_v128]
 CPY [editor:listlabel,h5plib_v127],[editor:listlabel,h5plib_v128]
 CPY [editor:loading,h5plib_v127],[editor:loading,h5plib_v128]
 CPY [editor:loadingimageeditor,h5plib_v127],[editor:loadingimageeditor,h5plib_v128]
 CPY [editor:logthischange,h5plib_v127],[editor:logthischange,h5plib_v128]
 CPY [editor:loggedchanges,h5plib_v127],[editor:loggedchanges,h5plib_v128]
 CPY [editor:maxscoresemanticsmissing,h5plib_v127],[editor:maxscoresemanticsmissing,h5plib_v128]
 CPY [editor:metadata,h5plib_v127],[editor:metadata,h5plib_v128]
 CPY [editor:metadatasharingandlicensinginfo,h5plib_v127],[editor:metadatasharingandlicensinginfo,h5plib_v128]
 CPY [editor:missingproperty,h5plib_v127],[editor:missingproperty,h5plib_v128]
 CPY [editor:missingtranslation,h5plib_v127],[editor:missingtranslation,h5plib_v128]
 CPY [editor:newchangehasbeenlogged,h5plib_v127],[editor:newchangehasbeenlogged,h5plib_v128]
 CPY [editor:newestfirst,h5plib_v127],[editor:newestfirst,h5plib_v128]
 CPY [editor:nextimage,h5plib_v127],[editor:nextimage,h5plib_v128]
 CPY [editor:nochangeshavebeenlogged,h5plib_v127],[editor:nochangeshavebeenlogged,h5plib_v128]
 CPY [editor:nocontenttypesavailable,h5plib_v127],[editor:nocontenttypesavailable,h5plib_v128]
 CPY [editor:nocontenttypesavailabledesc,h5plib_v127],[editor:nocontenttypesavailabledesc,h5plib_v128]
 CPY [editor:nofollow,h5plib_v127],[editor:nofollow,h5plib_v128]
 CPY [editor:notimageordimensionsfield,h5plib_v127],[editor:notimageordimensionsfield,h5plib_v128]
 CPY [editor:numresults,h5plib_v127],[editor:numresults,h5plib_v128]
 CPY [editor:numberfield,h5plib_v127],[editor:numberfield,h5plib_v128]
 CPY [editor:ok,h5plib_v127],[editor:ok,h5plib_v128]
 CPY [editor:onlynumbers,h5plib_v127],[editor:onlynumbers,h5plib_v128]
 CPY [editor:or,h5plib_v127],[editor:or,h5plib_v128]
 CPY [editor:orderitemdown,h5plib_v127],[editor:orderitemdown,h5plib_v128]
 CPY [editor:orderitemup,h5plib_v127],[editor:orderitemup,h5plib_v128]
 CPY [editor:outofstep,h5plib_v127],[editor:outofstep,h5plib_v128]
 CPY [editor:pasteandreplacebutton,h5plib_v127],[editor:pasteandreplacebutton,h5plib_v128]
 CPY [editor:pasteandreplacefromclipboard,h5plib_v127],[editor:pasteandreplacefromclipboard,h5plib_v128]
 CPY [editor:pastebutton,h5plib_v127],[editor:pastebutton,h5plib_v128]
 CPY [editor:pastecontent,h5plib_v127],[editor:pastecontent,h5plib_v128]
 CPY [editor:pastecontentnotsupported,h5plib_v127],[editor:pastecontentnotsupported,h5plib_v128]
 CPY [editor:pastecontentrestricted,h5plib_v127],[editor:pastecontentrestricted,h5plib_v128]
 CPY [editor:pasteerror,h5plib_v127],[editor:pasteerror,h5plib_v128]
 CPY [editor:pastefromclipboard,h5plib_v127],[editor:pastefromclipboard,h5plib_v128]
 CPY [editor:pastenocontent,h5plib_v127],[editor:pastenocontent,h5plib_v128]
 CPY [editor:pastetoonew,h5plib_v127],[editor:pastetoonew,h5plib_v128]
 CPY [editor:pastetooold,h5plib_v127],[editor:pastetooold,h5plib_v128]
 CPY [editor:popularfirst,h5plib_v127],[editor:popularfirst,h5plib_v128]
 CPY [editor:previousimage,h5plib_v127],[editor:previousimage,h5plib_v128]
 CPY [editor:proceedbuttonlabel,h5plib_v127],[editor:proceedbuttonlabel,h5plib_v128]
 CPY [editor:readless,h5plib_v127],[editor:readless,h5plib_v128]
 CPY [editor:readmore,h5plib_v127],[editor:readmore,h5plib_v128]
 CPY [editor:recentlyusedfirst,h5plib_v127],[editor:recentlyusedfirst,h5plib_v128]
 CPY [editor:reloadbuttonlabel,h5plib_v127],[editor:reloadbuttonlabel,h5plib_v128]
 CPY [editor:removefile,h5plib_v127],[editor:removefile,h5plib_v128]
 CPY [editor:removeimage,h5plib_v127],[editor:removeimage,h5plib_v128]
 CPY [editor:removeitem,h5plib_v127],[editor:removeitem,h5plib_v128]
 CPY [editor:requiredproperty,h5plib_v127],[editor:requiredproperty,h5plib_v128]
 CPY [editor:resettooriginallabel,h5plib_v127],[editor:resettooriginallabel,h5plib_v128]
 CPY [editor:savelabel,h5plib_v127],[editor:savelabel,h5plib_v128]
 CPY [editor:savemetadata,h5plib_v127],[editor:savemetadata,h5plib_v128]
 CPY [editor:screenshots,h5plib_v127],[editor:screenshots,h5plib_v128]
 CPY [editor:scriptmissing,h5plib_v127],[editor:scriptmissing,h5plib_v128]
 CPY [editor:searchresults,h5plib_v127],[editor:searchresults,h5plib_v128]
 CPY [editor:selectfiletoupload,h5plib_v127],[editor:selectfiletoupload,h5plib_v128]
 CPY [editor:selectlibrary,h5plib_v127],[editor:selectlibrary,h5plib_v128]
 CPY [editor:semanticserror,h5plib_v127],[editor:semanticserror,h5plib_v128]
 CPY [editor:show,h5plib_v127],[editor:show,h5plib_v128]
 CPY [editor:showimportantinstructions,h5plib_v127],[editor:showimportantinstructions,h5plib_v128]
 CPY [editor:tabtitlebasicfileupload,h5plib_v127],[editor:tabtitlebasicfileupload,h5plib_v128]
 CPY [editor:tabtitleinputlinkurl,h5plib_v127],[editor:tabtitleinputlinkurl,h5plib_v128]
 CPY [editor:textfield,h5plib_v127],[editor:textfield,h5plib_v128]
 CPY [editor:thecontenttype,h5plib_v127],[editor:thecontenttype,h5plib_v128]
 CPY [editor:thiswillpotentially,h5plib_v127],[editor:thiswillpotentially,h5plib_v128]
 CPY [editor:title,h5plib_v127],[editor:title,h5plib_v128]
 CPY [editor:toolong,h5plib_v127],[editor:toolong,h5plib_v128]
 CPY [editor:tryagain,h5plib_v127],[editor:tryagain,h5plib_v128]
 CPY [editor:tutorial,h5plib_v127],[editor:tutorial,h5plib_v128]
 CPY [editor:unabletointerpreterror,h5plib_v127],[editor:unabletointerpreterror,h5plib_v128]
 CPY [editor:unabletointerpretsolution,h5plib_v127],[editor:unabletointerpretsolution,h5plib_v128]
 CPY [editor:unknownfieldpath,h5plib_v127],[editor:unknownfieldpath,h5plib_v128]
 CPY [editor:uploadinstructionstitle,h5plib_v127],[editor:uploadinstructionstitle,h5plib_v128]
 CPY [editor:uploadplaceholder,h5plib_v127],[editor:uploadplaceholder,h5plib_v128]
 CPY [editor:uploadsuccess,h5plib_v127],[editor:uploadsuccess,h5plib_v128]
 CPY [editor:uploadtablabel,h5plib_v127],[editor:uploadtablabel,h5plib_v128]
 CPY [editor:uploadvideotitle,h5plib_v127],[editor:uploadvideotitle,h5plib_v128]
 CPY [editor:uploading,h5plib_v127],[editor:uploading,h5plib_v128]
 CPY [editor:uploadingthrobber,h5plib_v127],[editor:uploadingthrobber,h5plib_v128]
 CPY [editor:usedforsearchingreportsandcopyrightinformation,h5plib_v127],[editor:usedforsearchingreportsandcopyrightinformation,h5plib_v128]
 CPY [editor:videoquality,h5plib_v127],[editor:videoquality,h5plib_v128]
 CPY [editor:videoqualitydefaultlabel,h5plib_v127],[editor:videoqualitydefaultlabel,h5plib_v128]
 CPY [editor:videoqualitydescription,h5plib_v127],[editor:videoqualitydescription,h5plib_v128]
 CPY [editor:warningchangebrowsingtoseeresults,h5plib_v127],[editor:warningchangebrowsingtoseeresults,h5plib_v128]
 CPY [editor:warningnocontenttypesinstalled,h5plib_v127],[editor:warningnocontenttypesinstalled,h5plib_v128]
 CPY [editor:warningupdateavailablebody,h5plib_v127],[editor:warningupdateavailablebody,h5plib_v128]
 CPY [editor:warningupdateavailabletitle,h5plib_v127],[editor:warningupdateavailabletitle,h5plib_v128]
 CPY [editor:width,h5plib_v127],[editor:width,h5plib_v128]
AMOS END

5 weeks agoAutomatically generated installer lang files
AMOS bot [Tue, 31 Mar 2026 00:07:59 +0000 (00:07 +0000)]
Automatically generated installer lang files

5 weeks agoMDL-88343 admin: Add accessibility Behat test for viewing suspended user
Jun Pataleta [Mon, 30 Mar 2026 12:45:38 +0000 (20:45 +0800)]
MDL-88343 admin: Add accessibility Behat test for viewing suspended user

5 weeks agoMDL-88343 user: Fix suspended user warning message heading level
Jun Pataleta [Mon, 30 Mar 2026 12:32:00 +0000 (20:32 +0800)]
MDL-88343 user: Fix suspended user warning message heading level

5 weeks agoMerge branch 'MDL-88285-main' of https://github.com/laurentdavid/moodle
Mihail Geshoski [Mon, 30 Mar 2026 08:15:03 +0000 (16:15 +0800)]
Merge branch 'MDL-88285-main' of https://github.com/laurentdavid/moodle

5 weeks agoMerge branch 'MDL-88086-main' of https://github.com/dpalou/moodle
Mihail Geshoski [Mon, 30 Mar 2026 01:56:38 +0000 (09:56 +0800)]
Merge branch 'MDL-88086-main' of https://github.com/dpalou/moodle

5 weeks agoMerge branch 'MDL-87509-main' of https://github.com/jfederico/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:52:09 +0000 (08:52 +0700)]
Merge branch 'MDL-87509-main' of https://github.com/jfederico/moodle

5 weeks agoMerge branch 'MDL-85544-main' of https://github.com/Jayce0808/moodle
Mihail Geshoski [Mon, 30 Mar 2026 01:49:59 +0000 (09:49 +0800)]
Merge branch 'MDL-85544-main' of https://github.com/Jayce0808/moodle

5 weeks agoMerge branch 'MDL-87471' of https://github.com/paulholden/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:48:30 +0000 (08:48 +0700)]
Merge branch 'MDL-87471' of https://github.com/paulholden/moodle

5 weeks agoMerge branch 'MDL-86298-main' of https://github.com/timhunt/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:44:16 +0000 (08:44 +0700)]
Merge branch 'MDL-86298-main' of https://github.com/timhunt/moodle

5 weeks agoMerge branch 'MDL-88309-main' of https://github.com/andimendunia/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:40:46 +0000 (08:40 +0700)]
Merge branch 'MDL-88309-main' of https://github.com/andimendunia/moodle

5 weeks agoMerge branch 'MDL-88039-main' of https://github.com/muhammadarnaldo/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:36:52 +0000 (08:36 +0700)]
Merge branch 'MDL-88039-main' of https://github.com/muhammadarnaldo/moodle

5 weeks agoMerge branch 'MDL-88190-main' of https://github.com/lucaboesch/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:34:15 +0000 (08:34 +0700)]
Merge branch 'MDL-88190-main' of https://github.com/lucaboesch/moodle

5 weeks agoMerge branch 'MDL-88290-main' of https://github.com/junpataleta/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:30:45 +0000 (08:30 +0700)]
Merge branch 'MDL-88290-main' of https://github.com/junpataleta/moodle

5 weeks agoMerge branch 'MDL-88012-main' of https://github.com/christianabila/moodle
Huong Nguyen [Mon, 30 Mar 2026 01:28:11 +0000 (08:28 +0700)]
Merge branch 'MDL-88012-main' of https://github.com/christianabila/moodle

5 weeks agoAutomatically generated installer lang files
AMOS bot [Sat, 28 Mar 2026 00:09:44 +0000 (00:09 +0000)]
Automatically generated installer lang files

5 weeks agoMDL-88190 theme_boost: Equal paddings around "Edit mode" toggle.
Luca Bösch [Wed, 11 Mar 2026 19:21:00 +0000 (20:21 +0100)]
MDL-88190 theme_boost: Equal paddings around "Edit mode" toggle.

5 weeks agoMoodle release 5.2beta v5.2.0-beta
Huong Nguyen [Fri, 27 Mar 2026 08:42:27 +0000 (15:42 +0700)]
Moodle release 5.2beta

5 weeks agoNOBUG: Add upgrade notes
Huong Nguyen [Fri, 27 Mar 2026 08:42:27 +0000 (15:42 +0700)]
NOBUG: Add upgrade notes

5 weeks agoMerge branch 'install_main' of https://git.in.moodle.com/amosbot/moodle-install
Huong Nguyen [Fri, 27 Mar 2026 08:41:59 +0000 (15:41 +0700)]
Merge branch 'install_main' of https://git.in.moodle.com/amosbot/moodle-install

5 weeks agoMDL-87632 availability_completion: Fix subsection previous activity
Andi Permana [Fri, 20 Mar 2026 11:17:29 +0000 (18:17 +0700)]
MDL-87632 availability_completion: Fix subsection previous activity

When delegated sections (subsections) use 'Previous activity with completion'
restrictions, the previous activity was incorrectly calculated from the global
course iteration context instead of the subsection's local context.

5 weeks agoMDL-88309 auth: fix loginwith string to use placeholder
Andi Permana [Thu, 26 Mar 2026 07:32:22 +0000 (14:32 +0700)]
MDL-88309 auth: fix loginwith string to use placeholder

5 weeks agoMDL-88086 quiz: Fix feedback returned by WS get_user_quiz_attempts
Dani Palou [Mon, 2 Mar 2026 07:31:01 +0000 (08:31 +0100)]
MDL-88086 quiz: Fix feedback returned by WS get_user_quiz_attempts

5 weeks agoMDL-88086 quiz: Abstract and reuse create/answer logic in unit tests
Dani Palou [Fri, 27 Feb 2026 11:16:01 +0000 (12:16 +0100)]
MDL-88086 quiz: Abstract and reuse create/answer logic in unit tests

5 weeks agoMDL-88086 quiz: Support overallfeedback in test generator
Dani Palou [Fri, 27 Feb 2026 11:07:58 +0000 (12:07 +0100)]
MDL-88086 quiz: Support overallfeedback in test generator

5 weeks agoMDL-88012 core: Force unique MessageID when sending bulk mail
Christian Abila [Thu, 19 Feb 2026 10:55:28 +0000 (11:55 +0100)]
MDL-88012 core: Force unique MessageID when sending bulk mail

5 weeks agoMerge branch 'MDL-81241-main' of https://github.com/junpataleta/moodle
Huong Nguyen [Thu, 26 Mar 2026 03:51:05 +0000 (10:51 +0700)]
Merge branch 'MDL-81241-main' of https://github.com/junpataleta/moodle

5 weeks agoMerge branch 'MDL-88270-main' of https://github.com/davewoloszyn/moodle
Mihail Geshoski [Thu, 26 Mar 2026 03:33:40 +0000 (11:33 +0800)]
Merge branch 'MDL-88270-main' of https://github.com/davewoloszyn/moodle