diff --git a/packages/builder/lib/processors/bundlers/flexChangesBundler.js b/packages/builder/lib/processors/bundlers/flexChangesBundler.js
index 04827f4a7d6..65457894d56 100644
--- a/packages/builder/lib/processors/bundlers/flexChangesBundler.js
+++ b/packages/builder/lib/processors/bundlers/flexChangesBundler.js
@@ -18,8 +18,8 @@ import {createResource} from "@ui5/fs/resourceFactory";
* @param {@ui5/fs/Resource[]} parameters.resources List of resources to be processed
* @param {object} parameters.options Options
* @param {string} parameters.options.pathPrefix Prefix for bundle path
- * @param {string} parameters.options.hasFlexBundleVersion true if minUI5Version >= 1.73 than
- * create flexibility-bundle.json
+ * @param {string} parameters.options.hasFlexBundleVersion true if minUI5Version >= 1.73
+ * and create flexibility-bundle.json
* @param {object} [parameters.existingFlexBundle={}] Object with existing flexibility-bundle.json
* to merge with new changes
* @returns {Promise<@ui5/fs/Resource[]>} Promise resolving with flex changes bundle resources
@@ -45,6 +45,7 @@ export default function({resources, options: {pathPrefix, hasFlexBundleVersion},
const variants = [];
const variantChanges = [];
const variantManagementChanges = [];
+ const annotationChanges = [];
changesContent.forEach(function(content) {
if (content.layer === "VENDOR") {
@@ -74,14 +75,23 @@ export default function({resources, options: {pathPrefix, hasFlexBundleVersion},
case "ctrl_variant_management_change":
variantManagementChanges.push(content);
break;
+ case "annotation_change":
+ annotationChanges.push(content);
+ break;
}
});
- if (!hasFlexBundleVersion && (compVariants.length != 0 || variants.length != 0 || variantChanges.length != 0 ||
- variantDependentControlChanges.length != 0 || variantManagementChanges.length != 0)) {
+ if (!hasFlexBundleVersion && (
+ compVariants.length != 0 ||
+ variants.length != 0 ||
+ variantChanges.length != 0 ||
+ variantDependentControlChanges.length != 0 ||
+ variantManagementChanges.length != 0 ||
+ annotationChanges.length != 0
+ )) {
throw new Error(
- "There are some control variant changes in the changes folder. This only works with a " +
- "minUI5Version 1.73.0. Please update the minUI5Version in the manifest.json to 1.73.0 or higher");
+ "There are some files in the changes folder working only with a ui5 version 1.73 and above. " +
+ "Please update the minUI5Version in the manifest.json to 1.73 or higher");
}
// create changes-bundle.json
if (!hasFlexBundleVersion) {
@@ -89,6 +99,7 @@ export default function({resources, options: {pathPrefix, hasFlexBundleVersion},
} else {
bundleName = "flexibility-bundle.json";
let newChangeFormat = {
+ annotationChanges,
changes,
compVariants,
variants,
diff --git a/packages/builder/lib/tasks/bundlers/generateFlexChangesBundle.js b/packages/builder/lib/tasks/bundlers/generateFlexChangesBundle.js
index 8303296827a..115e7aea396 100644
--- a/packages/builder/lib/tasks/bundlers/generateFlexChangesBundle.js
+++ b/packages/builder/lib/tasks/bundlers/generateFlexChangesBundle.js
@@ -95,7 +95,7 @@ export default async function({workspace, taskUtil, options = {}}) {
log.verbose("Collecting flexibility changes");
const allResources = await workspace.byGlob(
- `${pathPrefix}/changes/*.{change,variant,ctrl_variant,ctrl_variant_change,ctrl_variant_management_change}`);
+ `${pathPrefix}/changes/*.{annotation_change,change,variant,ctrl_variant,ctrl_variant_change,ctrl_variant_management_change}`);
let bBundleCreated = false;
diff --git a/packages/builder/test/expected/build/application.j/dest-resources-json/Component-preload.js b/packages/builder/test/expected/build/application.j/dest-resources-json/Component-preload.js
index be5f817d88e..70fe4834db3 100644
--- a/packages/builder/test/expected/build/application.j/dest-resources-json/Component-preload.js
+++ b/packages/builder/test/expected/build/application.j/dest-resources-json/Component-preload.js
@@ -2,7 +2,7 @@
sap.ui.predefine("application/j/Component", ["sap/ui/core/UIComponent"],function(n){"use strict";return n.extend("application.j.Component",{metadata:{manifest:"json"}})});
sap.ui.predefine("application/j/changes/coding/MyExtension", [],function(){return{}});
sap.ui.require.preload({
- "application/j/changes/flexibility-bundle.json":'{"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}',
+ "application/j/changes/flexibility-bundle.json":'{"annotationChanges":[{"fileName":"id_111","fileType":"annotation_change","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}',
"application/j/changes/fragments/MyFragment.fragment.xml":'',
"application/j/manifest.json":'{"_version":"1.1.0","sap.app":{"_version":"1.1.0","id":"application.j","type":"application","applicationVersion":{"version":"1.2.2"},"embeds":["embedded"],"title":"{{title}}"},"sap.ui5":{"dependencies":{"minUI5Version":"1.100.2","libs":{"sap.ui.layout":{},"sap.ui.core":{},"sap.m":{},"sap.ui.fl":{"lazy":false}}},"flexBundle":true}}'
});
diff --git a/packages/builder/test/expected/build/application.j/dest-resources-json/changes/flexibility-bundle.json b/packages/builder/test/expected/build/application.j/dest-resources-json/changes/flexibility-bundle.json
index d1315a19264..316fccbeae4 100644
--- a/packages/builder/test/expected/build/application.j/dest-resources-json/changes/flexibility-bundle.json
+++ b/packages/builder/test/expected/build/application.j/dest-resources-json/changes/flexibility-bundle.json
@@ -1 +1 @@
-{"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}
\ No newline at end of file
+{"annotationChanges":[{"fileName":"id_111","fileType":"annotation_change","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}
\ No newline at end of file
diff --git a/packages/builder/test/expected/build/application.j/dest-resources-json/resources.json b/packages/builder/test/expected/build/application.j/dest-resources-json/resources.json
index cbca97c357f..ae0bb5ac8d8 100644
--- a/packages/builder/test/expected/build/application.j/dest-resources-json/resources.json
+++ b/packages/builder/test/expected/build/application.j/dest-resources-json/resources.json
@@ -17,7 +17,7 @@
{
"name": "Component-preload.js",
"module": "application/j/Component-preload.js",
- "size": 3676,
+ "size": 4049,
"merged": true,
"required": [
"sap/m/library.js",
@@ -75,7 +75,7 @@
{
"name": "changes/flexibility-bundle.json",
"module": "application/j/changes/flexibility-bundle.json",
- "size": 2800
+ "size": 3173
},
{
"name": "changes/fragments/MyFragment.fragment.xml",
diff --git a/packages/builder/test/expected/build/application.j/dest/Component-preload.js b/packages/builder/test/expected/build/application.j/dest/Component-preload.js
index be5f817d88e..70fe4834db3 100644
--- a/packages/builder/test/expected/build/application.j/dest/Component-preload.js
+++ b/packages/builder/test/expected/build/application.j/dest/Component-preload.js
@@ -2,7 +2,7 @@
sap.ui.predefine("application/j/Component", ["sap/ui/core/UIComponent"],function(n){"use strict";return n.extend("application.j.Component",{metadata:{manifest:"json"}})});
sap.ui.predefine("application/j/changes/coding/MyExtension", [],function(){return{}});
sap.ui.require.preload({
- "application/j/changes/flexibility-bundle.json":'{"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}',
+ "application/j/changes/flexibility-bundle.json":'{"annotationChanges":[{"fileName":"id_111","fileType":"annotation_change","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}',
"application/j/changes/fragments/MyFragment.fragment.xml":'',
"application/j/manifest.json":'{"_version":"1.1.0","sap.app":{"_version":"1.1.0","id":"application.j","type":"application","applicationVersion":{"version":"1.2.2"},"embeds":["embedded"],"title":"{{title}}"},"sap.ui5":{"dependencies":{"minUI5Version":"1.100.2","libs":{"sap.ui.layout":{},"sap.ui.core":{},"sap.m":{},"sap.ui.fl":{"lazy":false}}},"flexBundle":true}}'
});
diff --git a/packages/builder/test/expected/build/application.j/dest/changes/flexibility-bundle.json b/packages/builder/test/expected/build/application.j/dest/changes/flexibility-bundle.json
index d1315a19264..316fccbeae4 100644
--- a/packages/builder/test/expected/build/application.j/dest/changes/flexibility-bundle.json
+++ b/packages/builder/test/expected/build/application.j/dest/changes/flexibility-bundle.json
@@ -1 +1 @@
-{"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}
\ No newline at end of file
+{"annotationChanges":[{"fileName":"id_111","fileType":"annotation_change","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"changes":[{"fileName":"id_456_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2023-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}},{"fileName":"id_123_addField","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"CUSTOMER","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"Max Mustermann"}}],"compVariants":[{"fileName":"id_111_compVariants","fileType":"variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"appDescriptorChange":false}],"variants":[{"fileName":"id_111_test","fileType":"ctrl_variant","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}],"variantDependentControlChanges":[{"fileName":"id_111_variantDependentControlChange","fileType":"change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"},"variantReference":"someting here"}],"variantManagementChanges":[{"fileName":"id_111_test","fileType":"ctrl_variant_management_change","changeType":"hideControl","component":"application.j.Component","content":{},"selector":{"id":"control1"},"layer":"VENDOR","texts":{},"namespace":"apps/application.j.Component/changes","creation":"2025-10-30T13:52:40.4754350Z","originalLanguage":"","conditions":{},"support":{"generator":"did it","user":"SAP"}}]}
\ No newline at end of file
diff --git a/packages/builder/test/fixtures/application.j/webapp/changes/id_111.annotation_change b/packages/builder/test/fixtures/application.j/webapp/changes/id_111.annotation_change
new file mode 100644
index 00000000000..0367f13d0f1
--- /dev/null
+++ b/packages/builder/test/fixtures/application.j/webapp/changes/id_111.annotation_change
@@ -0,0 +1,19 @@
+{
+ "fileName": "id_111",
+ "fileType": "annotation_change",
+ "component": "application.j.Component",
+ "content": {},
+ "selector": {
+ "id": "control1"
+ },
+ "layer": "CUSTOMER",
+ "texts": {},
+ "namespace": "apps/application.j.Component/changes",
+ "creation": "2025-10-30T13:52:40.4754350Z",
+ "originalLanguage": "",
+ "conditions": {},
+ "support": {
+ "generator": "did it",
+ "user": "Max Mustermann"
+ }
+}
diff --git a/packages/builder/test/lib/processors/bundlers/flexChangesBundler.js b/packages/builder/test/lib/processors/bundlers/flexChangesBundler.js
index 6dd178e8627..b088162129e 100644
--- a/packages/builder/test/lib/processors/bundlers/flexChangesBundler.js
+++ b/packages/builder/test/lib/processors/bundlers/flexChangesBundler.js
@@ -111,7 +111,85 @@ test("flexChangesBundler with 2 changes", async (t) => {
t.deepEqual(parsedContent, flexBundle, "Result must contain the content");
});
+test("includes annotation_changes in flexibility-bundle when hasFlexBundleVersion = true", async (t) => {
+ const change = {
+ "fileName": "id_annotation_change",
+ "fileType": "annotation_change",
+ "changeType": "annotationUpdate",
+ "reference": "test.Component",
+ "packageName": "$TMP",
+ "content": {},
+ "selector": {"id": "a"},
+ "layer": "CUSTOMER",
+ "creation": "2020-01-01T00:00:00.000Z",
+ "support": {"generator": "g", "service": "", "user": "", "sapui5Version": "1.75.0"}
+ };
+
+ const resources = [{
+ name: "flexChange",
+ getBuffer: async () => JSON.stringify(change)
+ }];
+
+ const options = {pathPrefix: "/mypath", hasFlexBundleVersion: true};
+ const aResult = await flexChangesBundler({resources, options});
+ t.is(aResult.length, 1);
+ const parsed = JSON.parse(await aResult[0].getString());
+ t.true(Array.isArray(parsed.annotationChanges));
+ t.is(parsed.annotationChanges.length, 1, "annotation_changes should be included in flex bundle");
+ // ensure the item is preserved
+ t.deepEqual(parsed.annotationChanges[0], change);
+});
+
+test("annotation_changes triggers error when hasFlexBundleVersion = false", async (t) => {
+ const change = {
+ "fileName": "id_annotation_change2",
+ "fileType": "annotation_change",
+ "changeType": "annotationUpdate",
+ "reference": "test.Component",
+ "packageName": "$TMP",
+ "content": {},
+ "selector": {"id": "a"},
+ "layer": "CUSTOMER",
+ "creation": "2020-01-01T00:00:00.000Z",
+ "support": {"generator": "g", "service": "", "user": "", "sapui5Version": "1.51.0"}
+ };
+
+ const resources = [{
+ name: "flexChange",
+ getBuffer: async () => JSON.stringify(change)
+ }];
+
+ const options = {pathPrefix: "/mypath", hasFlexBundleVersion: false};
+ await t.throwsAsync(
+ () => flexChangesBundler({resources, options}),
+ {message: /1\.73/}
+ );
+});
+
test("flexChangesBundler has ctrl_variant and hasFlexBundleVersion = true", async (t) => {
+ const annotationChange = [{
+ "fileName": "annotationChange",
+ "title": "annotaitonChange",
+ "variantReference": "sap.ui.demo.todo.Component",
+ "fileType": "annotation_change",
+ "component": "lrep.x.Component",
+ "packageName": "$TMP",
+ "content": {},
+ "selector": {
+ "id": ""
+ },
+ "layer": "VENDOR",
+ "texts": {},
+ "namespace": "l/x/",
+ "creation": "20170705-12-00-00",
+ "originalLanguage": "EN",
+ "conditions": {},
+ "support": {
+ "generator": "Change.createInitialFileContent",
+ "service": "",
+ "user": "SAP"
+ }
+ }];
const changeList = [
{
"fileName": "id_1504764957630_7_rename2",
@@ -341,44 +419,25 @@ test("flexChangesBundler has ctrl_variant and hasFlexBundleVersion = true", asyn
}];
const resources = [];
- changeList.forEach((change) => {
- resources.push({
- name: "flexChange",
- getBuffer: async () => JSON.stringify(change)
- });
- });
- compVariants.forEach((change) => {
- resources.push({
- name: "flexChange",
- getBuffer: async () => JSON.stringify(change)
- });
- });
- variantDependentControlChange.forEach((change) => {
- resources.push({
- name: "flexChange",
- getBuffer: async () => JSON.stringify(change)
- });
- });
- ctrlVariantChange.forEach((change) => {
- resources.push({
- name: "flexChange",
- getBuffer: async () => JSON.stringify(change)
- });
- });
- ctrlVariantManagementChange.forEach((change) => {
- resources.push({
- name: "flexChange",
- getBuffer: async () => JSON.stringify(change)
- });
- });
- ctrlVariant.forEach((change) => {
- resources.push({
- name: "flexChange",
- getBuffer: async () => JSON.stringify(change)
+ [
+ annotationChange,
+ changeList,
+ compVariants,
+ variantDependentControlChange,
+ ctrlVariantChange,
+ ctrlVariantManagementChange,
+ ctrlVariant
+ ].forEach((entities) => {
+ entities.forEach((change) => {
+ resources.push({
+ name: "flexChange",
+ getBuffer: async () => JSON.stringify(change)
+ });
});
});
const flexBundle = {
+ "annotationChanges": annotationChange,
"changes": changeList,
"compVariants": compVariants,
"variantChanges": ctrlVariantChange,
@@ -488,9 +547,8 @@ test("flexChangesBundler has ctrl_variant and hasFlexBundleVersion = false", asy
};
const error = await t.throwsAsync(flexChangesBundler({resources, options}));
- t.deepEqual(error.message, "There are some control variant changes in the changes folder. " +
- "This only works with a minUI5Version 1.73.0. Please update the minUI5Version in the manifest.json " +
- "to 1.73.0 or higher", "Correct exception thrown");
+ t.deepEqual(error.message, "There are some files in the changes folder working only with a ui5 version 1.73 and above. " +
+ "Please update the minUI5Version in the manifest.json to 1.73 or higher", "Correct exception thrown");
});
test("flexChangesBundler with existing flexibility-bundle.json", async (t) => {
@@ -914,6 +972,7 @@ test("flexChangesBundler with existing flexibility-bundle.json", async (t) => {
});
const existingFlexBundle = {
+ "annotationChanges": [],
"changes": existingChangeList,
"compVariants": existingCompVariants,
"variantChanges": existingCtrlVariantChange,
@@ -922,6 +981,7 @@ test("flexChangesBundler with existing flexibility-bundle.json", async (t) => {
"variants": existingCtrlVariant
};
const flexBundle = {
+ "annotationChanges": [],
"changes": existingChangeList.concat(changeList),
"compVariants": existingCompVariants.concat(compVariants),
"variantChanges": existingCtrlVariantChange.concat(ctrlVariantChange),
@@ -1218,11 +1278,13 @@ test("flexChangesBundler with existing flexibility-bundle.json and missing/wrong
});
const existingFlexBundle = {
+ "annotationChanges": [],
"changes": existingChangeList,
"compVariants": "test",
"test_property": []
};
const flexBundle = {
+ "annotationChanges": [],
"changes": existingChangeList.concat(changeList),
"compVariants": compVariants,
"variantChanges": ctrlVariantChange,
diff --git a/packages/builder/test/lib/tasks/bundlers/generateFlexChangesBundle.js b/packages/builder/test/lib/tasks/bundlers/generateFlexChangesBundle.js
index e80f090f4ca..0f08f4d53d6 100644
--- a/packages/builder/test/lib/tasks/bundlers/generateFlexChangesBundle.js
+++ b/packages/builder/test/lib/tasks/bundlers/generateFlexChangesBundle.js
@@ -123,6 +123,7 @@ function createPlaceholderWorkspace(changes, manifest, flexBundle) {
};
const flexBundle = {
+ "annotationChanges": [],
"changes": existingChangeList,
"compVariants": [],
"variantChanges": [],
@@ -132,6 +133,7 @@ function createPlaceholderWorkspace(changes, manifest, flexBundle) {
};
const flexBundleMerge = {
+ "annotationChanges": [],
"changes": existingChangeList.concat(changeList),
"compVariants": [],
"variantChanges": [],