Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
70 changes: 70 additions & 0 deletions release-notes/v14.5.3.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
id: v14.5.3
title: Version 14.5.3 Release Notes
image: "img/release-note-link-preview.png"
---

import Accordion from '@site/src/components/Accordion/index.js';
import dataAccordion from '@site/src/config/release-notes/release-note-v14-5-3.json';

_March 30th, 2026_

:::info

Mia-Platform Console v14.5.3 is **now in Preview** and will be generally available on April 02nd.

Console SaaS users can try out v14.5.3 latest improvements in Preview! Open a Service Request to ask for the creation of a sandbox Company in case you do not have access to any Company.

For self-hosted installations, please read the [following guidelines](#how-to-update-your-console).
:::

<Accordion data={dataAccordion} />

## How to update your Console

For self-hosted installations, please head to the [self hosted upgrade guide](/docs/infrastructure/self-hosted/installation-chart/how-to-upgrade) or contact your Mia-Platform referent and upgrade to _Console Helm Chart_ `v15.0.11-beta.0`.

### Bill of materials

| Image repository | Version |
| ----------------------------------------------------------------------- | :------: |
| docker.io/envoyproxy/ratelimit | 19f2079f |
| nexus.mia-platform.eu/api-portal/website | 2.2.0 |
| nexus.mia-platform.eu/back-kit/mfe-toolkit-on-prem | 1.3.13 |
| nexus.mia-platform.eu/backoffice/login-site | 7.2.3 |
| nexus.mia-platform.eu/console/aggregated-website | 1.5.61 |
| nexus.mia-platform.eu/console/api-gateway | 0.2.9 |
| nexus.mia-platform.eu/console/backend | 33.0.1 |
| nexus.mia-platform.eu/console/catalog-service | 1.7.2 |
| nexus.mia-platform.eu/console/deploy-service | 8.2.2 |
| nexus.mia-platform.eu/console/environments-variables | 3.6.1 |
| nexus.mia-platform.eu/console/events-manager | 1.5.0 |
| nexus.mia-platform.eu/console/extensibility-manager | 2.1.0 |
| nexus.mia-platform.eu/console/favorites-service | 2.3.1 |
| nexus.mia-platform.eu/console/feature-toggle-service | 1.3.7 |
| nexus.mia-platform.eu/console/kubernetes-service | 8.4.6 |
| nexus.mia-platform.eu/console/license-manager | 3.0.3 |
| nexus.mia-platform.eu/console/license-metrics-generator | 6.0.6 |
| nexus.mia-platform.eu/console/mcp-server | 1.2.1 |
| nexus.mia-platform.eu/console/mia-assistant | 1.3.8 |
| nexus.mia-platform.eu/console/mia-craft-bff | 1.2.5 |
| nexus.mia-platform.eu/console/notification-provider | 2.2.5 |
| nexus.mia-platform.eu/console/project-service | 2.1.0 |
| nexus.mia-platform.eu/console/rbac-manager-bff | 2.1.2 |
| nexus.mia-platform.eu/console/scripts/bindings-cleaner | 1.2.2 |
| nexus.mia-platform.eu/console/scripts/configuration-history-cleaner | 0.4.1 |
| nexus.mia-platform.eu/console/scripts/marketplace-sync | 10.10.1 |
| nexus.mia-platform.eu/console/scripts/mia-assistant-embeddings-importer | latest |
| nexus.mia-platform.eu/console/scripts/software-catalog-sync | 0.7.20 |
| nexus.mia-platform.eu/console/scripts/version-upgrader | 11.1.5 |
| nexus.mia-platform.eu/console/tenant-overview | 4.1.0 |
| nexus.mia-platform.eu/core/authentication-service | 3.13.1 |
| nexus.mia-platform.eu/core/authorization-service | 2.4.3 |
| nexus.mia-platform.eu/core/client-credentials | 3.4.1 |
| nexus.mia-platform.eu/core/crud-service | 6.10.3 |
| nexus.mia-platform.eu/core/proxy-manager | 3.5.0 |
| nexus.mia-platform.eu/core/swagger-aggregator | 3.9.6 |
| nexus.mia-platform.eu/microlc/middleware | 3.4.0 |
| nexus.mia-platform.eu/plugins/files-service | 2.10.5 |
| nexus.mia-platform.eu/plugins/ses-mail-notification-service | 3.5.0 |
| nexus.mia-platform.eu/rond-authz/rond | 1.14.2 |
9 changes: 9 additions & 0 deletions release-notes/versions.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@ import Changelog from '@site/src/components/Changelog';

<Changelog>

## [v14.5.3](/release-notes/v14.5.3.mdx)
*March 30th, 2026*

This release includes bug fixes for the **Console**, addressing issues with the merge tool, permission notifications, and configuration state handling in the Design Area.

[Read the release notes](/release-notes/v14.5.3.mdx)

---

## [v14.5.2](/release-notes/v14.5.2.mdx)
*March 25th, 2026*

Expand Down
6 changes: 3 additions & 3 deletions scripts/versions-mgt/create-version.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { execSync } from "node:child_process"
import { execSync } from 'node:child_process'
import fs from 'node:fs/promises'

import { confirm, select } from "@inquirer/prompts"
import { inc, major, minor, satisfies } from "semver"
import { inc, major, minor } from "semver"

import _versionsMap from '../../versionsMap.json'
import { isCurrentVersionLts, isNextVersionAPatchOfCurrent, updateReleaseNoteLinks, VersionsMap } from "./lib"
Expand Down Expand Up @@ -79,7 +79,7 @@ const main = async () => {
// Update `versionsMap.json`
const updatedVersionsMap = await import('../../versionsMap.json') as VersionsMap

let newVersionsMap: VersionsMap = {
let newVersionsMap: VersionsMap = {
current: updatedVersionsMap.current,
next: newVersion,
lts: newLtsRange ? [...updatedVersionsMap.lts!, newLtsRange] : updatedVersionsMap.lts
Expand Down
18 changes: 12 additions & 6 deletions scripts/versions-mgt/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import { ExitPromptError } from "@inquirer/core"
import { select } from '@inquirer/prompts'

import createVersion from './create-version'
import { assertGitTreeClean } from "./lib"
import patchLts from './patch-lts'
import promoteVersion from './promote-version'
import promoteCanary from './promote-canary'
import promoteNext from './promote-version'

export type SelectChoice<Value> = {
value: Value
Expand All @@ -15,19 +15,24 @@ export type SelectChoice<Value> = {
const main = async () => {
// assertGitTreeClean()

const command: 'create-version' | 'promote-version' | 'patch-lts' = await select({
const command: 'create-version' | 'promote-next' | 'promote-canary' | 'patch-lts' = await select({
message: 'What do you want to do?',
choices: [
{
value: 'create-version',
name: 'Promote Canary to Next and Next to Current',
description: 'Promote Canary version to Next, and Next to Current.'
},
{
value: 'promote-version',
{
value: 'promote-next',
name: 'Just promote Next to Current',
description: 'Promote Next version to Current, and unset Next version.'
},
{
value: 'promote-canary',
name: 'Just promote Canary to Next',
description: 'Promote Canary version to Next.'
},
{
value: 'patch-lts',
name: 'Patch an existing LTS version',
Expand All @@ -38,7 +43,8 @@ const main = async () => {

switch (command) {
case 'create-version': await createVersion(); break;
case 'promote-version': await promoteVersion(); break;
case 'promote-next': await promoteNext(); break;
case 'promote-canary': await promoteCanary(); break;
case 'patch-lts': await patchLts(); break;
}
}
Expand Down
8 changes: 6 additions & 2 deletions scripts/versions-mgt/lib.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@ import { diff, satisfies } from 'semver'

import versionsMap from '../../versionsMap.json'

export type VersionsMap = { [k in keyof typeof versionsMap]: typeof versionsMap[k] | null }
export type VersionsMap = {
"current": string,
"next": string | null,
"lts": string[] | null
}

export const isCurrentVersionLts = () => versionsMap.lts.some((range) => satisfies(versionsMap.current, range))

export const isNextVersionAPatchOfCurrent = () => diff(versionsMap.current, versionsMap.next) === 'patch'
export const isNextVersionAPatchOfCurrent = () => diff(versionsMap.current, versionsMap.next!) === 'patch'

export const assertGitTreeClean = () => {
try {
Expand Down
109 changes: 109 additions & 0 deletions scripts/versions-mgt/promote-canary.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
import { execSync } from 'node:child_process'
import fs from 'node:fs/promises'

import { input, select, confirm } from '@inquirer/prompts'
import { inc, major, minor } from 'semver'

import versions from '../../versions.json'
import _versionsMap from '../../versionsMap.json'
import { VersionsMap } from './lib'

const main = async () => {
const versionsMap = _versionsMap as VersionsMap

let newLtsRange: string | null = null
let newVersion: string

if (versionsMap.next !== null || versionsMap.current !== null) {
const prevVersion = versionsMap.next ?? versionsMap.current

const nextPatch = inc(prevVersion, 'patch')!
const nextMinor = inc(prevVersion, 'minor')!

const [_newVersion, _newVersionType] = await select<[string, 'minor' | 'patch']>({
message: 'What kind of version do you want to create?',
choices: [
{ value: [nextPatch, 'patch'], name: `Patch (${nextPatch})` },
{ value: [nextMinor, 'minor'], name: `Minor (${nextMinor})` },
]
})

newVersion = _newVersion

if (_newVersionType === 'minor') {
const isLts = await select({
message: 'Is the new version an LTS?',
choices: [{ value: true, name: 'Yes' }, { value: false, name: 'No' }]
})

if (isLts) {
newLtsRange = `${major(_newVersion)}.${minor(_newVersion)}.x`
}
}
} else {
newVersion = await input({ message: 'Which version do you want to create?' })

const isLts = await select({
message: 'Is the new version an LTS?',
choices: [{ value: true, name: 'Yes' }, { value: false, name: 'No' }]
})

if (isLts) {
newLtsRange = `${major(newVersion)}.${minor(newVersion)}.x`
}
}

let proceedMsg = `This routine will create documentation version ${newVersion} and promote it to Next (${versionsMap.next} -> ${newVersion}).`

if (newLtsRange) {
proceedMsg = proceedMsg + `The range ${newLtsRange} will be added to the list of LTS ranges.`
}

if (versionsMap.next) {
proceedMsg = proceedMsg + `\n\nDocumentation version ${versionsMap.next} will be overwritten (it WILL BE DELETED).`
}

proceedMsg = proceedMsg + `\n\nContinue?`

const proceed = await confirm({ message: proceedMsg })

if (proceed === false) { process.exit(1) }

// Delete previous Next version
if (versionsMap.next) {
// Delete version doc directory
try {
await fs.rm(`versioned_docs/version-${versionsMap.next}`, { recursive: true })
} catch (err) {
console.error(`Error deleting 'versioned_docs/version-${versionsMap.next}' directory:`, err)
process.exit(1)
}

// Rename version sidebar file
try {
await fs.rm(`versioned_sidebars/version-${versionsMap.next}-sidebars.json`)
} catch (err) {
console.error(`Error deleting 'versioned_sidebars/version-${versionsMap.next}-sidebars.json' file:`, err)
process.exit(1)
}
}

// Create new version
try {
execSync(`yarn docusaurus docs:version ${newVersion}`, { stdio: 'inherit' })
} catch(error) {
console.error('Error executing "docusaurus docs:version" command:', error);
process.exit(1)
}

// Update `versionsMap.json`
let newVersionsMap: VersionsMap = {
current: versionsMap.current,
next: newVersion,
lts: newLtsRange ? [...versionsMap.lts!, newLtsRange] : versionsMap.lts
}

await fs.writeFile('versionsMap.json', `${JSON.stringify(newVersionsMap, null, 2)}\n`)
}

export default main
4 changes: 2 additions & 2 deletions scripts/versions-mgt/promote-version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { isCurrentVersionLts, isNextVersionAPatchOfCurrent, updateReleaseNoteLin

export const promoteNext = async () => {
// Update `versionsMap.json`
let newVersionsMap: VersionsMap = { current: versionsMap.next, next: null, lts: versionsMap.lts }
let newVersionsMap: VersionsMap = { current: versionsMap.next!, next: null, lts: versionsMap.lts }
await fs.writeFile('versionsMap.json', `${JSON.stringify(newVersionsMap, null, 2)}\n`)

// If needed, delete previous Current version
Expand Down Expand Up @@ -37,7 +37,7 @@ export const promoteNext = async () => {
fs.writeFile('versions.json', `${JSON.stringify(newVersions, null, 2)}\n`)

// Edit links
await updateReleaseNoteLinks(versionsMap.next, `/docs/${versionsMap.next}`, '/docs')
await updateReleaseNoteLinks(versionsMap.next!, `/docs/${versionsMap.next}`, '/docs')
}

const main = async () => {
Expand Down
1 change: 1 addition & 0 deletions sidebarsReleaseNotes.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export default {
},
"items": [
{"id": "versions", "type": "doc"},
{"id": "v14.5.3", "type": "doc", "label": "v14.5.3"},
{"id": "v14.5.2", "type": "doc", "label": "v14.5.2"},
{"id": "v14.5.1", "type": "doc", "label": "v14.5.1"},
{"id": "v14.5.0", "type": "doc", "label": "v14.5.0"},
Expand Down
17 changes: 17 additions & 0 deletions src/config/release-notes/release-note-v14-5-3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[
{
"title": "Console",
"icon": "console",
"defaultOpen": true,
"type": "versions",
"items": {
"newFeatures": [],
"improvements": [],
"bugFixes": [
"Solved a bug that prevented the 'unsaved changes' message to appear when configuring EmptyDirs inside the Design Area.",
"Solved a bug preventing any notification from showing when users lack permissions to create a microservice. Now users are notified they don't have the required permissions.",
"Solved a bug in the new interface for configurations merge tool (_available in Beta as Feature Preview in Project Settings_) where changing a choice _(Keep/Delete)_ for a configmap would incorrectly apply it to all other configMaps."
]
}
}
]
Loading
Loading