Jake Dallimore [Fri, 6 Mar 2026 04:09:59 +0000 (12:09 +0800)]
weekly release 5.2dev
Jake Dallimore [Fri, 6 Mar 2026 04:09:59 +0000 (12:09 +0800)]
NOBUG: Add upgrade notes
Jake Dallimore [Fri, 6 Mar 2026 04:09:45 +0000 (12:09 +0800)]
Merge branch 'install_main' of https://git.in.moodle.com/amosbot/moodle-install
Jake Dallimore [Fri, 6 Mar 2026 03:40:23 +0000 (11:40 +0800)]
MDL-87264 core_question: fix upgrade notes missing type declaration
Adrian Greeve [Thu, 5 Mar 2026 04:59:47 +0000 (12:59 +0800)]
Merge branch 'MDL-87922-main' of https://github.com/meirzamoodle/moodle
Andrew Nicols [Thu, 5 Mar 2026 04:04:22 +0000 (12:04 +0800)]
Merge branch 'MDL-87759-main-new' of https://github.com/meirzamoodle/moodle
Jake Dallimore [Thu, 5 Mar 2026 03:55:18 +0000 (11:55 +0800)]
Merge branch 'MDL-86154_main' of https://github.com/marxjohnson/moodle
Adrian Greeve [Thu, 5 Mar 2026 03:19:01 +0000 (11:19 +0800)]
Merge branch 'MDL-87045-main-minimal' of https://github.com/andrewnicols/moodle
Adrian Greeve [Thu, 5 Mar 2026 02:46:57 +0000 (10:46 +0800)]
Merge branch 'MDL-88009-main' of https://github.com/andrewnicols/moodle
Adrian Greeve [Thu, 5 Mar 2026 02:27:09 +0000 (10:27 +0800)]
Merge branch 'MDL-87950-main' of https://github.com/andrewnicols/moodle
Huong Nguyen [Thu, 5 Mar 2026 02:22:36 +0000 (09:22 +0700)]
Merge branch 'MDL-87657' of https://github.com/paulholden/moodle
Huong Nguyen [Thu, 5 Mar 2026 02:18:45 +0000 (09:18 +0700)]
Merge branch 'MDL-87553-main' of https://github.com/muhammadarnaldo/moodle
Mihail Geshoski [Thu, 5 Mar 2026 01:53:12 +0000 (09:53 +0800)]
Merge branch 'MDL-87264_main' of https://github.com/marxjohnson/moodle
Mihail Geshoski [Thu, 5 Mar 2026 01:43:48 +0000 (09:43 +0800)]
Merge branch 'MDL-86691_main' of https://github.com/marxjohnson/moodle
Sara Arjona [Wed, 4 Mar 2026 13:53:07 +0000 (14:53 +0100)]
Merge branch 'MDL-87571-main' of https://github.com/aanabit/moodle
Jun Pataleta [Wed, 4 Mar 2026 13:26:39 +0000 (21:26 +0800)]
Merge branch 'MDL-87949' of https://github.com/paulholden/moodle
Ilya Tregubov [Wed, 4 Mar 2026 11:55:01 +0000 (12:55 +0100)]
Merge branch 'MDL-79574' of https://github.com/paulholden/moodle
Sara Arjona [Wed, 4 Mar 2026 11:15:12 +0000 (12:15 +0100)]
Merge branch 'MDL-88003-main' of https://github.com/sarjona/moodle
Sara Arjona [Wed, 4 Mar 2026 09:38:43 +0000 (10:38 +0100)]
Merge branch 'MDL-87451' of https://github.com/paulholden/moodle
Sara Arjona [Wed, 4 Mar 2026 09:36:41 +0000 (10:36 +0100)]
Merge branch 'MDL-87981-main' of https://github.com/laurentdavid/moodle
Sara Arjona [Wed, 4 Mar 2026 07:29:18 +0000 (08:29 +0100)]
Merge branch 'MDL-87979-main' of https://github.com/laurentdavid/moodle
Huong Nguyen [Wed, 4 Mar 2026 02:29:27 +0000 (09:29 +0700)]
Merge branch 'MDL-78476' of https://github.com/paulholden/moodle
meirzamoodle [Wed, 4 Mar 2026 02:45:40 +0000 (09:45 +0700)]
MDL-87759 js: integrate esbuild with Grunt for React
Introduces the tooling to discover, build, and watch TypeScript/TSX React
source files across Moodle core and plugin components.
Build pipeline (.esbuild/)
- build.mjs: entry point; generates TS path aliases then runs all component
builds; accepts --dev flag for development mode; throws on build failure
- generate-aliases.mjs: scans component metadata to produce
tsconfig.aliases.json (@moodle/lms/<component>/* paths); skips rewrite
when content is unchanged
- plugin/plugincomponents.mjs: single source of all React build logic:
- buildPluginComponents(isDev): discovers and builds all components in
parallel via a single glob (public/**/js/react/src/**/*.{ts,tsx});
throws on any failure
- watchComponents(isDev, onRebuild): starts esbuild in native watch mode
using a shared incremental context; calls onRebuild with rebuilt source
paths after each change so callers can run follow-up tasks (e.g. lint)
- createBuildConfig(isDev): shared esbuild options (bundle, esm,
jsx:automatic, minify/sourcemap/jsxDev per mode); define derived
internally from isDev
- resolveComponentPaths(entry): exported src->build path mapping so both
full and single-file builders use the same resolution logic
- React, ReactDOM and @moodle/lms/* marked external via inline array;
no custom esbuild plugin needed
Grunt integration (.grunt/)
- tasks/react.js: single react task with three modes:
- grunt react — production build
- grunt react:dev — development build (sourcemaps, no minification)
- grunt react:watch — esbuild native watch; uses esbuild's own
context.watch() rather than grunt-contrib-watch so the incremental
build graph is preserved across rebuilds; ESLint runs in check-only
mode after each change to avoid re-triggering esbuild
- tasks/javascript.js: loads react.js and includes react in the js task
chain alongside amd and yui; all JS pipeline orchestration in one place
- tasks/startup.js: includes js/react/src/** in the startup file glob
- tasks/eslint.js: adds react ESLint target (fix: true) for source linting
- components.js: adds getReactTsSrcGlobList() for watch file patterns
- Gruntfile.js: exposes reactSrc glob and inReact flag in moodleEnv;
react task is not loaded directly — javascript.js owns that
Config / deps
- tsconfig.json: base TypeScript config; extends tsconfig.aliases.json
- tsconfig.aliases.json: initial generated @moodle/lms/* path mappings
- .eslintrc: adds react ESLint overrides for TypeScript/TSX files
- package.json: adds esbuild and @typescript-eslint/parser
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>
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.
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
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
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
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.