{ "CI_job_history_included": false, "approvals": [], "diff_versions": [ { "commits": [ { "authored_date": null, "commit_author_id": null, "committed_date": null, "committer_id": null, "merge_request_commits_metadata_id": 211, "merge_request_diff_id": 109, "message": null, "project_id": null, "relative_order": 0, "sha": null, "trailers": {} } ], "files": [ { "a_mode": "100644", "b_mode": "100644", "binary": false, "deleted_file": false, "diff": "@@ -8,16 +8,16 @@\n \t\t\t\"name\": \"vac-optimizer\",\n \t\t\t\"version\": \"1.5.0\",\n \t\t\t\"dependencies\": {\n-\t\t\t\t\"@angular/cdk\": \"^20.2.12\",\n-\t\t\t\t\"@angular/common\": \"^20.3.10\",\n-\t\t\t\t\"@angular/compiler\": \"^20.3.10\",\n-\t\t\t\t\"@angular/core\": \"^20.3.10\",\n-\t\t\t\t\"@angular/forms\": \"^20.3.10\",\n-\t\t\t\t\"@angular/material\": \"^20.2.12\",\n-\t\t\t\t\"@angular/platform-browser\": \"^20.3.10\",\n-\t\t\t\t\"@angular/platform-server\": \"^20.3.10\",\n-\t\t\t\t\"@angular/router\": \"^20.3.10\",\n-\t\t\t\t\"@angular/ssr\": \"^20.3.10\",\n+\t\t\t\t\"@angular/cdk\": \"^21.0.0\",\n+\t\t\t\t\"@angular/common\": \"^21.0.0\",\n+\t\t\t\t\"@angular/compiler\": \"^21.0.0\",\n+\t\t\t\t\"@angular/core\": \"^21.0.0\",\n+\t\t\t\t\"@angular/forms\": \"^21.0.0\",\n+\t\t\t\t\"@angular/material\": \"^21.0.0\",\n+\t\t\t\t\"@angular/platform-browser\": \"^21.0.0\",\n+\t\t\t\t\"@angular/platform-server\": \"^21.0.0\",\n+\t\t\t\t\"@angular/router\": \"^21.0.0\",\n+\t\t\t\t\"@angular/ssr\": \"^21.0.0\",\n \t\t\t\t\"date-holidays\": \"^3.26.2\",\n \t\t\t\t\"dayjs\": \"^1.11.19\",\n \t\t\t\t\"express\": \"^5.1.0\",\n@@ -443,17 +443,17 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/cdk\": {\n-\t\t\t\"version\": \"20.2.13\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.13.tgz\",\n-\t\t\t\"integrity\": \"sha512-h1jTkCmJ/rEQQMkxgKFMCBOrMfjZEnppgdekNmSTerwdVp4vdosTDTzFH/kwiOGFeRClffmvqQ2XLG8mQOKOtA==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/cdk/-/cdk-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-wCr5D3mEC+p69IMDC7vf8bWx18mfUNNRdsiK3XD0m1PqfeNfnCJb+Bnkks37MC/SU01uCNrAokRaTbWL6pk1Wg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"parse5\": \"^8.0.0\",\n \t\t\t\t\"tslib\": \"^2.3.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/common\": \"^20.0.0 || ^21.0.0\",\n-\t\t\t\t\"@angular/core\": \"^20.0.0 || ^21.0.0\",\n+\t\t\t\t\"@angular/common\": \"^21.0.0 || ^22.0.0\",\n+\t\t\t\t\"@angular/core\": \"^21.0.0 || ^22.0.0\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n@@ -493,9 +493,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/common\": {\n-\t\t\t\"version\": \"20.3.12\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/common/-/common-20.3.12.tgz\",\n-\t\t\t\"integrity\": \"sha512-rFcDfe67ffrb435C6t2lc27WGbizeOcgce30tUhH0iezwEvU+kHHWezXXX6Ylx3TFgqGkhcxL0fliuFYrpM1Vw==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/common/-/common-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-uFvQDYU5X5nEnI9C4Bkdxcu4aIzNesGLJzmFlnwChVxB4BxIRF0uHL0oRhdkInGTIzPDJPH4nF6B/22c5gDVqA==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -504,14 +504,14 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/core\": \"20.3.12\",\n+\t\t\t\t\"@angular/core\": \"21.0.0\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/compiler\": {\n-\t\t\t\"version\": \"20.3.12\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.12.tgz\",\n-\t\t\t\"integrity\": \"sha512-bGESKz97nWiEQ/sydTq/Lzv3zlLvDb8t0msLG5Xti7Ch1EdLddXS8d2D/zFsjiGbAUKVsT6RgPCLHYoi4ocbhA==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/compiler/-/compiler-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-6jCH3UYga5iokj5F40SR4dlwo9ZRMkT8YzHCTijwZuDX9zvugp9jPof092RvIeNsTvCMVfGWuM9yZ1DRUsU/yg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -554,9 +554,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/core\": {\n-\t\t\t\"version\": \"20.3.12\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/core/-/core-20.3.12.tgz\",\n-\t\t\t\"integrity\": \"sha512-K7vibMr55a7+EsuDhkg4Pk+ELuMm12olllwqL/CiQUcHXZ9Zgc4KYGTUuxWB69qJCG90gdSZS7tm5Dx0wDcyjg==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/core/-/core-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-bqi8fT4csyITeX8vdN5FJDBWx5wuWzdCg4mKSjHd+onVzZLyZ8bcnuAKz4mklgvjvwuXoRYukmclUurLwfq3Rg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -565,7 +565,7 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/compiler\": \"20.3.12\",\n+\t\t\t\t\"@angular/compiler\": \"21.0.0\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\",\n \t\t\t\t\"zone.js\": \"~0.15.0\"\n \t\t\t},\n@@ -579,9 +579,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/forms\": {\n-\t\t\t\"version\": \"20.3.12\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/forms/-/forms-20.3.12.tgz\",\n-\t\t\t\"integrity\": \"sha512-O0Jy8ScaN3qVipDfR4s0SIxGrz/+MbCdmR05ZYVWf1W5P3dvETKt9WNjX9fYYV47GdgSveyFjuCR2NvWlv94zA==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/forms/-/forms-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-kcudwbZs/ddKqaELz4eEW9kOGCsX61qsf9jkQsGTARBEOUcU2K+rM6mX5sTf9azHvQ9wlX4N36h0eYzBA4Y4Qg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -590,33 +590,34 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/common\": \"20.3.12\",\n-\t\t\t\t\"@angular/core\": \"20.3.12\",\n-\t\t\t\t\"@angular/platform-browser\": \"20.3.12\",\n+\t\t\t\t\"@angular/common\": \"21.0.0\",\n+\t\t\t\t\"@angular/core\": \"21.0.0\",\n+\t\t\t\t\"@angular/platform-browser\": \"21.0.0\",\n+\t\t\t\t\"@standard-schema/spec\": \"^1.0.0\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/material\": {\n-\t\t\t\"version\": \"20.2.13\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/material/-/material-20.2.13.tgz\",\n-\t\t\t\"integrity\": \"sha512-9pjp2mULOxojYzOO7qdqt/gSVLrpYBwsIM3K0fxp+mNEcJgNjIxvmRKx46LY9+v0yrPY9puoQvP/T2C+o1+xsw==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/material/-/material-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-s3+fhN7F5T1TAltZXYXOgY1wuVbICCrBJpV2TN8nJXDT0wroTYAljgBmsr6ZjDwYJewwP0OPvcj2NlOGDpa6oA==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/cdk\": \"20.2.13\",\n-\t\t\t\t\"@angular/common\": \"^20.0.0 || ^21.0.0\",\n-\t\t\t\t\"@angular/core\": \"^20.0.0 || ^21.0.0\",\n-\t\t\t\t\"@angular/forms\": \"^20.0.0 || ^21.0.0\",\n-\t\t\t\t\"@angular/platform-browser\": \"^20.0.0 || ^21.0.0\",\n+\t\t\t\t\"@angular/cdk\": \"21.0.0\",\n+\t\t\t\t\"@angular/common\": \"^21.0.0 || ^22.0.0\",\n+\t\t\t\t\"@angular/core\": \"^21.0.0 || ^22.0.0\",\n+\t\t\t\t\"@angular/forms\": \"^21.0.0 || ^22.0.0\",\n+\t\t\t\t\"@angular/platform-browser\": \"^21.0.0 || ^22.0.0\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/platform-browser\": {\n-\t\t\t\"version\": \"20.3.12\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.12.tgz\",\n-\t\t\t\"integrity\": \"sha512-14KQsXZyaQhbRwFz1W58CtbXQc9L+mfuHBgwQjQo99422Yk0ye5WVMb6DHH7dH671qFVqL0XL7zdOPBebaAnJQ==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-KQrANla4RBLhcGkwlndqsKzBwVFOWQr1640CfBVjj2oz4M3dW5hyMtXivBACvuwyUhYU/qJbqlDMBXl/OUSudQ==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -625,9 +626,9 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/animations\": \"20.3.12\",\n-\t\t\t\t\"@angular/common\": \"20.3.12\",\n-\t\t\t\t\"@angular/core\": \"20.3.12\"\n+\t\t\t\t\"@angular/animations\": \"21.0.0\",\n+\t\t\t\t\"@angular/common\": \"21.0.0\",\n+\t\t\t\t\"@angular/core\": \"21.0.0\"\n \t\t\t},\n \t\t\t\"peerDependenciesMeta\": {\n \t\t\t\t\"@angular/animations\": {\n@@ -656,9 +657,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/platform-server\": {\n-\t\t\t\"version\": \"20.3.12\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/platform-server/-/platform-server-20.3.12.tgz\",\n-\t\t\t\"integrity\": \"sha512-vmkaWZ0VqBLT5kVwC5QrkrKuTlVuIygJBIfOD6ATNJl4wf6GXdApAvT/BFZKBF+8iGmqxMCWLf7EH4rP7U5Jrw==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/platform-server/-/platform-server-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-5IcmoftT2hLAbLfSoqGoCg0B1FLSk08xDoUdIyEUo1SmxNJMEEgU6WxhkPf6R7aoOlLAwYBoqGGP1Us1Z7rO7g==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\",\n@@ -668,17 +669,17 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/common\": \"20.3.12\",\n-\t\t\t\t\"@angular/compiler\": \"20.3.12\",\n-\t\t\t\t\"@angular/core\": \"20.3.12\",\n-\t\t\t\t\"@angular/platform-browser\": \"20.3.12\",\n+\t\t\t\t\"@angular/common\": \"21.0.0\",\n+\t\t\t\t\"@angular/compiler\": \"21.0.0\",\n+\t\t\t\t\"@angular/core\": \"21.0.0\",\n+\t\t\t\t\"@angular/platform-browser\": \"21.0.0\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/router\": {\n-\t\t\t\"version\": \"20.3.12\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/router/-/router-20.3.12.tgz\",\n-\t\t\t\"integrity\": \"sha512-hUipb9JI/Euy3bdlhzkcWlw3cTyssPTVTDwSvyGxWO4i+UKATQYmxh8EDOrDYzFp6Aexiy0Hff/H8umdsn6ZdA==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/router/-/router-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-ARx1R2CmTgAezlMkUpV40V4T/IbXhL7dm4SuMVKbuEOsCKZC0TLOSSTsGYY7HKem45JHlJaByv819cJnabFgBg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -687,25 +688,25 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/common\": \"20.3.12\",\n-\t\t\t\t\"@angular/core\": \"20.3.12\",\n-\t\t\t\t\"@angular/platform-browser\": \"20.3.12\",\n+\t\t\t\t\"@angular/common\": \"21.0.0\",\n+\t\t\t\t\"@angular/core\": \"21.0.0\",\n+\t\t\t\t\"@angular/platform-browser\": \"21.0.0\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/ssr\": {\n-\t\t\t\"version\": \"20.3.10\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/ssr/-/ssr-20.3.10.tgz\",\n-\t\t\t\"integrity\": \"sha512-Zg2pAFw24itwIWBwZ2Avbu+UvP9ALnLZrZq/ABJP5dM6xrc0EYcWt72519+eDUEvzqz7ySYx1Qhn2AMsNv3dkg==\",\n+\t\t\t\"version\": \"21.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/ssr/-/ssr-21.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-lzMzMdsAGy5OB7JsOfKK+SZQdxeOAWDg8sC/XcTUzY/BJu31Lz9kO2nuKmqcgr/aPOrD7Sc0F31u/NxGjeCdTw==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/common\": \"^20.0.0\",\n-\t\t\t\t\"@angular/core\": \"^20.0.0\",\n-\t\t\t\t\"@angular/platform-server\": \"^20.0.0\",\n-\t\t\t\t\"@angular/router\": \"^20.0.0\"\n+\t\t\t\t\"@angular/common\": \"^21.0.0\",\n+\t\t\t\t\"@angular/core\": \"^21.0.0\",\n+\t\t\t\t\"@angular/platform-server\": \"^21.0.0\",\n+\t\t\t\t\"@angular/router\": \"^21.0.0\"\n \t\t\t},\n \t\t\t\"peerDependenciesMeta\": {\n \t\t\t\t\"@angular/platform-server\": {\n@@ -4802,6 +4803,13 @@\n \t\t\t\"dev\": true,\n \t\t\t\"license\": \"MIT\"\n \t\t},\n+\t\t\"node_modules/@standard-schema/spec\": {\n+\t\t\t\"version\": \"1.0.0\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz\",\n+\t\t\t\"integrity\": \"sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==\",\n+\t\t\t\"license\": \"MIT\",\n+\t\t\t\"peer\": true\n+\t\t},\n \t\t\"node_modules/@tufjs/canonical-json\": {\n \t\t\t\"version\": \"2.0.0\",\n \t\t\t\"resolved\": \"https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz\",\n", "encoded_file_path": false, "external_diff_offset": null, "external_diff_size": null, "generated": true, "merge_request_diff_id": 109, "new_file": false, "new_path": null, "old_path": "package-lock.json", "project_id": 35, "relative_order": 0, "renamed_file": false, "too_large": false }, { "a_mode": "100644", "b_mode": "100644", "binary": false, "deleted_file": false, "diff": "@@ -27,16 +27,16 @@\n \t},\n \t\"private\": true,\n \t\"dependencies\": {\n-\t\t\"@angular/cdk\": \"^20.2.12\",\n-\t\t\"@angular/common\": \"^20.3.10\",\n-\t\t\"@angular/compiler\": \"^20.3.10\",\n-\t\t\"@angular/core\": \"^20.3.10\",\n-\t\t\"@angular/forms\": \"^20.3.10\",\n-\t\t\"@angular/material\": \"^20.2.12\",\n-\t\t\"@angular/platform-browser\": \"^20.3.10\",\n-\t\t\"@angular/platform-server\": \"^20.3.10\",\n-\t\t\"@angular/router\": \"^20.3.10\",\n-\t\t\"@angular/ssr\": \"^20.3.10\",\n+\t\t\"@angular/cdk\": \"^21.0.0\",\n+\t\t\"@angular/common\": \"^21.0.0\",\n+\t\t\"@angular/compiler\": \"^21.0.0\",\n+\t\t\"@angular/core\": \"^21.0.0\",\n+\t\t\"@angular/forms\": \"^21.0.0\",\n+\t\t\"@angular/material\": \"^21.0.0\",\n+\t\t\"@angular/platform-browser\": \"^21.0.0\",\n+\t\t\"@angular/platform-server\": \"^21.0.0\",\n+\t\t\"@angular/router\": \"^21.0.0\",\n+\t\t\"@angular/ssr\": \"^21.0.0\",\n \t\t\"date-holidays\": \"^3.26.2\",\n \t\t\"dayjs\": \"^1.11.19\",\n \t\t\"express\": \"^5.1.0\",\n", "encoded_file_path": false, "external_diff_offset": null, "external_diff_size": null, "generated": false, "merge_request_diff_id": 109, "new_file": false, "new_path": null, "old_path": "package.json", "project_id": 35, "relative_order": 1, "renamed_file": false, "too_large": false } ], "metadata": { "base_commit_sha": "3272622abfbe608161aa51332e21b1cb23e3af93", "commits_count": 1, "created_at": "2026-05-03T16:00:00.674757", "diff_type": 1, "files_count": 2, "head_commit_sha": "0b55701c64d53060ed3a871dfd9e6c33f9b50e5d", "id": 109, "merge_request_id": 109, "project_id": 35, "start_commit_sha": "3272622abfbe608161aa51332e21b1cb23e3af93", "state": "collected", "stored_externally": null, "updated_at": "2026-05-03T16:00:01.226606" } } ], "discussions": [ { "id": "eccf3eabcbe13b520b6afbbc60e2291cdc875f93", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "body": "Looks like these dependencies are no longer updatable, so this is no longer needed.", "commands_changes": {}, "confidential": false, "created_at": "2025-11-30T02:19:09.000Z", "id": 502, "imported": true, "imported_from": "github", "internal": false, "noteable_id": 109, "noteable_iid": 53, "noteable_type": "MergeRequest", "project_id": 35, "resolvable": false, "system": false, "type": null, "updated_at": "2025-11-30T02:19:09.000Z" } ], "resolvable": false } ], "format_version": 1, "notes": [ { "author_id": 3, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2025-11-30T02:19:09", "discussion_id": "eccf3eabcbe13b520b6afbbc60e2291cdc875f93", "id": 502, "imported_from": 4, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "Looks like these dependencies are no longer updatable, so this is no longer needed.", "noteable_id": 109, "noteable_type": "MergeRequest", "organization_id": null, "original_position": null, "position": null, "project_id": 35, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 53, "source_item_project_id": 35, "st_diff": null, "system": false, "type": null, "updated_at": "2025-11-30T02:19:09", "updated_by_id": null } ], "preexisting_missing_alternate_head": false, "source_assignees": [], "source_author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "source_created_at": "2025-11-24T19:16:56.000Z", "source_discussion_locked": null, "source_id": 109, "source_iid": 53, "source_item_metadata": { "assignee": null, "assignees": [], "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "blocking_discussions_resolved": true, "closed_at": null, "closed_by": null, "created_at": "2025-11-24T19:16:56.000Z", "description": "Bumps the angular group with 10 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/cdk](https://github.com/angular/components) | `20.2.13` | `21.0.0` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `20.3.12` | `21.0.0` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `20.3.12` | `21.0.0` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `20.3.12` | `21.0.0` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `20.3.12` | `21.0.0` |\n| [@angular/material](https://github.com/angular/components) | `20.2.13` | `21.0.0` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `20.3.12` | `21.0.0` |\n| [@angular/platform-server](https://github.com/angular/angular/tree/HEAD/packages/platform-server) | `20.3.12` | `21.0.0` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `20.3.12` | `21.0.0` |\n| [@angular/ssr](https://github.com/angular/angular-cli) | `20.3.10` | `21.0.0` |\n\nUpdates `@angular/cdk` from 20.2.13 to 21.0.0\n
\nRelease notes\n

Sourced from @​angular/cdk's releases.

\n
\n

21.0.0

\n

aria

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featgrid: create the aria grid (#32092)
\"featmenu: create the aria menu (#32080)
\"feattoolbar: adds skip disabled toolbar example to dev-app (#32127)
\"feattoolbar: adds toolbar basic vertical example to dev-app (#32126)
\"feattoolbar: adds toolbar-basic-horizontal-example to dev-app (#32106)
\"fixaccordion: rename value to panelId for trigger and panel (#32295)
\"fixcombobox: add missing apis (#32124)
\"fixcombobox: dialog popup support (#32279)
\"fixcombobox: disabled state (#32308)
\"fixcombobox: escape key behavior (#32364)
\"fixcombobox: highlighting edge cases (#32136)
\"fixcombobox: readonly behavior (#32169)
\"fixcombobox: several small fixes (#32202)
\"fixcombobox: use click instead of pointerup (#32324)
\"fixgrid: fix navigation bugs and add grid behavior unit tests (#32140)
\"fixgrid: rtl navigation (#32170)
\"fixmenu: add expansion delay (#32293)
\"fixmenu: add selectable to inputs (#32131)
\"fixmenu: deferred content import
\"fixmenu: disabled state (#32301)
\"fixmenu: lazy render trigger (#32203)
\"fixmenu: public api cleanup (#32189)
\"fixmenu: rtl text direction (#32254)
\"fixtoolbar: allow developers to wrap widgets (#32341)
\"fixtree: adds rtl keyboard functionality for tree (#32305)
\"fixtree: internal conformance check (#32337)
\"fixtree: only reset selected values if used in combobox (#32329)
\"fixtree: tree item visibility issue (#32156)
\"fixui-patterns: internal conformance fixes (#32102)
\n

cdk

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featoverlay: Allow passing separate X and Y values for the viewportMargin (#29563)
\"fixa11y: remove deprecated factory functions
\"fixoverlay: add DI token to opt out of popovers (#32306)
\"fixoverlay: hide native backdrop
\"fixoverlay: make it easier to set default for overlay directive
\"fixoverlay: remove deprecated variables (#31898)
\"fixoverlay: simplify matching the overlay to the trigger width
\"fixoverlay: simplify public API of overlay directive
\"fixoverlay: update golden file (#32367)
\"fixportal: remove deprecated directives (#32117)
\"fixtable: ensure CdkTable updates view with OnPush and trackBy (#31451)
\"fixtesting: make setContenteditableValue required (#32058)
\n

material

\n

| Commit | Description |

\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from @​angular/cdk's changelog.

\n
\n

21.0.0 "damask-dachshund" (2025-11-19)

\n

Breaking Changes

\n

cdk

\n\n

material

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\nUpdates `@angular/common` from 20.3.12 to 21.0.0\n
\nRelease notes\n

Sourced from @​angular/common's releases.

\n
\n

VSCode Extension: 21.0.0

\n\n

21.0.0

\n

common

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdd experimental support for the Navigation API (#63406)
\"featSupport of optional keys for the KeyValue pipe (#48814)
\"featupdate to cldr 47 (#64032)
\"fixproperly type ngComponentOutlet (#64561)
\"refactorimprove typing of ngComponentOutletContent (#63674)
\"refactorremovengModuleFactory input of NgComponentOutlet (#62838)
\n

compiler

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"fixdon't choke on unbalanced parens in declaration block
\"fixsupport arbitrary nesting in :host-context()
\"fixsupport commas in :host() argument
\"fixsupport complex selectors in :nth-child()
\"fixsupport one additional level of nesting in :host()
\n

compiler-cli

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdds diagnostic for misconfigured @defer triggers (#64069)
\"featenable type checking of host bindings by default (#63654)
\"fixallow value to be set on radio fields
\"fixcapture metadata for undecorated fields (#63957)
\"fixdisallow compiling with the emitDeclarationOnly TS compiler option enabled (#61609)
\"fixdo not flag custom control required inputs as missing when field is present
\"fixinfer type of custom field controls
\"fixinfer types of signal forms set on native inputs
\"fixmake field detection logic more robust
\"fixmissingStructuralDirective diagnostic produces false negatives (#64579)
\"fixremove internal syntax-related flags (#63787)
\"fixreport invalid bindings on form controls
\"fixuse any when checking field interface conformance
\n

core

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdd migration for zoneless by default. (#63042)
\"featAllow passing application providers in bootstrapModule options (#64354)
\"featintroduce BootstrapContext for improved server bootstrapping (#63562)
\"featmake SimpleChanges generic (#64535)
\"featsupport IntersectionObserver options in viewport triggers (#64130)
\"featsupport regular expressions in templates (#63887)
\"fixcontrol not recognized when input has directive injecting ViewContainerRef (#64368)
\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from @​angular/common's changelog.

\n
\n

21.0.0 (2025-11-19)

\n

Blog post "Announcing Angular v21".

\n

Breaking Changes

\n

common

\n\n

compiler-cli

\n\n

core

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\nUpdates `@angular/compiler` from 20.3.12 to 21.0.0\n
\nRelease notes\n

Sourced from @​angular/compiler's releases.

\n
\n

VSCode Extension: 21.0.0

\n\n

21.0.0

\n

common

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdd experimental support for the Navigation API (#63406)
\"featSupport of optional keys for the KeyValue pipe (#48814)
\"featupdate to cldr 47 (#64032)
\"fixproperly type ngComponentOutlet (#64561)
\"refactorimprove typing of ngComponentOutletContent (#63674)
\"refactorremovengModuleFactory input of NgComponentOutlet (#62838)
\n

compiler

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"fixdon't choke on unbalanced parens in declaration block
\"fixsupport arbitrary nesting in :host-context()
\"fixsupport commas in :host() argument
\"fixsupport complex selectors in :nth-child()
\"fixsupport one additional level of nesting in :host()
\n

compiler-cli

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdds diagnostic for misconfigured @defer triggers (#64069)
\"featenable type checking of host bindings by default (#63654)
\"fixallow value to be set on radio fields
\"fixcapture metadata for undecorated fields (#63957)
\"fixdisallow compiling with the emitDeclarationOnly TS compiler option enabled (#61609)
\"fixdo not flag custom control required inputs as missing when field is present
\"fixinfer type of custom field controls
\"fixinfer types of signal forms set on native inputs
\"fixmake field detection logic more robust
\"fixmissingStructuralDirective diagnostic produces false negatives (#64579)
\"fixremove internal syntax-related flags (#63787)
\"fixreport invalid bindings on form controls
\"fixuse any when checking field interface conformance
\n

core

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdd migration for zoneless by default. (#63042)
\"featAllow passing application providers in bootstrapModule options (#64354)
\"featintroduce BootstrapContext for improved server bootstrapping (#63562)
\"featmake SimpleChanges generic (#64535)
\"featsupport IntersectionObserver options in viewport triggers (#64130)
\"featsupport regular expressions in templates (#63887)
\"fixcontrol not recognized when input has directive injecting ViewContainerRef (#64368)
\n\n
\n

... (truncated)

\n
\n
\nChangelog\n

Sourced from @​angular/compiler's changelog.

\n
\n

21.0.0 (2025-11-19)

\n

Blog post "Announcing Angular v21".

\n

Breaking Changes

\n

common

\n\n

compiler-cli

\n\n

core

\n\n\n
\n

... (truncated)

\n
\n
\nCommits\n\n
\n
\n\nUpdates `@angular/core` from 20.3.12 to 21.0.0\n
\nRelease notes\n

Sourced from @​angular/core's releases.

\n
\n

VSCode Extension: 21.0.0

\n\n

21.0.0

\n

common

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdd experimental support for the Navigation API (#63406)
\"featSupport of optional keys for the KeyValue pipe (#48814)
\"featupdate to cldr 47 (#64032)
\"fixproperly type ngComponentOutlet (#64561)
\"refactorimprove typing of ngComponentOutletContent (#63674)
\"refactorremovengModuleFactory input of NgComponentOutlet (#62838)
\n

compiler

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"fixdon't choke on unbalanced parens in declaration block
\"fixsupport arbitrary nesting in :host-context()
\"fixsupport commas in :host() argument
\"fixsupport complex selectors in :nth-child()
\"fixsupport one additional level of nesting in :host()
\n

compiler-cli

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdds diagnostic for misconfigured @defer triggers (#64069)
\"featenable type checking of host bindings by default (#63654)
\"fixallow value to be set on radio fields
\"fixcapture metadata for undecorated fields (#63957)
\"fixdisallow compiling with the emitDeclarationOnly TS compiler option enabled (#61609)
\"fixdo not flag custom control required inputs as missing when field is present
\"fixinfer type of custom field controls
\"fixinfer types of signal forms set on native inputs
\"fixmake field detection logic more robust
\"fixmissingStructuralDirective diagnostic produces false negatives (#64579)
\"fixremove internal syntax-related flags (#63787)
\"fixreport invalid bindings on form controls
\"fixuse any when checking field interface conformance
\n

core

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
CommitDescription
\"featAdd migration for zoneless by default. (#63042)
\"featAllow passing application providers in bootstrapModule options (#64354)
\"featintroduce BootstrapContext for improved server bootstrapping (#63562)
\"featmake SimpleChanges generic (#64535)
\"featsupport IntersectionObserver options in viewport triggers (#64130)
\"featsupport regular expressions in templates (#63887)
\"fixcontrol not recognized when input has directive injecting ViewContainerRef (#64368)
\n