Jun Pataleta [Wed, 27 May 2026 07:56:20 +0000 (15:56 +0800)]
Merge branch 'MDL-88242-405' of https://github.com/paulholden/moodle into MOODLE_405_STABLE
Shamim Rezaie [Mon, 25 May 2026 10:12:04 +0000 (20:12 +1000)]
weekly release 4.5.11+
AMOS bot [Sat, 23 May 2026 00:07:41 +0000 (00:07 +0000)]
Automatically generated installer lang files
AMOS bot [Wed, 20 May 2026 00:07:52 +0000 (00:07 +0000)]
Automatically generated installer lang files
Paul Holden [Tue, 19 May 2026 09:39:12 +0000 (10:39 +0100)]
MDL-88242 output: add ARIA labelling to search input container.
Huong Nguyen [Tue, 19 May 2026 03:38:37 +0000 (10:38 +0700)]
weekly release 4.5.11+
Jake Dallimore [Mon, 18 May 2026 01:42:15 +0000 (09:42 +0800)]
Merge branch 'MDL-87701-405' of https://github.com/rxdelacruz/moodle into MOODLE_405_STABLE
Jake Dallimore [Fri, 15 May 2026 01:23:20 +0000 (09:23 +0800)]
Merge branch 'MDL-88518-405-h5p-hub-registration' of https://github.com/moodiycloud/moodle into MOODLE_405_STABLE
rxdelacruz [Fri, 8 May 2026 07:40:28 +0000 (15:40 +0800)]
MDL-87701 core: update calendar events when overrides change
Ensures assign and lesson override creation/update triggers calendar event
updates so user and group deadlines remain in sync.
rxdelacruz [Fri, 8 May 2026 05:43:23 +0000 (13:43 +0800)]
MDL-87701 behat: add override generators and replace manual steps
Adds user and group override support to assign and lesson Behat generators.
Refactors existing scenarios to use data generators instead of manual UI steps,
reducing @javascript usage and improving execution time.
Jai Gupta [Sat, 25 Apr 2026 14:43:55 +0000 (20:13 +0530)]
MDL-88518 h5p: Register sites with the H5P Hub using POST
Shamim Rezaie [Fri, 1 May 2026 07:23:47 +0000 (17:23 +1000)]
weekly release 4.5.11+
Huong Nguyen [Thu, 30 Apr 2026 04:31:48 +0000 (11:31 +0700)]
Merge branch 'm45-83526' of https://github.com/danmarsden/moodle into MOODLE_405_STABLE
Huong Nguyen [Mon, 27 Apr 2026 02:40:59 +0000 (09:40 +0700)]
weekly release 4.5.11+
Huong Nguyen [Mon, 27 Apr 2026 02:40:48 +0000 (09:40 +0700)]
Merge branch 'install_405_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_405_STABLE
Huong Nguyen [Tue, 21 Apr 2026 01:53:55 +0000 (08:53 +0700)]
Merge branch 'MDL-88489-405' of https://github.com/andimendunia/moodle into MOODLE_405_STABLE
AMOS bot [Tue, 21 Apr 2026 00:09:20 +0000 (00:09 +0000)]
Automatically generated installer lang files
Andi Permana [Mon, 20 Apr 2026 09:30:02 +0000 (16:30 +0700)]
MDL-88489 core: remove check_lang_sort.sh script
AMOS bot [Sun, 19 Apr 2026 00:07:47 +0000 (00:07 +0000)]
Automatically generated installer lang files
AMOS bot [Sat, 18 Apr 2026 00:07:38 +0000 (00:07 +0000)]
Automatically generated installer lang files
Huong Nguyen [Thu, 16 Apr 2026 02:57:09 +0000 (09:57 +0700)]
Moodle release 4.5.11
Huong Nguyen [Thu, 16 Apr 2026 02:57:08 +0000 (09:57 +0700)]
NOBUG: Add upgrade notes
Mihail Geshoski [Wed, 15 Apr 2026 10:49:09 +0000 (18:49 +0800)]
weekly release 4.5.10+
Mihail Geshoski [Wed, 15 Apr 2026 10:49:09 +0000 (18:49 +0800)]
NOBUG: Add upgrade notes
Mihail Geshoski [Wed, 15 Apr 2026 10:49:01 +0000 (18:49 +0800)]
NOBUG: Fixed file access permissions
Mihail Geshoski [Wed, 15 Apr 2026 03:15:45 +0000 (11:15 +0800)]
Merge branch 'MDL-85352-405' of https://github.com/HuongNV13/moodle into MOODLE_405_STABLE
Huong Nguyen [Wed, 8 Apr 2026 03:03:23 +0000 (10:03 +0700)]
MDL-87760 message: Improve the validation
`can_send_message_to_conversation()` has been updated
to improve the validation of the sender and the recipient
Michael Hawkins [Mon, 13 Apr 2026 07:40:38 +0000 (15:40 +0800)]
MDL-88423 repository: Filename in prepared file path should be a name only
Huong Nguyen [Tue, 7 Apr 2026 04:31:57 +0000 (11:31 +0700)]
MDL-88381 library: Bump PHPUnit to 9.6.34
Generated with PHP 8.1, following the instructions at:
https://moodledev.io/general/development/tools/composer
jfedericobn [Thu, 9 Apr 2026 20:24:28 +0000 (20:24 +0000)]
MDL-86165 mod_bigbluebuttonbn: added logging for recording events
yusufwib01 [Tue, 24 Mar 2026 09:48:10 +0000 (16:48 +0700)]
MDL-88138 auth_db: drop sybasequoting setting
Huong Nguyen [Tue, 14 Apr 2026 06:56:18 +0000 (13:56 +0700)]
MDL-85352 aiprovider_openai: Switch to b64_json format
Previously, the OpenAI image generation processor sent a fixed
response_format=url and downloaded the generated image via a second
HTTP request. This approach does not work for newer models such as
gpt-image-1.5, which always return base64-encoded image data and use
output_format instead of response_format.
Changes:
- Update process_generate_image to calculate size and quality
base on model, conditionally set response_format and
output_format based on what the model reports, and decode
the returned b64_json directly into a local file instead
of downloading from a URL.
Dan Marsden [Tue, 17 Mar 2026 01:56:48 +0000 (14:56 +1300)]
MDL-83526 core: Improve SameSite handling.
Vincent Schneider [Wed, 4 Mar 2026 15:33:12 +0000 (16:33 +0100)]
MDL-84495 MNet: Improve authorization check and mitigate CSRF risk
Andi Permana [Wed, 4 Feb 2026 07:59:31 +0000 (14:59 +0700)]
MDL-87598 libraries: add S3 key-commitment validation
Shamim Rezaie [Fri, 10 Apr 2026 07:11:39 +0000 (17:11 +1000)]
weekly release 4.5.10+
Huong Nguyen [Thu, 9 Apr 2026 03:57:01 +0000 (10:57 +0700)]
Merge branch 'MDL-88390-405' of https://github.com/paulholden/moodle into MOODLE_405_STABLE
Huong Nguyen [Thu, 9 Apr 2026 01:27:08 +0000 (08:27 +0700)]
Merge branch 'MDL-88145-405' of https://github.com/mickhawkins/moodle into MOODLE_405_STABLE
Michael Hawkins [Mon, 10 Nov 2025 11:30:17 +0000 (19:30 +0800)]
MDL-88145 core: Update deprecated function in security helper unit test
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.
Paul Holden [Tue, 7 Apr 2026 19:11:45 +0000 (20:11 +0100)]
MDL-88390 repository: explicit string cast of file source data.
Mihail Geshoski [Tue, 7 Apr 2026 07:22:21 +0000 (15:22 +0800)]
Merge branch 'MDL-77649-405' of https://github.com/junpataleta/moodle into MOODLE_405_STABLE
Huong Nguyen [Fri, 3 Apr 2026 02:24:12 +0000 (09:24 +0700)]
weekly release 4.5.10+
Huong Nguyen [Fri, 3 Apr 2026 02:23:50 +0000 (09:23 +0700)]
NOBUG: Fixed SVG browser compatibility
Huong Nguyen [Fri, 3 Apr 2026 02:23:45 +0000 (09:23 +0700)]
Merge branch 'install_405_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_405_STABLE
AMOS bot [Fri, 3 Apr 2026 00:07:40 +0000 (00:07 +0000)]
Automatically generated installer lang files
Safat [Wed, 1 Apr 2026 11:59:27 +0000 (22:59 +1100)]
MDL-88092 core_h5p: Fix version conflict
AMOS bot [Thu, 2 Apr 2026 00:08:03 +0000 (00:08 +0000)]
Automatically generated installer lang files
Safat [Wed, 1 Apr 2026 11:15:14 +0000 (22:15 +1100)]
Merge branch 'MDL-88092-405' of https://github.com/rezaies/moodle into MOODLE_405_STABLE
Jun Pataleta [Thu, 15 Jan 2026 13:00:29 +0000 (21:00 +0800)]
MDL-77649 glossary: Add top spacing for fullsearch checkbox
This is to meet WCAG 2.2 AA Target size requirements found by
accessibility Behat tests.
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.
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.
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
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.
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.
Jun Pataleta [Tue, 23 Dec 2025 01:50:05 +0000 (09:50 +0800)]
MDL-77649 glossary: Render category headers without using layout tables
Shamim Rezaie [Mon, 16 Mar 2026 05:33:08 +0000 (16:33 +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.
Shamim Rezaie [Mon, 16 Mar 2026 05:27:59 +0000 (16:27 +1100)]
MDL-88092 core_h5p: Update editor lib with Moodle-specific adjustments
Shamim Rezaie [Mon, 16 Mar 2026 05:18:39 +0000 (16:18 +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).
Shamim Rezaie [Mon, 16 Mar 2026 05:09:25 +0000 (16:09 +1100)]
MDL-88092 core_h5p: Update core lib with Moodle-specific adjustments
Shamim Rezaie [Mon, 16 Mar 2026 04:44:48 +0000 (15:44 +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.
Shamim Rezaie [Mon, 16 Mar 2026 04:29:04 +0000 (15:29 +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
AMOS bot [Wed, 1 Apr 2026 00:07:42 +0000 (00:07 +0000)]
Automatically generated installer lang files
AMOS bot [Tue, 31 Mar 2026 00:07:42 +0000 (00:07 +0000)]
Automatically generated installer lang files
Huong Nguyen [Fri, 27 Mar 2026 08:41:10 +0000 (15:41 +0700)]
weekly release 4.5.10+
Huong Nguyen [Fri, 27 Mar 2026 08:40:57 +0000 (15:40 +0700)]
Merge branch 'install_405_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_405_STABLE
Andi Permana [Mon, 9 Mar 2026 04:12:06 +0000 (11:12 +0700)]
MDL-87548 repository_wikimedia: Handle HTTP 429 rate limiting
Huong Nguyen [Thu, 26 Mar 2026 03:51:27 +0000 (10:51 +0700)]
Merge branch 'MDL-81241-405' of https://github.com/junpataleta/moodle into MOODLE_405_STABLE
Huong Nguyen [Thu, 26 Mar 2026 00:49:41 +0000 (07:49 +0700)]
Merge branch 'MDL-88279-405' of https://github.com/meirzamoodle/moodle into MOODLE_405_STABLE
AMOS bot [Thu, 26 Mar 2026 00:07:41 +0000 (00:07 +0000)]
Automatically generated installer lang files
Huong Nguyen [Wed, 25 Mar 2026 07:30:16 +0000 (14:30 +0700)]
Merge branch 'MDL-85451-405' of https://github.com/junpataleta/moodle into MOODLE_405_STABLE
meirzamoodle [Tue, 24 Mar 2026 07:39:44 +0000 (14:39 +0700)]
MDL-88279 core_session: fix cluster test retry count assertion
Update session_redis_cluster_test to expect 3 connection attempts
instead of 5, matching the $maxretries default value in redis.php.
AMOS bot [Sat, 21 Mar 2026 00:07:44 +0000 (00:07 +0000)]
Automatically generated installer lang files
Mihail Geshoski [Fri, 20 Mar 2026 07:35:57 +0000 (15:35 +0800)]
Merge branch 'MDL-88122-navbar_empty-breadcrumb-M4.5' of https://github.com/stopfstedt/moodle into MOODLE_405_STABLE
Shamim Rezaie [Fri, 20 Mar 2026 04:32:43 +0000 (15:32 +1100)]
weekly release 4.5.10+
Shamim Rezaie [Fri, 20 Mar 2026 04:32:43 +0000 (15:32 +1100)]
NOBUG: Add upgrade notes
Shamim Rezaie [Fri, 20 Mar 2026 04:32:31 +0000 (15:32 +1100)]
Merge branch 'install_405_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_405_STABLE
Jun Pataleta [Wed, 18 Mar 2026 09:41:19 +0000 (17:41 +0800)]
MDL-81241 theme_boost: Accessibility test for the footer region links
Jun Pataleta [Wed, 18 Mar 2026 09:37:57 +0000 (17:37 +0800)]
MDL-81241 theme_boost: Ensure footer links have sufficient spacing
Safat [Wed, 18 Mar 2026 13:33:17 +0000 (00:33 +1100)]
MDL-87959 tool_installaddon: Fix behats for activity chooser footer
Mihail Geshoski [Thu, 19 Mar 2026 01:50:33 +0000 (09:50 +0800)]
Merge branch 'MDL-87810-405' of https://github.com/junpataleta/moodle into MOODLE_405_STABLE
Ilya Tregubov [Wed, 18 Mar 2026 13:03:02 +0000 (14:03 +0100)]
Merge branch 'MDL-75067-405' of https://github.com/paulholden/moodle into MOODLE_405_STABLE
Jun Pataleta [Tue, 17 Mar 2026 15:47:00 +0000 (23:47 +0800)]
MDL-85451 block_timeline: Add accessibility Behat test coverage
Jun Pataleta [Tue, 17 Mar 2026 15:46:39 +0000 (23:46 +0800)]
MDL-85451 block_timeline: Group the due date filter options
To ensure that the filter options for the day filter menu matches
the menu pattern and pass accessibility checks, we need to:
* Group the due date filter options, labelled by the "Due date"
"heading".
* Set the "Due date" heading with a presentation role to prevent
assistive technologies from announcing it when the user goes through
the menu options.
Jun Pataleta [Tue, 17 Mar 2026 15:10:15 +0000 (23:10 +0800)]
MDL-85451 block_timeline: Fix heading levels
Jake Dallimore [Mon, 16 Mar 2026 01:43:35 +0000 (09:43 +0800)]
Merge branch 'MDL-83096-405' of https://github.com/jason-platts/moodle into MOODLE_405_STABLE
Paul Holden [Fri, 13 Mar 2026 12:36:27 +0000 (12:36 +0000)]
MDL-88211 backup: remove redundant usage of task manager from tests.
The asynchronouse backup/restore tests are only concerned with testing
the implementation of the accompanying task class directly. When they
try to do so at a distance via the task manager API they introduce
random failures by failing to account for different queued tasks that
come from other components (e.g. Workplace).
Daniel Poggenpohl [Wed, 18 Jun 2025 15:51:56 +0000 (17:51 +0200)]
MDL-83096 mod_lti: Register view completion when launching in new window
Huong Nguyen [Fri, 13 Mar 2026 07:06:05 +0000 (14:06 +0700)]
Merge branch 'MDL-87959-405' of https://github.com/safatshahin/moodle into MOODLE_405_STABLE
Safat [Thu, 19 Feb 2026 03:18:19 +0000 (14:18 +1100)]
MDL-87959 admin: Add marketplace availability in notifications
Safat [Thu, 19 Feb 2026 03:17:40 +0000 (14:17 +1100)]
MDL-87959 tool_installaddon: Add support for marketplace
Mihail Geshoski [Fri, 13 Mar 2026 01:54:41 +0000 (09:54 +0800)]
Merge branch 'MDL-81608-405-2' of https://github.com/junpataleta/moodle into MOODLE_405_STABLE
Huong Nguyen [Fri, 13 Mar 2026 01:39:25 +0000 (08:39 +0700)]
Merge branch 'MDL-87100-405' of https://github.com/paulholden/moodle into MOODLE_405_STABLE
Safat [Thu, 12 Mar 2026 04:19:06 +0000 (15:19 +1100)]
Merge branch 'MDL-87708-405' of https://github.com/HuongNV13/moodle into MOODLE_405_STABLE
Huong Nguyen [Thu, 12 Mar 2026 03:47:50 +0000 (10:47 +0700)]
MDL-87708 tool_moodlenet: Remove post install task
Huong Nguyen [Thu, 12 Mar 2026 02:24:22 +0000 (09:24 +0700)]
MDL-87708 admin: Improve MoodleNet removal warnings message
Andi Permana [Fri, 6 Feb 2026 07:32:42 +0000 (14:32 +0700)]
MDL-87708 tool_moodlenet: Clean up moodle.net configs in stable
Part of MDL-87351
- Discourage tool_moodlenet unless pointing to custom installation
- Clear activity chooser footer if set to MoodleNet
- Cleanup happens for: moodle.net URL, www.moodle.net, or empty config
- Preserves custom/local MoodleNet installations
Stefan Topfstedt [Thu, 12 Mar 2026 00:41:30 +0000 (17:41 -0700)]
MDL-88122 navigation: omit empty breadcrumb container in output.
Mihail Geshoski [Wed, 11 Mar 2026 03:56:07 +0000 (11:56 +0800)]
Merge branch 'MDL-87955-405-2' of https://github.com/junpataleta/moodle into MOODLE_405_STABLE
AMOS bot [Wed, 11 Mar 2026 00:09:24 +0000 (00:09 +0000)]
Automatically generated installer lang files