diff --git a/data/versions.json b/data/versions.json
index 14b8264472..80f36bc264 100644
--- a/data/versions.json
+++ b/data/versions.json
@@ -18,6 +18,22 @@
}
]
},
+ {
+ "name": "4.6",
+ "releaseDate": "20 December 2024",
+ "generalEndDate": "14 April 2025",
+ "securityEndDate": "14 April 2025",
+ "isLTS": false,
+ "isExperimental": true,
+ "releases": [
+ {
+ "name": "4.6.0",
+ "releaseDate": "20 December 2024",
+ "version": 2024102100,
+ "upgradePath": "https://docs.moodle.org/405/en/Upgrading"
+ }
+ ]
+ },
{
"name": "4.5",
"releaseDate": "7 October 2024",
diff --git a/general/releases.md b/general/releases.md
index e73172c344..0761590866 100644
--- a/general/releases.md
+++ b/general/releases.md
@@ -90,6 +90,19 @@ Minor releases dates differ slightly from release to release depending on the ti
:::
+## Moodle 4.6 (Experimental)
+
+Please note that Moodle 4.6 is an experimental version integrating MDL-71378 with the Moodle 4.5.x code, intended as a preview and testing release. It is not recommended that it be used as part of general production.
+
+
+
+:::info
+
+Bug fixes for general core bugs in 4.6.x will end 14 April 2025 (4 months).
+Bug fixes for security issues in 4.6.x will end 14 April 2025 (4 months).
+
+:::
+
## Moodle 4.5 (LTS)
diff --git a/general/releases/4.6.md b/general/releases/4.6.md
new file mode 100644
index 0000000000..911abcd27e
--- /dev/null
+++ b/general/releases/4.6.md
@@ -0,0 +1,23 @@
+---
+title: Moodle 4.6 (experimental)
+tags:
+ - Release notes
+ - Moodle 4.6
+sidebar_position: -406
+moodleVersion: 4.6.0
+description: The release notes for Moodle version 4.6.0.
+---
+
+import { ReleaseNoteIntro } from '@site/src/components/ReleaseInformation';
+
+Release date: 20 December 2024
+
+Please note that Moodle 4.6 is an experimental version integrating [MDL-71378](https://tracker.moodle.org/browse/MDL-71378) with the Moodle 4.5.x code, intended as a preview and testing release. It is not recommended that it be used as part of general production.
+
+For a list of fixes from previous releases please see the latest 4.5.x release notes.
+
+If you are upgrading from a previous version, please see [Upgrading](https://docs.moodle.org/en/Upgrading) in the user docs.
+
+## Server and client requirements
+
+Please see the [Moodle 4.5](https://moodledev.io/general/releases/4.5) server requirements, database requirements, and client requirements for details.
diff --git a/sidebars/releaseNotes.js b/sidebars/releaseNotes.js
index 8a665a1532..bb14434f77 100644
--- a/sidebars/releaseNotes.js
+++ b/sidebars/releaseNotes.js
@@ -66,6 +66,10 @@ module.exports = function getReleaseNotes() {
}
}
+ if (versionData.isExperimental) {
+ return;
+ }
+
const entry = getReleaseEntry(versionData);
if (existsSync(path.resolve(__dirname, '..', 'general', 'releases', versionData.name))) {
entry.items.push({
diff --git a/src/theme/UnsupportedVersionBanner/index.js b/src/theme/UnsupportedVersionBanner/index.js
index 94b4104791..4a46ec6d8c 100644
--- a/src/theme/UnsupportedVersionBanner/index.js
+++ b/src/theme/UnsupportedVersionBanner/index.js
@@ -141,9 +141,37 @@ function SecuritySupportExpiredWarning({ versionData }) {
);
}
+function ExperimentalWarning() {
+ return (
+
+ }
+ title="Experimental release"
+ >
+
+
+ This version of Moodle is an experimental release and not intended for general production systems.
+
+
+
+ );
+}
+
function VersionedSupportWarning({ versionData, moodleVersion }) {
const releaseStatus = getReleaseStatus(versionData, moodleVersion);
+ if (versionData.isExperimental) {
+ // Experimental version.
+ return (
+
+ );
+ }
+
if (releaseStatus === 'current') {
// Still in general support.
return null;
diff --git a/src/utils/SupportedReleases.ts b/src/utils/SupportedReleases.ts
index 3b1a691494..b8592c4556 100644
--- a/src/utils/SupportedReleases.ts
+++ b/src/utils/SupportedReleases.ts
@@ -37,12 +37,16 @@ export interface majorVersionData {
securityEndDate: string,
extendedSecurityEndDate?: string,
isLTS: boolean,
+ isExperimental: boolean,
releases?: Array
}
export const isSupported = (versionData: majorVersionData): boolean => {
if (versionData.extendedSecurityEndDate) {
return (new Date(versionData.extendedSecurityEndDate)) > today;
+ } else if (versionData.isExperimental) {
+ // Do not display experimental releases in the version support info.
+ return false;
}
return (new Date(versionData.securityEndDate)) > today;
diff --git a/static/schema/versions.json b/static/schema/versions.json
index 9d056700f5..bf7a4889f3 100644
--- a/static/schema/versions.json
+++ b/static/schema/versions.json
@@ -39,6 +39,9 @@
"isLTS": {
"type": "boolean"
},
+ "isExperimental": {
+ "type": "boolean"
+ },
"releases": {
"type": "array",
"items": {