{"id":1308,"name":"@types/jasmine","ecosystem":"npm","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped","issues_count":1096,"created_at":"2025-06-06T15:01:43.021Z","updated_at":"2025-06-06T15:01:43.021Z","purl":"pkg:npm/@types/jasmine","metadata":{"id":1332264,"name":"@types/jasmine","ecosystem":"npm","description":"TypeScript definitions for jasmine","homepage":"https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jasmine","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped","keywords_array":[],"namespace":"types","versions_count":183,"first_release_published_at":"2017-01-10T18:53:48.210Z","latest_release_published_at":"2025-05-05T21:03:09.388Z","latest_release_number":"5.1.8","last_synced_at":"2025-06-06T06:01:51.438Z","created_at":"2022-04-08T21:19:35.771Z","updated_at":"2025-06-06T06:01:51.438Z","registry_url":"https://www.npmjs.com/package/@types/jasmine","install_command":"npm install @types/jasmine","documentation_url":null,"metadata":{"funding":null,"dist-tags":{"ts2.0":"2.5.41","ts2.2":"2.8.8","ts2.1":"2.8.8","ts2.7":"2.8.9","ts2.6":"2.8.9","ts2.5":"2.8.9","ts2.3":"2.8.9","ts2.4":"2.8.9","ts2.9":"3.5.10","ts2.8":"3.5.10","ts3.0":"3.5.12","ts3.1":"3.5.14","ts3.3":"3.6.2","ts3.2":"3.6.2","ts3.4":"3.6.4","ts3.5":"3.7.6","ts3.6":"3.8.2","ts3.7":"3.10.2","ts3.8":"3.10.3","ts3.9":"4.0.3","ts4.0":"4.3.0","ts4.1":"4.3.0","ts4.2":"4.3.1","ts4.4":"4.3.5","ts4.3":"4.3.5","ts4.6":"5.1.4","ts4.5":"5.1.4","ts4.7":"5.1.4","ts4.8":"5.1.4","ts4.9":"5.1.4","ts5.0":"5.1.7","ts5.9":"5.1.8","latest":"5.1.8","ts5.6":"5.1.8","ts5.7":"5.1.8","ts5.8":"5.1.8","ts5.3":"5.1.8","ts5.2":"5.1.8","ts5.1":"5.1.8","ts5.4":"5.1.8","ts5.5":"5.1.8"}},"repo_metadata":{"uuid":"6093316","full_name":"DefinitelyTyped/DefinitelyTyped","owner":"DefinitelyTyped","description":"The repository for high quality TypeScript type definitions.","archived":false,"fork":false,"pushed_at":"2024-04-13T19:41:31.000Z","size":701126,"stargazers_count":47049,"open_issues_count":681,"forks_count":29778,"subscribers_count":657,"default_branch":"master","last_synced_at":"2024-04-13T20:55:43.631Z","etag":null,"topics":["definition","dts","hacktoberfest","types","typescript","typescript-definitions","typings"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DefinitelyTyped.png","metadata":{"files":{"readme":"README.es.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"docs/support-window.json","governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2012-10-05T16:39:45.000Z","updated_at":"2024-04-14T21:27:19.457Z","dependencies_parsed_at":"2023-09-23T13:14:02.685Z","dependency_job_id":"a0b294f6-d3d3-40a5-97c9-e020c7e4ed9e","html_url":"https://github.com/DefinitelyTyped/DefinitelyTyped","commit_stats":{"total_commits":66553,"total_committers":19548,"mean_commits":3.404593820339677,"dds":0.9821946418643788,"last_synced_commit":"e7b498449af5690bf993dbc1fa68d1989a8a1858"},"previous_names":["borisyankov/definitelytyped"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefinitelyTyped","download_url":"https://codeload.github.com/DefinitelyTyped/DefinitelyTyped/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":198295118,"owners_count":13453496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"DefinitelyTyped","name":"DefinitelyTyped","uuid":"3637556","kind":"organization","description":"Types for the masses","email":null,"website":"http://definitelytyped.org/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/3637556?v=4","repositories_count":22,"last_synced_at":"2024-04-14T08:12:39.403Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/DefinitelyTyped","funding_links":[],"total_stars":48739,"followers":576,"following":0,"created_at":"2022-11-02T16:17:30.215Z","updated_at":"2024-04-14T08:12:42.761Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefinitelyTyped","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefinitelyTyped/repositories"},"tags":[{"name":"0.1.450","sha":"47e9cf6d8947e46a82bb09bbcc3dd74a3ac0ffa1","kind":"commit","published_at":"2019-09-04T17:44:34.000Z","download_url":"https://codeload.github.com/DefinitelyTyped/DefinitelyTyped/tar.gz/0.1.450","html_url":"https://github.com/DefinitelyTyped/DefinitelyTyped/releases/tag/0.1.450","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/tags/0.1.450","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefinitelyTyped%2FDefinitelyTyped/tags/0.1.450/manifests"}]},"repo_metadata_updated_at":"2024-09-08T16:12:58.344Z","dependent_packages_count":23664,"downloads":11963546,"downloads_period":"last-month","dependent_repos_count":716184,"rankings":{"downloads":0.08587715701234883,"dependent_repos_count":0.04114596987969356,"dependent_packages_count":0.004145407448736996,"stargazers_count":0.15957102647276888,"forks_count":0.01988685778403825,"docker_downloads_count":0.14676983129312066,"average":0.07623270831511786},"purl":"pkg:npm/%40types/jasmine","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/npm/@types/jasmine","docker_dependents_count":756,"docker_downloads_count":129768198,"usage_url":"https://repos.ecosyste.ms/usage/npm/@types/jasmine","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/npm/@types/jasmine/dependencies","status":null,"funding_links":[],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@types%2Fjasmine/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@types%2Fjasmine/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@types%2Fjasmine/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@types%2Fjasmine/related_packages","maintainers":[{"uuid":"types","login":"types","name":null,"email":"ts-npm-types@microsoft.com","url":null,"packages_count":11279,"html_url":"https://www.npmjs.com/~types","role":null,"created_at":"2022-11-10T11:05:00.846Z","updated_at":"2022-11-10T11:05:00.846Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/maintainers/types/packages"}],"registry":{"name":"npmjs.org","url":"https://registry.npmjs.org","ecosystem":"npm","default":true,"packages_count":5006535,"maintainers_count":1012931,"namespaces_count":295512,"keywords_count":700181,"github":"npm","metadata":{"funded_packages_count":150239},"icon_url":"https://github.com/npm.png","created_at":"2022-04-04T15:19:23.081Z","updated_at":"2025-06-06T05:58:05.971Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/namespaces"}},"unique_repositories_count":467,"unique_repositories_count_past_30_days":2,"recent_issues":[{"uuid":"4528145858","node_id":"PR_kwDOSjXKT87fm7lg","number":13,"state":"open","title":"chore(deps): bump @types/jasmine from 5.1.15 to 6.0.0 in /frontend","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-26T23:14:58.000Z","updated_at":"2026-05-26T23:14:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/frontend","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/412010-PIOTTI/MyCar/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/412010-PIOTTI%2FMyCar/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"},{"uuid":"4423280268","node_id":"PR_kwDOSRFYos7aX55t","number":12,"state":"closed","title":"deps(frontend)(deps): bump the major group in /frontend with 46 updates","user":"dependabot[bot]","labels":["invalid","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-11T18:29:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T18:28:48.000Z","updated_at":"2026-05-11T18:29:18.000Z","time_to_close":21,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(frontend)(deps): bump","group_name":"major","update_count":46,"packages":[{"name":"@angular-devkit/build-angular","old_version":"20.3.25","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/animations","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"20.2.14","new_version":"21.2.10","repository_url":"https://github.com/angular/components"},{"name":"@angular/cli","old_version":"20.3.25","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/common","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler-cli","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"20.2.14","new_version":"21.2.10","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@fortawesome/fontawesome-svg-core","old_version":"1.2.36","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-brands-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-regular-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-solid-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@ngx-translate/core","old_version":"15.0.0","new_version":"17.0.0","repository_url":"https://github.com/ngx-translate/core"},{"name":"@ngx-translate/http-loader","old_version":"8.0.0","new_version":"17.0.0","repository_url":"https://github.com/ngx-translate/core"},{"name":"@wagmi/core","old_version":"0.5.8","new_version":"3.4.10","repository_url":"https://github.com/wevm/wagmi"},{"name":"@winarg/ngx-text-diff","old_version":"19.0.1","new_version":"21.0.0","repository_url":"https://github.com/winarg/ngx-text-diff"},{"name":"codemirror","old_version":"5.65.21","new_version":"6.0.2","repository_url":"https://github.com/codemirror/basic-setup"},{"name":"ethers","old_version":"5.8.0","new_version":"6.16.0","repository_url":"https://github.com/ethers-io/ethers.js"},{"name":"flag-icons","old_version":"6.15.0","new_version":"7.5.0","repository_url":"https://github.com/lipis/flag-icons"},{"name":"jwt-decode","old_version":"2.2.0","new_version":"4.0.0","repository_url":"https://github.com/auth0/jwt-decode"},{"name":"material-icons","old_version":"0.3.1","new_version":"1.13.14","repository_url":"https://github.com/marella/material-icons"},{"name":"ng-qrcode","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/mnahkies/ng-qrcode"},{"name":"ngx-window-token","old_version":"6.0.0","new_version":"7.0.0","repository_url":"https://github.com/maxisam/ngx-window-token"},{"name":"snarkdown","old_version":"1.2.2","new_version":"2.0.0","repository_url":"https://github.com/developit/snarkdown"},{"name":"socket.io-client","old_version":"3.1.3","new_version":"4.8.3","repository_url":"https://github.com/socketio/socket.io"},{"name":"typescript","old_version":"5.8.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"@angular/language-service","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@eslint/js","old_version":"9.33.0","new_version":"10.0.1","repository_url":"https://github.com/eslint/eslint"},{"name":"@types/express-serve-static-core","old_version":"4.19.8","new_version":"5.1.1","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/jwt-decode","old_version":"2.2.1","new_version":"3.1.0","repository_url":"https://github.com/auth0/jwt-decode"},{"name":"@types/node","old_version":"20.19.40","new_version":"25.6.2","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/socket.io-client","old_version":"1.4.36","new_version":"3.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"angular-eslint","old_version":"20.7.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.4","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine","old_version":"5.13.0","new_version":"6.2.0","repository_url":"https://github.com/jasmine/jasmine-npm"},{"name":"jasmine-core","old_version":"5.9.0","new_version":"6.2.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"karma-jasmine-html-reporter","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/dfederm/karma-jasmine-html-reporter"},{"name":"stylelint","old_version":"16.26.1","new_version":"17.11.0","repository_url":"https://github.com/stylelint/stylelint"},{"name":"stylelint-config-sass-guidelines","old_version":"12.1.0","new_version":"13.0.0","repository_url":"https://github.com/bjankord/stylelint-config-sass-guidelines"},{"name":"stylelint-scss","old_version":"6.14.0","new_version":"7.1.0","repository_url":"https://github.com/stylelint-scss/stylelint-scss"}],"path":"/frontend","ecosystem":"npm"},"body":"Bumps the major group in /frontend with 46 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `20.3.25` | `21.2.10` |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `20.3.20` | `21.2.12` |\n| [@angular/cdk](https://github.com/angular/components) | `20.2.14` | `21.2.10` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `20.3.25` | `21.2.10` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `20.3.20` | `21.2.12` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `20.3.20` | `21.2.12` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `20.3.20` | `21.2.12` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `20.3.20` | `21.2.12` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `20.3.20` | `21.2.12` |\n| [@angular/material](https://github.com/angular/components) | `20.2.14` | `21.2.10` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `20.3.20` | `21.2.12` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `20.3.20` | `21.2.12` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `20.3.20` | `21.2.12` |\n| [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) | `1.2.36` | `7.2.0` |\n| [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@ngx-translate/core](https://github.com/ngx-translate/core) | `15.0.0` | `17.0.0` |\n| [@ngx-translate/http-loader](https://github.com/ngx-translate/core) | `8.0.0` | `17.0.0` |\n| [@wagmi/core](https://github.com/wevm/wagmi/tree/HEAD/packages/core) | `0.5.8` | `3.4.10` |\n| [@winarg/ngx-text-diff](https://github.com/winarg/ngx-text-diff) | `19.0.1` | `21.0.0` |\n| [codemirror](https://github.com/codemirror/basic-setup) | `5.65.21` | `6.0.2` |\n| [ethers](https://github.com/ethers-io/ethers.js) | `5.8.0` | `6.16.0` |\n| [flag-icons](https://github.com/lipis/flag-icons) | `6.15.0` | `7.5.0` |\n| [jwt-decode](https://github.com/auth0/jwt-decode) | `2.2.0` | `4.0.0` |\n| [material-icons](https://github.com/marella/material-icons) | `0.3.1` | `1.13.14` |\n| [ng-qrcode](https://github.com/mnahkies/ng-qrcode) | `20.0.1` | `21.0.0` |\n| [ngx-window-token](https://github.com/maxisam/ngx-window-token) | `6.0.0` | `7.0.0` |\n| [snarkdown](https://github.com/developit/snarkdown) | `1.2.2` | `2.0.0` |\n| [socket.io-client](https://github.com/socketio/socket.io) | `3.1.3` | `4.8.3` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.8.3` | `6.0.3` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `20.3.20` | `21.2.12` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.33.0` | `10.0.1` |\n| [@types/express-serve-static-core](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express-serve-static-core) | `4.19.8` | `5.1.1` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.15` | `6.0.0` |\n| [@types/jwt-decode](https://github.com/auth0/jwt-decode) | `2.2.1` | `3.1.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.19.40` | `25.6.2` |\n| [@types/socket.io-client](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io-client) | `1.4.36` | `3.0.0` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `20.7.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.4` | `10.3.0` |\n| [jasmine](https://github.com/jasmine/jasmine-npm) | `5.13.0` | `6.2.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.9.0` | `6.2.0` |\n| [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) | `2.1.0` | `2.2.0` |\n| [stylelint](https://github.com/stylelint/stylelint) | `16.26.1` | `17.11.0` |\n| [stylelint-config-sass-guidelines](https://github.com/bjankord/stylelint-config-sass-guidelines) | `12.1.0` | `13.0.0` |\n| [stylelint-scss](https://github.com/stylelint-scss/stylelint-scss) | `6.14.0` | `7.1.0` |\n\nUpdates `@angular-devkit/build-angular` from 20.3.25 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e@​angular-devkit/build-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003e\u003cimg src=\"https://img.shields.io/badge/bb8611913-fix-green\" alt=\"fix - bb8611913\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestrict MCP workspace access to allowed client roots during resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003e\u003cimg src=\"https://img.shields.io/badge/e7abeb5c7-fix-green\" alt=\"fix - e7abeb5c7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e\u003cimg src=\"https://img.shields.io/badge/233deef01-fix-green\" alt=\"fix - 233deef01\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003cimg src=\"https://img.shields.io/badge/7cea9885c-fix-green\" alt=\"fix - 7cea9885c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b1a5b743-fix-green\" alt=\"fix - 5b1a5b743\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e\u003cimg src=\"https://img.shields.io/badge/94023f62c-fix-green\" alt=\"fix - 94023f62c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003cimg src=\"https://img.shields.io/badge/5ffe5c309-fix-green\" alt=\"fix - 5ffe5c309\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003cimg src=\"https://img.shields.io/badge/930ada9b7-fix-green\" alt=\"fix - 930ada9b7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003cimg src=\"https://img.shields.io/badge/0dc8a440c-fix-green\" alt=\"fix - 0dc8a440c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e@​angular-devkit/build-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003ebb8611913\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict MCP workspace access to allowed client roots during resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.25 (2026-04-30)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/49ae0ad2d452ab7d7510297919125fe00081fa49\"\u003e49ae0ad2d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupgrade postcss to 8.5.12\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/2d53feca58730def7e2fb79f9cabfd1c32b9351d\"\u003e2d53feca5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate esbuild to \u003ccode\u003e0.28.0\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/02ce8bf2695e71c1684e231151b4ab5ccba94869\"\u003e02ce8bf26\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0572df06457a46276cf229c7c50ccb59167a75d8\"\u003e0572df064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/d6121b5e87796b61dd0e2157a5ce4e8f3d33e915\"\u003ed6121b5e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/48eab1fc0bd83c6f87a015252283579ebbd7d0fb\"\u003e48eab1fc0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/64cbd623af655487945ecc2d26afdaea20989330\"\u003e\u003ccode\u003e64cbd62\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6f26f4fb9aa039a1afec76e172f58a962615e236\"\u003e\u003ccode\u003e6f26f4f\u003c/code\u003e\u003c/a\u003e build: lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/111dcc3118d46c60143b1a10bf919a0ef76ec54a\"\u003e\u003ccode\u003e111dcc3\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): re-add resolveModule for find examples tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5418ebbdde7d8b66e62fb950cf22627fa791bd07\"\u003e\u003ccode\u003e5418ebb\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a2c8029157954e26ee6217d0ebf27c78fa6afa32\"\u003e\u003ccode\u003ea2c8029\u003c/code\u003e\u003c/a\u003e refactor: configure Gemini reviewer to ignore lockfile and changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7130c92547b91e2c5ebff2daa8122e77ab93e99f\"\u003e\u003ccode\u003e7130c92\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): integrate MCP roots into Host abstraction\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003e\u003ccode\u003ebb86119\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): restrict MCP workspace access to allowed client roots duri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/564b1084e2bfb0813f374f1bff6f6ec5867b4bc2\"\u003e\u003ccode\u003e564b108\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dbda92b6dcc1762ff780327c4e25029c0a9104e7\"\u003e\u003ccode\u003edbda92b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/828c17508fee82c2b0273f3501188eb75681d169\"\u003e\u003ccode\u003e828c175\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v20.3.25...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/animations` from 20.3.20 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/animations's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70332b04532311276dd025ba00e8fcb6c1350880\"\u003e\u003ccode\u003e70332b0\u003c/code\u003e\u003c/a\u003e fix(core): pass element removal property through in all locations (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64565\"\u003e#64565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b257b36590677d436d45e98cefe7ca886c7bd57\"\u003e\u003ccode\u003e2b257b3\u003c/code\u003e\u003c/a\u003e fix(animations): account for \u003ccode\u003eElement.animate\u003c/code\u003e exceptions (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64506\"\u003e#64506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/dde5badb7133826187314e07fcdc578297aabbc9\"\u003e\u003ccode\u003edde5bad\u003c/code\u003e\u003c/a\u003e fix(core): prevent animations renderer from impacting \u003ccode\u003eanimate.leave\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63921\"\u003e#63921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c3576506b3c13389e18fa4c0c29bdf536f604142\"\u003e\u003ccode\u003ec357650\u003c/code\u003e\u003c/a\u003e refactor(core): Update tests for zoneless by default (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63668\"\u003e#63668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/021ead5399ab1136da160c7348ec8555ef5ee8fd\"\u003e\u003ccode\u003e021ead5\u003c/code\u003e\u003c/a\u003e refactor(animations): remove dependency on \u003ccode\u003e@angular/common\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63248\"\u003e#63248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 20.2.14 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003cimg src=\"https://img.shields.io/badge/48973661e-fix-green\" alt=\"fix - 48973661e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e@​angular/cdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 \u0026quot;metal-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e48973661e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/pull/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 \u0026quot;astatine-agriculture\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6ec07bc0cbe39be48faaf6021caecf2d0037df1f\"\u003e6ec07bc0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33081\"\u003e#33081\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/05419c5522305275f45b33e844adb8f063454bc2\"\u003e05419c552\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1a5d5d101aa0c3d3113ca8e77f0dbe4175afe655\"\u003e1a5d5d101\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b916ef907fc15fd889ff0fe6fdb7c054331c906b\"\u003eb916ef907\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/867ba993b3baf35868d7c898e77289870316bbb9\"\u003e867ba993b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebottom-sheet:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf3596b53ba1cf118ec06343f8a7772e0fb0e55d\"\u003ebf3596b53\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cb9148dca63d4363bdd8b6d77cee46f93c5d2556\"\u003ecb9148dca\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e44ff8318911927624d90e0d2fcba6ee94ec5ff7\"\u003ee44ff8318\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd support for the gmp-click event (\u003ca href=\"https://redirect.github.com/angular/components/pull/33147\"\u003e#33147\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/583da8a564dcb667cb8928e79d286eadee0a5013\"\u003e\u003ccode\u003e583da8a\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/babfbb7430547d5f4558174aec1a07ce6c67a26f\"\u003e\u003ccode\u003ebabfbb7\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33205\"\u003e#33205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e08fdf2a6a120078b512043bf5804bc3c7f9716a\"\u003e\u003ccode\u003ee08fdf2\u003c/code\u003e\u003c/a\u003e build: fix failing test (\u003ca href=\"https://redirect.github.com/angular/components/issues/33212\"\u003e#33212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/09e89fa188f157c0892019a461459cd9a252a673\"\u003e\u003ccode\u003e09e89fa\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33201\"\u003e#33201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003ccode\u003e4897366\u003c/code\u003e\u003c/a\u003e fix(aria/menu): do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/20.2.14...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cli` from 20.3.25 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e@​angular/cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003e\u003cimg src=\"https://img.shields.io/badge/bb8611913-fix-green\" alt=\"fix - bb8611913\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestrict MCP workspace access to allowed client roots during resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003e\u003cimg src=\"https://img.shields.io/badge/e7abeb5c7-fix-green\" alt=\"fix - e7abeb5c7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e\u003cimg src=\"https://img.shields.io/badge/233deef01-fix-green\" alt=\"fix - 233deef01\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003cimg src=\"https://img.shields.io/badge/7cea9885c-fix-green\" alt=\"fix - 7cea9885c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b1a5b743-fix-green\" alt=\"fix - 5b1a5b743\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e\u003cimg src=\"https://img.shields.io/badge/94023f62c-fix-green\" alt=\"fix - 94023f62c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003cimg src=\"https://img.shields.io/badge/5ffe5c309-fix-green\" alt=\"fix - 5ffe5c309\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003cimg src=\"https://img.shields.io/badge/930ada9b7-fix-green\" alt=\"fix - 930ada9b7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003cimg src=\"https://img.shields.io/badge/0dc8a440c-fix-green\" alt=\"fix - 0dc8a440c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e@​angular/cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003ebb8611913\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict MCP workspace access to allowed client roots during resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.25 (2026-04-30)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/49ae0ad2d452ab7d7510297919125fe00081fa49\"\u003e49ae0ad2d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupgrade postcss to 8.5.12\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/2d53feca58730def7e2fb79f9cabfd1c32b9351d\"\u003e2d53feca5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate esbuild to \u003ccode\u003e0.28.0\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/02ce8bf2695e71c1684e231151b4ab5ccba94869\"\u003e02ce8bf26\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0572df06457a46276cf229c7c50ccb59167a75d8\"\u003e0572df064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/d6121b5e87796b61dd0e2157a5ce4e8f3d33e915\"\u003ed6121b5e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/48eab1fc0bd83c6f87a015252283579ebbd7d0fb\"\u003e48eab1fc0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/64cbd623af655487945ecc2d26afdaea20989330\"\u003e\u003ccode\u003e64cbd62\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6f26f4fb9aa039a1afec76e172f58a962615e236\"\u003e\u003ccode\u003e6f26f4f\u003c/code\u003e\u003c/a\u003e build: lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/111dcc3118d46c60143b1a10bf919a0ef76ec54a\"\u003e\u003ccode\u003e111dcc3\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): re-add resolveModule for find examples tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5418ebbdde7d8b66e62fb950cf22627fa791bd07\"\u003e\u003ccode\u003e5418ebb\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a2c8029157954e26ee6217d0ebf27c78fa6afa32\"\u003e\u003ccode\u003ea2c8029\u003c/code\u003e\u003c/a\u003e refactor: configure Gemini reviewer to ignore lockfile and changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7130c92547b91e2c5ebff2daa8122e77ab93e99f\"\u003e\u003ccode\u003e7130c92\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): integrate MCP roots into Host abstraction\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003e\u003ccode\u003ebb86119\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): restrict MCP workspace access to allowed client roots duri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/564b1084e2bfb0813f374f1bff6f6ec5867b4bc2\"\u003e\u003ccode\u003e564b108\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dbda92b6dcc1762ff780327c4e25029c0a9104e7\"\u003e\u003ccode\u003edbda92b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/828c17508fee82c2b0273f3501188eb75681d169\"\u003e\u003ccode\u003e828c175\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v20.3.25...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 20.3.20 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/common's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 20.3.20 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/compiler's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/...\n\n_Description has been truncated_","html_url":"https://github.com/mo0om/juice-shop/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mo0om%2Fjuice-shop/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"4360476368","node_id":"PR_kwDOSRFYos7XOQC-","number":6,"state":"closed","title":"deps(frontend)(deps): bump the major group in /frontend with 46 updates","user":"dependabot[bot]","labels":["invalid","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-04-30T18:42:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-30T18:41:31.000Z","updated_at":"2026-04-30T18:42:41.000Z","time_to_close":61,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(frontend)(deps): bump","group_name":"major","update_count":46,"packages":[{"name":"@angular-devkit/build-angular","old_version":"20.3.25","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/animations","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"20.2.14","new_version":"21.2.9","repository_url":"https://github.com/angular/components"},{"name":"@angular/cli","old_version":"20.3.25","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/common","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler-cli","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"20.2.14","new_version":"21.2.9","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@fortawesome/fontawesome-svg-core","old_version":"1.2.36","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-brands-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-regular-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-solid-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@ngx-translate/core","old_version":"15.0.0","new_version":"17.0.0","repository_url":"https://github.com/ngx-translate/core"},{"name":"@ngx-translate/http-loader","old_version":"8.0.0","new_version":"17.0.0","repository_url":"https://github.com/ngx-translate/core"},{"name":"@wagmi/core","old_version":"0.5.8","new_version":"3.4.7","repository_url":"https://github.com/wevm/wagmi"},{"name":"@winarg/ngx-text-diff","old_version":"19.0.1","new_version":"21.0.0","repository_url":"https://github.com/winarg/ngx-text-diff"},{"name":"codemirror","old_version":"5.65.21","new_version":"6.0.2","repository_url":"https://github.com/codemirror/basic-setup"},{"name":"ethers","old_version":"5.8.0","new_version":"6.16.0","repository_url":"https://github.com/ethers-io/ethers.js"},{"name":"flag-icons","old_version":"6.15.0","new_version":"7.5.0","repository_url":"https://github.com/lipis/flag-icons"},{"name":"jwt-decode","old_version":"2.2.0","new_version":"4.0.0","repository_url":"https://github.com/auth0/jwt-decode"},{"name":"material-icons","old_version":"0.3.1","new_version":"1.13.14","repository_url":"https://github.com/marella/material-icons"},{"name":"ng-qrcode","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/mnahkies/ng-qrcode"},{"name":"ngx-window-token","old_version":"6.0.0","new_version":"7.0.0","repository_url":"https://github.com/maxisam/ngx-window-token"},{"name":"snarkdown","old_version":"1.2.2","new_version":"2.0.0","repository_url":"https://github.com/developit/snarkdown"},{"name":"socket.io-client","old_version":"3.1.3","new_version":"4.8.3","repository_url":"https://github.com/socketio/socket.io"},{"name":"typescript","old_version":"5.8.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"@angular/language-service","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@eslint/js","old_version":"9.33.0","new_version":"10.0.1","repository_url":"https://github.com/eslint/eslint"},{"name":"@types/express-serve-static-core","old_version":"4.19.8","new_version":"5.1.1","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/jwt-decode","old_version":"2.2.1","new_version":"3.1.0","repository_url":"https://github.com/auth0/jwt-decode"},{"name":"@types/node","old_version":"20.19.39","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/socket.io-client","old_version":"1.4.36","new_version":"3.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"angular-eslint","old_version":"20.7.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.4","new_version":"10.2.1","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine","old_version":"5.13.0","new_version":"6.2.0","repository_url":"https://github.com/jasmine/jasmine-npm"},{"name":"jasmine-core","old_version":"5.9.0","new_version":"6.2.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"karma-jasmine-html-reporter","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/dfederm/karma-jasmine-html-reporter"},{"name":"stylelint","old_version":"16.26.1","new_version":"17.9.1","repository_url":"https://github.com/stylelint/stylelint"},{"name":"stylelint-config-sass-guidelines","old_version":"12.1.0","new_version":"13.0.0","repository_url":"https://github.com/bjankord/stylelint-config-sass-guidelines"},{"name":"stylelint-scss","old_version":"6.14.0","new_version":"7.0.0","repository_url":"https://github.com/stylelint-scss/stylelint-scss"}],"path":"/frontend","ecosystem":"npm"},"body":"Bumps the major group in /frontend with 46 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `20.3.25` | `21.2.9` |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `20.3.19` | `21.2.11` |\n| [@angular/cdk](https://github.com/angular/components) | `20.2.14` | `21.2.9` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `20.3.25` | `21.2.9` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `20.3.19` | `21.2.11` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `20.3.19` | `21.2.11` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `20.3.19` | `21.2.11` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `20.3.19` | `21.2.11` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `20.3.19` | `21.2.11` |\n| [@angular/material](https://github.com/angular/components) | `20.2.14` | `21.2.9` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `20.3.19` | `21.2.11` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `20.3.19` | `21.2.11` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `20.3.19` | `21.2.11` |\n| [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) | `1.2.36` | `7.2.0` |\n| [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@ngx-translate/core](https://github.com/ngx-translate/core) | `15.0.0` | `17.0.0` |\n| [@ngx-translate/http-loader](https://github.com/ngx-translate/core) | `8.0.0` | `17.0.0` |\n| [@wagmi/core](https://github.com/wevm/wagmi/tree/HEAD/packages/core) | `0.5.8` | `3.4.7` |\n| [@winarg/ngx-text-diff](https://github.com/winarg/ngx-text-diff) | `19.0.1` | `21.0.0` |\n| [codemirror](https://github.com/codemirror/basic-setup) | `5.65.21` | `6.0.2` |\n| [ethers](https://github.com/ethers-io/ethers.js) | `5.8.0` | `6.16.0` |\n| [flag-icons](https://github.com/lipis/flag-icons) | `6.15.0` | `7.5.0` |\n| [jwt-decode](https://github.com/auth0/jwt-decode) | `2.2.0` | `4.0.0` |\n| [material-icons](https://github.com/marella/material-icons) | `0.3.1` | `1.13.14` |\n| [ng-qrcode](https://github.com/mnahkies/ng-qrcode) | `20.0.1` | `21.0.0` |\n| [ngx-window-token](https://github.com/maxisam/ngx-window-token) | `6.0.0` | `7.0.0` |\n| [snarkdown](https://github.com/developit/snarkdown) | `1.2.2` | `2.0.0` |\n| [socket.io-client](https://github.com/socketio/socket.io) | `3.1.3` | `4.8.3` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.8.3` | `6.0.3` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `20.3.19` | `21.2.11` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.33.0` | `10.0.1` |\n| [@types/express-serve-static-core](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express-serve-static-core) | `4.19.8` | `5.1.1` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.15` | `6.0.0` |\n| [@types/jwt-decode](https://github.com/auth0/jwt-decode) | `2.2.1` | `3.1.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.19.39` | `25.6.0` |\n| [@types/socket.io-client](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io-client) | `1.4.36` | `3.0.0` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `20.7.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.4` | `10.2.1` |\n| [jasmine](https://github.com/jasmine/jasmine-npm) | `5.13.0` | `6.2.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.9.0` | `6.2.0` |\n| [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) | `2.1.0` | `2.2.0` |\n| [stylelint](https://github.com/stylelint/stylelint) | `16.26.1` | `17.9.1` |\n| [stylelint-config-sass-guidelines](https://github.com/bjankord/stylelint-config-sass-guidelines) | `12.1.0` | `13.0.0` |\n| [stylelint-scss](https://github.com/stylelint-scss/stylelint-scss) | `6.14.0` | `7.0.0` |\n\nUpdates `@angular-devkit/build-angular` from 20.3.25 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003e\u003cimg src=\"https://img.shields.io/badge/e7abeb5c7-fix-green\" alt=\"fix - e7abeb5c7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e\u003cimg src=\"https://img.shields.io/badge/233deef01-fix-green\" alt=\"fix - 233deef01\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003cimg src=\"https://img.shields.io/badge/7cea9885c-fix-green\" alt=\"fix - 7cea9885c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b1a5b743-fix-green\" alt=\"fix - 5b1a5b743\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e\u003cimg src=\"https://img.shields.io/badge/94023f62c-fix-green\" alt=\"fix - 94023f62c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003cimg src=\"https://img.shields.io/badge/5ffe5c309-fix-green\" alt=\"fix - 5ffe5c309\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003cimg src=\"https://img.shields.io/badge/930ada9b7-fix-green\" alt=\"fix - 930ada9b7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003cimg src=\"https://img.shields.io/badge/0dc8a440c-fix-green\" alt=\"fix - 0dc8a440c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003cimg src=\"https://img.shields.io/badge/365cce81d-fix-green\" alt=\"fix - 365cce81d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003cimg src=\"https://img.shields.io/badge/9f74660c3-fix-green\" alt=\"fix - 9f74660c3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e233deef01\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e7cea9885c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e5b1a5b743\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003ee7abeb5c7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e94023f62c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e5ffe5c309\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e930ada9b7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e0dc8a440c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/564b1084e2bfb0813f374f1bff6f6ec5867b4bc2\"\u003e\u003ccode\u003e564b108\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dbda92b6dcc1762ff780327c4e25029c0a9104e7\"\u003e\u003ccode\u003edbda92b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/828c17508fee82c2b0273f3501188eb75681d169\"\u003e\u003ccode\u003e828c175\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a887b94de4b3677efd2809d26971535621387cb6\"\u003e\u003ccode\u003ea887b94\u003c/code\u003e\u003c/a\u003e build: lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/56d19be3b0045eb7d574fc34cfcea9ac502a8a0f\"\u003e\u003ccode\u003e56d19be\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f2f485173ffdf387bcb2db19bda71d3ebe9fe52d\"\u003e\u003ccode\u003ef2f4851\u003c/code\u003e\u003c/a\u003e build: update dependency postcss to v8.5.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003ccode\u003e5ffe5c3\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): add support for configuring trusted proxy headers via envi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003ccode\u003e930ada9\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): decode route segments when building and matching route tree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003ccode\u003e0dc8a44\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): use router to normalize URLs for comparison\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003ccode\u003e7cea988\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): introduce initial package manager workspace awareness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v20.3.25...v21.2.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/animations` from 20.3.19 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70332b04532311276dd025ba00e8fcb6c1350880\"\u003e\u003ccode\u003e70332b0\u003c/code\u003e\u003c/a\u003e fix(core): pass element removal property through in all locations (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64565\"\u003e#64565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b257b36590677d436d45e98cefe7ca886c7bd57\"\u003e\u003ccode\u003e2b257b3\u003c/code\u003e\u003c/a\u003e fix(animations): account for \u003ccode\u003eElement.animate\u003c/code\u003e exceptions (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64506\"\u003e#64506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/dde5badb7133826187314e07fcdc578297aabbc9\"\u003e\u003ccode\u003edde5bad\u003c/code\u003e\u003c/a\u003e fix(core): prevent animations renderer from impacting \u003ccode\u003eanimate.leave\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63921\"\u003e#63921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c3576506b3c13389e18fa4c0c29bdf536f604142\"\u003e\u003ccode\u003ec357650\u003c/code\u003e\u003c/a\u003e refactor(core): Update tests for zoneless by default (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63668\"\u003e#63668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/021ead5399ab1136da160c7348ec8555ef5ee8fd\"\u003e\u003ccode\u003e021ead5\u003c/code\u003e\u003c/a\u003e refactor(animations): remove dependency on \u003ccode\u003e@angular/common\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63248\"\u003e#63248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 20.2.14 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 \u0026quot;v22-0-0-next-6\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/91a4932f65e02ce7087cb38cc0198b6f1f993242\"\u003e91a4932f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecombobox:\u003c/strong\u003e increases autocomplete demo's  placeholder text c… (\u003ca href=\"https://redirect.github.com/angular/components/pull/33084\"\u003e#33084\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.8 \u0026quot;v21-2-8\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 \u0026quot;carbon-steel\u0026quot; (2026-04-16)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d91f46b4c522159e025d3b94b653981f344a4fdf\"\u003ed91f46b4c5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eaccordion:\u003c/strong\u003e introduce accordion harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33046\"\u003e#33046\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1885d35346e05341532aed56ac476f9a9eae179b\"\u003e1885d35346\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elistbox:\u003c/strong\u003e introduce listbox harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33064\"\u003e#33064\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75fae5275c5702e64477da6a2ac8a14428623c8b\"\u003e75fae5275c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e introduce menu harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33067\"\u003e#33067\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c25e6252ecf3b5a6472151a8fca4af093b3322e6\"\u003ec25e6252ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33079\"\u003e#33079\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a49508bacf419f2e8f0545158de1f951f3ba1c1a\"\u003ea49508bacf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etoolbar:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33068\"\u003e#33068\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/30f223972870c3016e8e14f4bafb913d22117e20\"\u003e30f2239728\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33066\"\u003e#33066\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/440cb16064a4daf50437e806057403cf80c52bd6\"\u003e440cb16064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eautocomplete:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/348c3c89d511ab5f74fda95ef0f0ae7a332527fb\"\u003e348c3c89d5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1b6052fbeaab90a245c86762fea18be4c262cb9a\"\u003e1b6052fbea\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/87340842401d880d998f03f94f729bb074715d16\"\u003e\u003ccode\u003e8734084\u003c/code\u003e\u003c/a\u003e docs(material/tooltip): update tooltip-delay example layout styles (\u003ca href=\"https://redirect.github.com/angular/components/issues/33098\"\u003e#33098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f746b910247b385e29754b237e44dc2d4b0682df\"\u003e\u003ccode\u003ef746b91\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fixed typo in \u003ccode\u003ecdkTreeNodeTypeaheadLabel\u003c/code\u003e input de...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/29af0806975b3f288484f83f25f795538f01a71d\"\u003e\u003ccode\u003e29af080\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fixed typo in ssrSafeIsHTMLTextAreaElement functio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c02421cc23447e8bac194e332027e38cc58877\"\u003e\u003ccode\u003ea6c0242\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33154\"\u003e#33154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b5e5b8a88e6171e5eadff13fe07f4e38aeffa5c5\"\u003e\u003ccode\u003eb5e5b8a\u003c/code\u003e\u003c/a\u003e build: update devinfra digest to c4d0c37 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33144\"\u003e#33144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/33106c6af65daf5caf1141e8d1e0f29c2c803762\"\u003e\u003ccode\u003e33106c6\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (takeover \u003ca href=\"https://redirect.github.com/angular/components/issues/33111\"\u003e#33111\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/angular/components/issues/33135\"\u003e#33135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003ccode\u003e3a3852d\u003c/code\u003e\u003c/a\u003e fix(cdk/tree): enter/space key on child node should not toggle parent node ex...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003ccode\u003e51271c6\u003c/code\u003e\u003c/a\u003e fix(material/stepper): allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/43b5e11eabf3de1d98fb7bab663cf77b7b28b520\"\u003e\u003ccode\u003e43b5e11\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33133\"\u003e#33133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/20.2.14...v21.2.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cli` from 20.3.25 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003e\u003cimg src=\"https://img.shields.io/badge/e7abeb5c7-fix-green\" alt=\"fix - e7abeb5c7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e\u003cimg src=\"https://img.shields.io/badge/233deef01-fix-green\" alt=\"fix - 233deef01\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003cimg src=\"https://img.shields.io/badge/7cea9885c-fix-green\" alt=\"fix - 7cea9885c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b1a5b743-fix-green\" alt=\"fix - 5b1a5b743\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e\u003cimg src=\"https://img.shields.io/badge/94023f62c-fix-green\" alt=\"fix - 94023f62c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003cimg src=\"https://img.shields.io/badge/5ffe5c309-fix-green\" alt=\"fix - 5ffe5c309\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003cimg src=\"https://img.shields.io/badge/930ada9b7-fix-green\" alt=\"fix - 930ada9b7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003cimg src=\"https://img.shields.io/badge/0dc8a440c-fix-green\" alt=\"fix - 0dc8a440c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003cimg src=\"https://img.shields.io/badge/365cce81d-fix-green\" alt=\"fix - 365cce81d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003cimg src=\"https://img.shields.io/badge/9f74660c3-fix-green\" alt=\"fix - 9f74660c3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e233deef01\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e7cea9885c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e5b1a5b743\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003ee7abeb5c7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e94023f62c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e5ffe5c309\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e930ada9b7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e0dc8a440c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/564b1084e2bfb0813f374f1bff6f6ec5867b4bc2\"\u003e\u003ccode\u003e564b108\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dbda92b6dcc1762ff780327c4e25029c0a9104e7\"\u003e\u003ccode\u003edbda92b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/828c17508fee82c2b0273f3501188eb75681d169\"\u003e\u003ccode\u003e828c175\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a887b94de4b3677efd2809d26971535621387cb6\"\u003e\u003ccode\u003ea887b94\u003c/code\u003e\u003c/a\u003e build: lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/56d19be3b0045eb7d574fc34cfcea9ac502a8a0f\"\u003e\u003ccode\u003e56d19be\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f2f485173ffdf387bcb2db19bda71d3ebe9fe52d\"\u003e\u003ccode\u003ef2f4851\u003c/code\u003e\u003c/a\u003e build: update dependency postcss to v8.5.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003ccode\u003e5ffe5c3\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): add support for configuring trusted proxy headers via envi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003ccode\u003e930ada9\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): decode route segments when building and matching route tree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003ccode\u003e0dc8a44\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): use router to normalize URLs for comparison\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003ccode\u003e7cea988\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): introduce initial package manager workspace awareness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v20.3.25...v21.2.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 20.3.19 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 20.3.19 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n...\n\n_Description has been truncated_","html_url":"https://github.com/mo0om/juice-shop/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mo0om%2Fjuice-shop/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"4337886333","node_id":"PR_kwDOOsTdXs7WEVNx","number":246,"state":"open","title":"chore(deps-dev): bump @types/jasmine from 5.1.8 to 6.0.0 in /timeless-api/src/main/webui","user":"dependabot[bot]","labels":["dependencies","frontend"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-27T18:06:56.000Z","updated_at":"2026-05-06T23:55:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.8","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/timeless-api/src/main/webui","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.8 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/mcruzdev/timeless/pull/246","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcruzdev%2Ftimeless/issues/246","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/246/packages"},{"uuid":"4330638645","node_id":"PR_kwDOQN-Svs7VtYUz","number":8,"state":"closed","title":"chore(deps-dev): bump @types/jasmine from 5.1.13 to 6.0.0 in /service","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-26T11:01:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-26T10:33:17.000Z","updated_at":"2026-04-26T11:02:19.000Z","time_to_close":1708,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.13","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/service","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.13 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.13\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Rhaegal222/wyrmrest_frontend/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rhaegal222%2Fwyrmrest_frontend/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"},{"uuid":"4299356509","node_id":"PR_kwDOC9Jy-M7UImxp","number":721,"state":"open","title":"build(deps-dev): bump @types/jasmine from 5.1.15 to 6.0.0","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-20T23:48:48.000Z","updated_at":"2026-04-20T23:50:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Lucs1590/Personal_Site/pull/721","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site/issues/721","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/721/packages"},{"uuid":"4286254243","node_id":"PR_kwDOPhS-rM7Tf0ZE","number":67,"state":"open","title":"chore(deps)(deps-dev): bump @types/jasmine from 5.1.15 to 6.0.0 in /src/frontend","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-18T01:36:28.000Z","updated_at":"2026-04-18T01:36:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/src/frontend","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/ysnarafat/tenantly/pull/67","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysnarafat%2Ftenantly/issues/67","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/67/packages"},{"uuid":"4236274913","node_id":"PR_kwDOQ_8DsM7RUpQA","number":19,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 33 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-10T03:12:28.000Z","updated_at":"2026-04-10T03:13:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":33,"packages":[{"name":"@angular/animations","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.0.6","new_version":"21.2.6","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@iharbeck/ngx-virtual-scroller","old_version":"19.0.1","new_version":"20.0.0","repository_url":"https://github.com/iharbeck/ngx-virtual-scroller"},{"name":"@primeng/themes","old_version":"21.0.2","new_version":"21.0.4","repository_url":"https://github.com/primefaces/primeng"},{"name":"@stomp/stompjs","old_version":"7.2.1","new_version":"7.3.0","repository_url":"https://github.com/stomp-js/stompjs"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.3","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.0.2","new_version":"21.1.5","repository_url":"https://github.com/primefaces/primeng"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular/build","old_version":"21.0.5","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.0.5","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@types/jasmine","old_version":"5.1.14","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/node","old_version":"25.0.6","new_version":"25.5.2","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.16","new_version":"4.1.4","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.1.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"autoprefixer","old_version":"10.4.23","new_version":"10.4.27","repository_url":"https://github.com/postcss/autoprefixer"},{"name":"eslint","old_version":"9.39.2","new_version":"10.2.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine-core","old_version":"5.13.0","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"jsdom","old_version":"27.4.0","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"tailwindcss","old_version":"3.4.19","new_version":"4.2.2","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.52.0","new_version":"8.58.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 32 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.0.8` | `21.2.8` |\n| [@angular/cdk](https://github.com/angular/components) | `21.0.6` | `21.2.6` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.0.8` | `21.2.8` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.0.8` | `21.2.8` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.0.8` | `21.2.8` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.0.8` | `21.2.8` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.0.8` | `21.2.8` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.0.8` | `21.2.8` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.0.8` | `21.2.8` |\n| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller) | `19.0.1` | `20.0.0` |\n| [@primeng/themes](https://github.com/primefaces/primeng/tree/HEAD/packages/themes) | `21.0.2` | `21.0.4` |\n| [@stomp/stompjs](https://github.com/stomp-js/stompjs) | `7.2.1` | `7.3.0` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.3` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.0.2` | `21.1.5` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.0.5` | `21.2.7` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.0.5` | `21.2.7` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.0.8` | `21.2.8` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.14` | `6.0.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.6` | `25.5.2` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.16` | `4.1.4` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.1.0` | `21.3.1` |\n| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.23` | `10.4.27` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.2.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.13.0` | `6.1.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `29.0.2` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `3.4.19` | `4.2.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.52.0` | `8.58.1` |\n\n\nUpdates `@angular/animations` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003cimg src=\"https://img.shields.io/badge/2c6781071f-fix-green\" alt=\"fix - 2c6781071f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003cimg src=\"https://img.shields.io/badge/82192deda9-fix-green\" alt=\"fix - 82192deda9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003cimg src=\"https://img.shields.io/badge/057cc6d09d-fix-green\" alt=\"fix - 057cc6d09d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003cimg src=\"https://img.shields.io/badge/7797671257-fix-green\" alt=\"fix - 7797671257\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003cimg src=\"https://img.shields.io/badge/fea25d1a60-fix-green\" alt=\"fix - fea25d1a60\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003e\u003cimg src=\"https://img.shields.io/badge/bba5ed8e64-fix-green\" alt=\"fix - bba5ed8e64\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003cimg src=\"https://img.shields.io/badge/d04ddd73df-fix-green\" alt=\"fix - d04ddd73df\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003cimg src=\"https://img.shields.io/badge/8fd896e99a-fix-green\" alt=\"fix - 8fd896e99a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003cimg src=\"https://img.shields.io/badge/b682c62873-fix-green\" alt=\"fix - b682c62873\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c41e74fdd279f683156b654699a9312a850add0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3c41e74fdd-fix-green\" alt=\"fix - 3c41e74fdd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0960592d3d4fad110d5598144fda9f2488520826\"\u003e\u003cimg src=\"https://img.shields.io/badge/0960592d3d-fix-green\" alt=\"fix - 0960592d3d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003ee40d378f3e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e2c6781071f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e82192deda9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e057cc6d09d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e7797671257\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/08d36599d724d6b3dbe2c9891c32f783bef4e157\"\u003e08d36599d7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fcd0bb0db83576ef0bc13c5c32f158d95efbedd5\"\u003efcd0bb0db8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e84e35cdd60696d8670421189e4aa02c1db583a6\"\u003ee84e35cdd6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fa66173523bb275d33de4bd43ce23947812922e\"\u003e8fa6617352\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/028e1d3ce0ed3a33d3b7730a51b549a5cf013b29\"\u003e028e1d3ce0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/78710938225d2c29c6e3666e431c2952bb5560db\"\u003e7871093822\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071\"\u003e682aaf943f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd strictTemplates to tsconfig during ng update\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/daa9b2a9d67557ae9246559f74396f43b240581c\"\u003edaa9b2a9d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.0.6 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003e\u003cimg src=\"https://img.shields.io/badge/cebf303417-fix-green\" alt=\"fix - cebf303417\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003echeckbox:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/2abe8e6b7330f5281b560b202ab70bdf593782cc\"\u003e\u003cimg src=\"https://img.shields.io/badge/2abe8e6b73-fix-green\" alt=\"fix - 2abe8e6b73\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e render backdrop for context menu if explicitly opted in (\u003ca href=\"https://redirect.github.com/angular/components/issues/32845\"\u003e#32845\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f7308dc4b5e539c2ccacf138a7997f9f5fdf03\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2f7308dc4-fix-green\" alt=\"fix - e2f7308dc4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eradio:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 \u0026quot;steel bottle\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e5b4bbe9c4f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/pull/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.3 \u0026quot;rubber-wombat\u0026quot; (2026-04-01)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenames the values input/model to value in Combobox, Listbox, Tree, Menu, Toolbar, and Select. Users must update their templates to use the value property instead of values.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(multiple): update api goldens\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ac3911071810ac7c54ba3382125bf53094bce80b\"\u003eac3911071\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/pull/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a7d5561803e2f365843cb763a4763ed51cb0ae03\"\u003ea7d556180\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/pull/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/236762fbc5d63bb6000a52c7d20612c0b14c3d8b\"\u003e236762fbc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/pull/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a7fe128c353aec9065e942b63167e9019dc53350\"\u003ea7fe128c3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/pull/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/94a50a25f95c0e28d661b957a0a17501cc9998f9\"\u003e94a50a25f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003erename values to value for signal forms compatibility (\u003ca href=\"https://redirect.github.com/angular/components/pull/33012\"\u003e#33012\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.5 \u0026quot;steel-wombat\u0026quot; (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e42e10553c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/pull/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e895908a12\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/pull/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e475a8aabb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/pull/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e8a5ed09e5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/pull/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.4 \u0026quot;hassium-halfpipe\u0026quot; (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a236a4067ce1d3cf8b7e1362760db5907a26c86e\"\u003e\u003ccode\u003ea236a40\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/6b955a73fe44f0a58993c80836c03cf149ae11a2\"\u003e\u003ccode\u003e6b955a7\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33043\"\u003e#33043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2909c3ac0712119c8286dbc4118a3e4cd1e85a2f\"\u003e\u003ccode\u003e2909c3a\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33038\"\u003e#33038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003ccode\u003e5b4bbe9\u003c/code\u003e\u003c/a\u003e fix(material/select): wrong transform origin when opening upwards inside anot...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2c877d284177bff3973e93f3948c2a926fca08de\"\u003e\u003ccode\u003e2c877d2\u003c/code\u003e\u003c/a\u003e Set generic on some \u003ccode\u003eInjectionToken\u003c/code\u003e.  (\u003ca href=\"https://redirect.github.com/angular/components/issues/32753\"\u003e#32753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/97be64ac8f54540af3ee8d7f08ca80d2c98b0e88\"\u003e\u003ccode\u003e97be64a\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33030\"\u003e#33030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/424b282a690c725b76ae6c4f36eb32b6cdcdf5f7\"\u003e\u003ccode\u003e424b282\u003c/code\u003e\u003c/a\u003e build: update dependency aspect_rules_ts to v3.8.8 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33025\"\u003e#33025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e433a661551394cb740314e0bc2f002d0549c2a2\"\u003e\u003ccode\u003ee433a66\u003c/code\u003e\u003c/a\u003e docs(material/dialog): clarify that default options replace rather than merge...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c9d40aa735751363a729723751aaf87dfb5d4819\"\u003e\u003ccode\u003ec9d40aa\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/899456f6e4b23d6c34643c223a42f0bbd67b9de8\"\u003e\u003ccode\u003e899456f\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33017\"\u003e#33017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.0.6...v21.2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003cimg src=\"https://img.shields.io/badge/2c6781071f-fix-green\" alt=\"fix - 2c6781071f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003cimg src=\"https://img.shields.io/badge/82192deda9-fix-green\" alt=\"fix - 82192deda9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003cimg src=\"https://img.shields.io/badge/057cc6d09d-fix-green\" alt=\"fix - 057cc6d09d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003cimg src=\"https://img.shields.io/badge/7797671257-fix-green\" alt=\"fix - 7797671257\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003cimg src=\"https://img.shields.io/badge/fea25d1a60-fix-green\" alt=\"fix - fea25d1a60\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003e\u003cimg src=\"https://img.shields.io/badge/bba5ed8e64-fix-green\" alt=\"fix - bba5ed8e64\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003cimg src=\"https://img.shields.io/badge/d04ddd73df-fix-green\" alt=\"fix - d04ddd73df\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003cimg src=\"https://img.shields.io/badge/8fd896e99a-fix-green\" alt=\"fix - 8fd896e99a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003cimg src=\"https://img.shields.io/badge/b682c62873-fix-green\" alt=\"fix - b682c62873\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c41e74fdd279f683156b654699a9312a850add0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3c41e74fdd-fix-green\" alt=\"fix - 3c41e74fdd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0960592d3d4fad110d5598144fda9f2488520826\"\u003e\u003cimg src=\"https://img.shields.io/badge/0960592d3d-fix-green\" alt=\"fix - 0960592d3d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003ee40d378f3e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e2c6781071f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e82192deda9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e057cc6d09d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e7797671257\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/08d36599d724d6b3dbe2c9891c32f783bef4e157\"\u003e08d36599d7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fcd0bb0db83576ef0bc13c5c32f158d95efbedd5\"\u003efcd0bb0db8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e84e35cdd60696d8670421189e4aa02c1db583a6\"\u003ee84e35cdd6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fa66173523bb275d33de4bd43ce23947812922e\"\u003e8fa6617352\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/028e1d3ce0ed3a33d3b7730a51b549a5cf013b29\"\u003e028e1d3ce0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/78710938225d2c29c6e3666e431c2952bb5560db\"\u003e7871093822\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071\"\u003e682aaf943f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd strictTemplates to tsconfig during ng update\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/daa9b2a9d67557ae9246559f74396f43b240581c\"\u003edaa9b2a9d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003ccode\u003e277ade9\u003c/code\u003e\u003c/a\u003e fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/aeb9b819d2cda782de85338dc9a5457c11e51bfe\"\u003e\u003ccode\u003eaeb9b81\u003c/code\u003e\u003c/a\u003e refactor(http): Improves base64 encoding/decoding with feature detection (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ecf0bb466875d17e0823f2d793491c6f354d6c34\"\u003e\u003ccode\u003eecf0bb4\u003c/code\u003e\u003c/a\u003e test(http): refactors HTTP client tests to use TestBed and providers\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003cimg src=\"https://img.shields.io/badge/2c6781071f-fix-green\" alt=\"fix - 2c6781071f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003cimg src=\"https://img.shields.io/badge/82192deda9-fix-green\" alt=\"fix - 82192deda9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003cimg src=\"https://img.shields.io/badge/057cc6d09d-fix-green\" alt=\"fix - 057cc6d09d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003cimg src=\"https://img.shields.io/badge/7797671257-fix-green\" alt=\"fix - 7797671257\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003cimg src=\"https://img.shields.io/badge/fea25d1a60-fix-green\" alt=\"fix - fea25d1a60\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003e\u003cimg src=\"https://img.shields.io/badge/bba5ed8e64-fix-green\" alt=\"fix - bba5ed8e64\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003cimg src=\"https://img.shields.io/badge/d04ddd73df-fix-green\" alt=\"fix - d04ddd73df\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003cimg src=\"https://img.shields.io/badge/8fd896e99a-fix-green\" alt=\"fix - 8fd896e99a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003cimg src=\"https://img.shields.io/badge/b682c62873-fix-green\" alt=\"fix - b682c62873\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c41e74fdd279f683156b654699a9312a850add0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3c41e74fdd-fix-green\" alt=\"fix - 3c41e74fdd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0960592d3d4fad110d5598144fda9f2488520826\"\u003e\u003cimg src=\"https://img.shields.io/badge/0960592d3d-fix-green\" alt=\"fix - 0960592d3d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003ee40d378f3e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e2c6781071f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e82192deda9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e057cc6d09d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e7797671257\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/08d36599d724d6b3dbe2c9891c32f783bef4e157\"\u003e08d36599d7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fcd0bb0db83576ef0bc13c5c32f158d95efbedd5\"\u003efcd0bb0db8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e84e35cdd60696d8670421189e4aa02c1db583a6\"\u003ee84e35cdd6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fa66173523bb275d33de4bd43ce23947812922e\"\u003e8fa6617352\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/028e1d3ce0ed3a33d3b7730a51b549a5cf013b29\"\u003e028e1d3ce0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/78710938225d2c29c6e3666e431c2952bb5560db\"\u003e7871093822\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071\"\u003e682aaf943f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd strictTemplates to tsconfig during ng update\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/daa9b2a9d67557ae9246559f74396f43b240581c\"\u003edaa9b2a9d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003ccode\u003eed2d324\u003c/code\u003e\u003c/a\u003e fix(compiler): disallow translations of iframe src\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/compiler\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/core` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003cimg src=\"https://img.shields.io/badge/2c6781071f-fix-green\" alt=\"fix - 2c6781071f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003cimg src=\"https://img.shields.io/badge/82192deda9-fix-green\" alt=\"fix - 82192deda9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003cimg src=\"https://img.shields.io/badge/057cc6d09d-fix-green\" alt=\"fix - 057cc6d09d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003cimg src=\"https://img.shields.io/badge/7797671257-fix-green\" alt=\"fix - 7797671257\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003cimg src=\"https://img.shields.io/badge/fea25d1a60-fix-green\" alt=\"fix - fea25d1a60\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003e\u003cimg src=\"https://img.shields.io/badge/bba5ed8e64-fix-green\" alt=\"fix - bba5ed8e64\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003cimg src=\"https://img.shields.io/badge/d04ddd73df-fix-green\" alt=\"fix - d04ddd73df\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003cimg src=\"https://img.shields.io/badge/8fd896e99a-fix-green\" alt=\"fix - 8fd896e99a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003cimg src=\"https://img.shields.io/badge/b682c62873-fix-green\" alt=\"fix - b682c62873\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c41e74fdd279f683156b654699a9312a850add0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3c41e74fdd-fix-green\" alt=\"fix - 3c41e74fdd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0960592d3d4fad110d5598144fda9f2488520826\"\u003e\u003cimg src=\"https://img.shields.io/badge/0960592d3d-fix-green\" alt=\"fix - 0960592d3d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003ee40d378f3e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e2c6781071f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e82192deda9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e057cc6d09d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e7797671257\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/08d36599d724d6b3dbe2c9891c32f783bef4e157\"\u003e08d36599d7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fcd0bb0db83576ef0bc13c5c32f158d95efbedd5\"\u003efcd0bb0db8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e84e35cdd60696d8670421189e4aa02c1db583a6\"\u003ee84e35cdd6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fa66173523bb275d33de4bd43ce23947812922e\"\u003e8fa6617352\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/028e1d3ce0ed3a33d3b7730a51b549a5cf013b29\"\u003e028e1d3ce0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/78710938225d2c29c6e3666e431c2952bb5560db\"\u003e7871093822\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071\"\u003e682aaf943f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd strictTemplates to tsconfig during ng update\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/daa9b2a9d67557ae9246559f74396f43b240581c\"\u003edaa9b2a9d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d4c8a9a887a28fa4f3dfce663095ec13ef3bebd0\"\u003e\u003ccode\u003ed4c8a9a\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolBuilder from BoundTarget and minimize ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003ccode\u003e057cc6d\u003c/code\u003e\u003c/a\u003e fix(core): remove obsolete iOS cursor pointer hack in event delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c9f8f3afb68ac921e02354473ebae5fae229400a\"\u003e\u003ccode\u003ec9f8f3a\u003c/code\u003e\u003c/a\u003e test(core): add missing import of ChangeDetectionStrategy in query_spec\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/910dcb6d6aaf0fd5f592cda00a1f45c5ed3e71c1\"\u003e\u003ccode\u003e910dcb6\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple TemplateSymbolBuilder from ts.TypeChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003ccode\u003e82192de\u003c/code\u003e\u003c/a\u003e fix(core): handle missing serialized container hydration data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2ae0912eea38d63201e94a5ecdee781c8491d78b\"\u003e\u003ccode\u003e2ae0912\u003c/code\u003e\u003c/a\u003e refactor(core): address review comments on NG0750 error message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e583f4c80811202ffbd321b98cc957fd586df1bd\"\u003e\u003ccode\u003ee583f4c\u003c/code\u003e\u003c/a\u003e refactor(core): Add more detail to NG0750 error message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b08e29f2634a86d3903a679fc37a21bd21a0bcc\"\u003e\u003ccode\u003e0b08e29\u003c/code\u003e\u003c/a\u003e test(core): refactors test to use \u003ccode\u003etimeout\u003c/code\u003e utility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4ad6d582d2a9f887c8530ff10ae513a4181ad24c\"\u003e\u003ccode\u003e4ad6d58\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/forms` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/wqj666666/booklore-alist-zh/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wqj666666%2Fbooklore-alist-zh/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"},{"uuid":"4219273369","node_id":"PR_kwDOR7UDp87QkBAd","number":2,"state":"closed","title":"chore(deps-dev): bump @types/jasmine from 3.10.19 to 6.0.0 in /web","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-04T18:50:53.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-07T16:53:42.000Z","updated_at":"2026-05-04T18:51:02.000Z","time_to_close":2339831,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"3.10.19","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/web","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 3.10.19 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=3.10.19\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/abdur1547/bookturf-rails/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdur1547%2Fbookturf-rails/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"},{"uuid":"4215041295","node_id":"PR_kwDOR5d9P87QXVZ8","number":14,"state":"open","title":"Bump @types/jasmine from 5.1.15 to 6.0.0","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-07T02:19:57.000Z","updated_at":"2026-04-07T02:20:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/TeamStarWolf/ATTACK-Navi/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamStarWolf%2FATTACK-Navi/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"},{"uuid":"4209372850","node_id":"PR_kwDORtMf787QG9JY","number":51,"state":"open","title":"chore(deps): Bump the testing group across 1 directory with 4 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-06T03:33:29.000Z","updated_at":"2026-04-06T03:33:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"testing","update_count":4,"packages":[{"name":"@playwright/test","old_version":"1.58.2","new_version":"1.59.1","repository_url":"https://github.com/microsoft/playwright"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"jasmine-core","old_version":"5.6.0","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"karma-jasmine-html-reporter","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/dfederm/karma-jasmine-html-reporter"}],"path":null,"ecosystem":"npm"},"body":"Bumps the testing group with 4 updates in the /frontend/angular directory: [@playwright/test](https://github.com/microsoft/playwright), [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine), [jasmine-core](https://github.com/jasmine/jasmine) and [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter).\n\nUpdates `@playwright/test` from 1.58.2 to 1.59.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/playwright/releases\"\u003e\u003ccode\u003e@​playwright/test\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.59.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[Windows]\u003c/strong\u003e Reverted hiding console window when spawning browser processes, which caused regressions including broken \u003ccode\u003ecodegen\u003c/code\u003e, \u003ccode\u003e--ui\u003c/code\u003e and \u003ccode\u003eshow\u003c/code\u003e commands (\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39990\"\u003e#39990\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.59.0\u003c/h2\u003e\n\u003ch2\u003e🎬 Screencast\u003c/h2\u003e\n\u003cp\u003eNew \u003ca href=\"https://playwright.dev/docs/api/class-page#page-screencast\"\u003epage.screencast\u003c/a\u003e API provides a unified interface for capturing page content with:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eScreencast recordings\u003c/li\u003e\n\u003cli\u003eAction annotations\u003c/li\u003e\n\u003cli\u003eVisual overlays\u003c/li\u003e\n\u003cli\u003eReal-time frame capture\u003c/li\u003e\n\u003cli\u003eAgentic video receipts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003eScreencast recording\u003c/strong\u003e — record video with precise start/stop control, as an alternative to the \u003ca href=\"https://playwright.dev/docs/api/class-browser#browser-new-context-option-record-video\"\u003e\u003ccode\u003erecordVideo\u003c/code\u003e\u003c/a\u003e option:\u003c/p\u003e\n\u003cpre lang=\"js\"\u003e\u003ccode\u003eawait page.screencast.start({ path: 'video.webm' });\r\n// ... perform actions ...\r\nawait page.screencast.stop();\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eAction annotations\u003c/strong\u003e — enable built-in visual annotations that highlight interacted elements and display action titles during recording:\u003c/p\u003e\n\u003cpre lang=\"js\"\u003e\u003ccode\u003eawait page.screencast.showActions({ position: 'top-right' });\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003ca href=\"https://playwright.dev/docs/api/class-screencast#screencast-show-actions\"\u003escreencast.showActions()\u003c/a\u003e accepts \u003ccode\u003eposition\u003c/code\u003e (\u003ccode\u003e'top-left'\u003c/code\u003e, \u003ccode\u003e'top'\u003c/code\u003e, \u003ccode\u003e'top-right'\u003c/code\u003e, \u003ccode\u003e'bottom-left'\u003c/code\u003e, \u003ccode\u003e'bottom'\u003c/code\u003e, \u003ccode\u003e'bottom-right'\u003c/code\u003e), \u003ccode\u003eduration\u003c/code\u003e (ms per annotation), and \u003ccode\u003efontSize\u003c/code\u003e (px). Returns a disposable to stop showing actions.\u003c/p\u003e\n\u003cp\u003eAction annotations can also be enabled in test fixtures via the \u003ccode\u003evideo\u003c/code\u003e option:\u003c/p\u003e\n\u003cpre lang=\"js\"\u003e\u003ccode\u003e// playwright.config.ts\r\nexport default defineConfig({\r\n  use: {\r\n    video: {\r\n      mode: 'on',\r\n      show: {\r\n        actions: { position: 'top-left' },\r\n        test: { position: 'top-right' },\r\n      },\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/d466ac5358cae058cdc75d2ae3ab3ad220042730\"\u003e\u003ccode\u003ed466ac5\u003c/code\u003e\u003c/a\u003e chore: mark v1.59.1 (\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/40005\"\u003e#40005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/530e7e5f0021730948605a5788790d353d9cf444\"\u003e\u003ccode\u003e530e7e5\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/4004\"\u003e#4004\u003c/a\u003e): fix(cli): kill-all should kill dashboard\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/9aa216c8d7f866e8a8fa94ca55d86e81a8f4decb\"\u003e\u003ccode\u003e9aa216c\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39994\"\u003e#39994\u003c/a\u003e): Revert \u0026quot;fix(windows): hide console window when spawning ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/01b2b1533e0bfa1c582117e3ec109fcb57657747\"\u003e\u003ccode\u003e01b2b15\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39980\"\u003e#39980\u003c/a\u003e): chore: more release notes fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/a5cb6c9a2f52078de075413beb812e3180d195ba\"\u003e\u003ccode\u003ea5cb6c9\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39972\"\u003e#39972\u003c/a\u003e): chore: expose browser.bind and browser.unbind APIs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/99a17b58541798b03257c57a9e5589db2394f89e\"\u003e\u003ccode\u003e99a17b5\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39975\"\u003e#39975\u003c/a\u003e): chore: support opening .trace files via .link indirection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/43607c3b71d89445a6473708429eeecd6f571d6e\"\u003e\u003ccode\u003e43607c3\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39974\"\u003e#39974\u003c/a\u003e): chore(webkit): update Safari user-agent version to 26.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/62cabe19eb07e329086e5cb20441737cf51367d0\"\u003e\u003ccode\u003e62cabe1\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39969\"\u003e#39969\u003c/a\u003e): chore(npm): include all *.md from lib (\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39970\"\u003e#39970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/0c65a759af337ba5143ebbe34afe4141482ce2d4\"\u003e\u003ccode\u003e0c65a75\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39968\"\u003e#39968\u003c/a\u003e): chore: screencast.showActions api\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/f04155b09034c21719162146d6016de9933a2dbe\"\u003e\u003ccode\u003ef04155b\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39958\"\u003e#39958\u003c/a\u003e): chore: release notes for langs v1.59\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/playwright/compare/v1.58.2...v1.59.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@types/jasmine` from 5.1.15 to 6.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jasmine-core` from 5.6.0 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jasmine/jasmine/releases\"\u003ejasmine-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.1.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.1.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-beta.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-beta.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-beta.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-beta.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.2\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.2.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.13.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.13.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.12.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.12.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.12.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.12.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.11.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.11.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.10.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.10.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.9.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.9.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.8.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.8.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.7.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.7.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.7.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.7.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/3de4512681fa31332f332f70314795f7d7037a3f\"\u003e\u003ccode\u003e3de4512\u003c/code\u003e\u003c/a\u003e Bump version to 6.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/4bf333ed38b50ab26593226e0f5ca4f1280f3c89\"\u003e\u003ccode\u003e4bf333e\u003c/code\u003e\u003c/a\u003e rm unnecessary and deprecated eslint-env comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/4f5ef7c2d7053ff9c8a0c31060c54ab31e5e7c08\"\u003e\u003ccode\u003e4f5ef7c\u003c/code\u003e\u003c/a\u003e Drop support for Safari 16 and 17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/5de03beea14cb40467a22c48007dc1148371ecd7\"\u003e\u003ccode\u003e5de03be\u003c/code\u003e\u003c/a\u003e Fix test failure in Node 20 and 22 parallel tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/42baa422b3fb28ffc69048e4d36b32667f6257bf\"\u003e\u003ccode\u003e42baa42\u003c/code\u003e\u003c/a\u003e Formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/6af5d24b3b2ef3a242b20113d01891930e76d61d\"\u003e\u003ccode\u003e6af5d24\u003c/code\u003e\u003c/a\u003e Improve formatting of AggregateErrors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/b88ce2d49f54f1baa91658509cce1f941a0c62b2\"\u003e\u003ccode\u003eb88ce2d\u003c/code\u003e\u003c/a\u003e Improve AggregateError specs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/c216ae1d132bb4a0d010b85d3328bc1d3c72b45b\"\u003e\u003ccode\u003ec216ae1\u003c/code\u003e\u003c/a\u003e Merge branch 'puglyfe-aggregate-errors'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/319776d2413f42c3da13d6a605118cdcf775e541\"\u003e\u003ccode\u003e319776d\u003c/code\u003e\u003c/a\u003e Report the constituent errors of an AggregateError\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/1d0718dc2f48db5a9ffb6ff90f324703b805a58c\"\u003e\u003ccode\u003e1d0718d\u003c/code\u003e\u003c/a\u003e Fix MAX_PRETTY_PRINT_CHARS default jsdoc in source code too\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jasmine/jasmine/compare/v5.6.0...v6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `karma-jasmine-html-reporter` from 2.1.0 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/releases\"\u003ekarma-jasmine-html-reporter's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Jasmine 6\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\"\u003ehttps://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/commit/12405b839cef2cd3e16540a3ff7b2f51a1517e0a\"\u003e\u003ccode\u003e12405b8\u003c/code\u003e\u003c/a\u003e Minor fix to package.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/commit/7a82a4145d784b5124762b9e8da05be07953a41f\"\u003e\u003ccode\u003e7a82a41\u003c/code\u003e\u003c/a\u003e Add support for Jasmine 6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/MynorXico/racephotos/pull/51","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MynorXico%2Fracephotos/issues/51","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/51/packages"},{"uuid":"4207528834","node_id":"PR_kwDOR6RXGM7QC3sH","number":2,"state":"closed","title":"chore(deps-dev): bump @types/jasmine from 5.1.15 to 6.0.0","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-05T13:23:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-05T13:20:27.000Z","updated_at":"2026-04-05T13:23:58.000Z","time_to_close":209,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/franverona/planr/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/franverona%2Fplanr/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"},{"uuid":"4204931813","node_id":"PR_kwDOBiCNks7P9SXR","number":1402,"state":"open","title":"Bump @types/jasmine from 5.1.4 to 6.0.0","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-04T13:23:05.000Z","updated_at":"2026-04-04T13:25:40.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"@types/jasmine","old_version":"5.1.4","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.4 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.4\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/SubJunk/TimelineTools/pull/1402","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SubJunk%2FTimelineTools/issues/1402","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1402/packages"},{"uuid":"4188066116","node_id":"PR_kwDOR3A4rs7PTkRB","number":87,"state":"closed","title":"chore: Bump @types/jasmine from 3.6.11 to 3.10.19 in /components/crud-web-apps/volumes/frontend","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-04T10:47:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-01T16:01:05.000Z","updated_at":"2026-04-04T10:47:52.000Z","time_to_close":240399,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: Bump","packages":[{"name":"@types/jasmine","old_version":"3.6.11","new_version":"3.10.19","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/components/crud-web-apps/volumes/frontend","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 3.6.11 to 3.10.19.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=3.6.11\u0026new-version=3.10.19)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/christian-heusel/notebooks-playground/pull/87","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/christian-heusel%2Fnotebooks-playground/issues/87","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/87/packages"},{"uuid":"4188032427","node_id":"PR_kwDOR3A4rs7PTecw","number":78,"state":"closed","title":"chore: Bump @types/jasmine from 3.6.11 to 3.10.19 in /components/crud-web-apps/jupyter/frontend","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-04T10:47:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-01T15:55:29.000Z","updated_at":"2026-04-04T10:47:49.000Z","time_to_close":240732,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: Bump","packages":[{"name":"@types/jasmine","old_version":"3.6.11","new_version":"3.10.19","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/components/crud-web-apps/jupyter/frontend","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 3.6.11 to 3.10.19.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=3.6.11\u0026new-version=3.10.19)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/christian-heusel/notebooks-playground/pull/78","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/christian-heusel%2Fnotebooks-playground/issues/78","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/78/packages"},{"uuid":"4169994112","node_id":"PR_kwDOQGzZCM7Olvuk","number":52,"state":"closed","title":"chore(deps): bump the npm-version-updates group across 1 directory with 14 updates","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-06T11:01:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-30T11:35:39.000Z","updated_at":"2026-04-06T11:01:43.000Z","time_to_close":602763,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-version-updates","update_count":14,"packages":[{"name":"@edgeflare/ngx-oidc","old_version":"0.0.1","new_version":"0.0.2","repository_url":"https://github.com/edgeflare/ngx-oidc"},{"name":"zone.js","old_version":"0.15.1","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular/build","old_version":"21.2.3","new_version":"21.2.5","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.3","new_version":"21.2.5","repository_url":"https://github.com/angular/angular-cli"},{"name":"@eslint/js","old_version":"9.39.4","new_version":"10.0.1","repository_url":"https://github.com/eslint/eslint"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/node","old_version":"22.19.15","new_version":"25.5.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"angular-eslint","old_version":"21.0.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.4","new_version":"10.1.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine-core","old_version":"5.9.0","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"karma-jasmine-html-reporter","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/dfederm/karma-jasmine-html-reporter"},{"name":"knip","old_version":"5.88.1","new_version":"6.1.0","repository_url":"https://github.com/webpro-nl/knip"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.46.0","new_version":"8.57.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-version-updates group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@edgeflare/ngx-oidc](https://github.com/edgeflare/ngx-oidc) | `0.0.1` | `0.0.2` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.15.1` | `0.16.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.3` | `21.2.5` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.3` | `21.2.5` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.4` | `10.0.1` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.15` | `6.0.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `22.19.15` | `25.5.0` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.0.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.4` | `10.1.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.9.0` | `6.1.0` |\n| [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) | `2.1.0` | `2.2.0` |\n| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.88.1` | `6.1.0` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.46.0` | `8.57.2` |\n\n\nUpdates `@edgeflare/ngx-oidc` from 0.0.1 to 0.0.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/edgeflare/ngx-oidc/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zone.js` from 0.15.1 to 0.16.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/packages/zone.js/CHANGELOG.md\"\u003ezone.js's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003c!-- raw HTML omitted --\u003e0.16.1 (2026-02-18)\u003c!-- raw HTML omitted --\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(zone.js): support passthrough of Promise.try API (\u003ca href=\"https://github.com/angular/angular/commit/fc557f0\"\u003efc557f0\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/67057\"\u003e#67057\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003c!-- raw HTML omitted --\u003e0.16.0 (2025-11-19)\u003c!-- raw HTML omitted --\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(zone.js): Support jasmine v6 (\u003ca href=\"https://github.com/angular/angular/commit/48abe00\"\u003e48abe00\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(zone.js): waitForAsync should pass args to the test function (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/61755\"\u003e#61755\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/3c216c1\"\u003e3c216c1\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/61755\"\u003e#61755\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/61717\"\u003e#61717\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/61755\"\u003e#61755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(zone.js): Add internal implementation for auto ticking fakeAsync (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/62135\"\u003e#62135\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/0a827f9\"\u003e0a827f9\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/62135\"\u003e#62135\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/62135\"\u003e#62135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(zone.js): Improve missing proxy zone error for jest imported (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/64497\"\u003e#64497\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/ced2fa5\"\u003eced2fa5\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/64497\"\u003e#64497\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/47603\"\u003e#47603\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/64497\"\u003e#64497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(zone.js): remove legacy browser support (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/63511\"\u003e#63511\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/2e46596\"\u003e2e46596\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/63511\"\u003e#63511\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/63511\"\u003e#63511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(zone.js): remove unused jasmine globalerror monkey patching. (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/63077\"\u003e#63077\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/9aef481\"\u003e9aef481\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/63077\"\u003e#63077\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/63072\"\u003e#63072\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/63077\"\u003e#63077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest(zone.js): refactor tests to remove usage of shelljs (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/64042\"\u003e#64042\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/422a3b9\"\u003e422a3b9\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/64042\"\u003e#64042\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/64042\"\u003e#64042\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBREAKING CHANGE\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIE/Non-Chromium Edge are not supported anymore.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ac8b5ff9382ee92761c414098a3295cd8d1cd519\"\u003e\u003ccode\u003eac8b5ff\u003c/code\u003e\u003c/a\u003e release: cut the zone.js-0.16.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/98610aabaf88654863f863addece1c67d6429095\"\u003e\u003ccode\u003e98610aa\u003c/code\u003e\u003c/a\u003e docs(zone.js): update release and publish commands in DEVELOPER.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99e336a034d597aa93d2042123174e7acbfc520\"\u003e\u003ccode\u003ed99e336\u003c/code\u003e\u003c/a\u003e docs(zone.js): update build command in DEVELOPER.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c2f7eaa833bc8cfaa331bfed370b4b83bf628c2e\"\u003e\u003ccode\u003ec2f7eaa\u003c/code\u003e\u003c/a\u003e docs(zone.js): update instructions to use pnpm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fc557f0276aefe523e328cad984eddb3ba7fecdb\"\u003e\u003ccode\u003efc557f0\u003c/code\u003e\u003c/a\u003e fix(zone.js): support passthrough of Promise.try API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/11767cabe48606a1f575d50b8af79b8bbb35a852\"\u003e\u003ccode\u003e11767ca\u003c/code\u003e\u003c/a\u003e build: update Jasmine to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0c6604f47858d6bea566db4a8a68fe72870022f3\"\u003e\u003ccode\u003e0c6604f\u003c/code\u003e\u003c/a\u003e refactor(common): update copyright to Google LLC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/df3258cfc471f4061f7db8b135cf4d84fe6cbf3b\"\u003e\u003ccode\u003edf3258c\u003c/code\u003e\u003c/a\u003e build: update all non-major dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9989c5fb7814fe19c782bebcf9355b3bf4fde526\"\u003e\u003ccode\u003e9989c5f\u003c/code\u003e\u003c/a\u003e build: update dependency \u003ccode\u003e@​csstools/css-color-parser\u003c/code\u003e to v4\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/zone.js-0.16.1/packages/zone.js\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/build` from 21.2.3 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003cimg src=\"https://img.shields.io/badge/cadf9b201-feat-blue\" alt=\"feat - cadf9b201\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbc255419-fix-green\" alt=\"fix - bbc255419\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003cimg src=\"https://img.shields.io/badge/b1fe66a7f-fix-green\" alt=\"fix - b1fe66a7f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7787d0925559fe7731034856a872708bcfb78be\"\u003e\u003cimg src=\"https://img.shields.io/badge/a7787d092-fix-green\" alt=\"fix - a7787d092\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore console methods after logger completes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7170599ab237691d9208c410363ef7e4ee50db2c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7170599ab-fix-green\" alt=\"fix - 7170599ab\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ededuplicate and merge coverage excludes with vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c73f13797afe57fcc98faf6361085e1dd5afae9b\"\u003e\u003cimg src=\"https://img.shields.io/badge/c73f13797-fix-green\" alt=\"fix - c73f13797\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent reporter duplicates by explicitly overriding Vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/956ccaa71ea8a3626e4139cf7e2f26ee637feeed\"\u003e\u003cimg src=\"https://img.shields.io/badge/956ccaa71-fix-green\" alt=\"fix - 956ccaa71\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove default for unit-test coverage option\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/36978db7e494e4e5612aa2a8384199eeca7c4c2d\"\u003e\u003cimg src=\"https://img.shields.io/badge/36978db7e-fix-green\" alt=\"fix - 36978db7e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn about performance of test.exclude in vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6ec36f5bee05d97c10ca8d91d5746621ffb1fdb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/6ec36f5be-fix-green\" alt=\"fix - 6ec36f5be\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn when vitest watch config conflicts with builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9bdf782c838ab5820ec905d689a62ffc3b3cabe3\"\u003e\u003cimg src=\"https://img.shields.io/badge/9bdf782c8-fix-green\" alt=\"fix - 9bdf782c8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eapply forwarded prefix and vary header in accept-language redirects\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/628c586728748e1c367fa7e363299eb79b1566ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/628c58672-fix-green\" alt=\"fix - 628c58672\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport '*' in allowedHosts and warn about security risks\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003ecadf9b201\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003ebbc255419\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003eb1fe66a7f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.22 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5978eeeff63cd62f1515d949eaad0b5e6f7c44cd\"\u003e5978eeeff\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/core\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6e9b926129a9dd79f01d47b7446411b8963ffb62\"\u003e6e9b92612\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6f209c26dc5a454acd1cd76f25240c26978fa827\"\u003e6f209c26d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.23 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/67cfbe32ff013d7c9763253c8ccd383d8ee2416c\"\u003e67cfbe32f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/30186122102ebe1e5b31abe6241d03c94d162e39\"\u003e\u003ccode\u003e3018612\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/349bd4391f41854cdb7b8da5ac18e88465bb4e99\"\u003e\u003ccode\u003e349bd43\u003c/code\u003e\u003c/a\u003e build: update dependency picomatch to v4.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003ccode\u003ecadf9b2\u003c/code\u003e\u003c/a\u003e feat(\u003ccode\u003e@​angular/cli\u003c/code\u003e): support custom port in MCP devserver start tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003ccode\u003ebbc2554\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): allow underscores in host validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/88ac9986ff58d69cca9ae81feea1e35692fa1e84\"\u003e\u003ccode\u003e88ac998\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/022e0efd93dd1b4866305c18c56bbb402090e033\"\u003e\u003ccode\u003e022e0ef\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c363f19712d8cf06a911780da36457fbd35461d5\"\u003e\u003ccode\u003ec363f19\u003c/code\u003e\u003c/a\u003e build: update dependency node to v22.22.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003ccode\u003eb1fe66a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): patch Headers.forEach in cloneRequestAndPatchHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/2aa93fc30918535abe2698bef8984aae57f6c115\"\u003e\u003ccode\u003e2aa93fc\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f33826e3efc7e5d7e9a061dc683111d2f451f7de\"\u003e\u003ccode\u003ef33826e\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.3...v21.2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cli` from 21.2.3 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003cimg src=\"https://img.shields.io/badge/cadf9b201-feat-blue\" alt=\"feat - cadf9b201\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbc255419-fix-green\" alt=\"fix - bbc255419\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003cimg src=\"https://img.shields.io/badge/b1fe66a7f-fix-green\" alt=\"fix - b1fe66a7f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7787d0925559fe7731034856a872708bcfb78be\"\u003e\u003cimg src=\"https://img.shields.io/badge/a7787d092-fix-green\" alt=\"fix - a7787d092\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore console methods after logger completes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7170599ab237691d9208c410363ef7e4ee50db2c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7170599ab-fix-green\" alt=\"fix - 7170599ab\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ededuplicate and merge coverage excludes with vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c73f13797afe57fcc98faf6361085e1dd5afae9b\"\u003e\u003cimg src=\"https://img.shields.io/badge/c73f13797-fix-green\" alt=\"fix - c73f13797\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent reporter duplicates by explicitly overriding Vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/956ccaa71ea8a3626e4139cf7e2f26ee637feeed\"\u003e\u003cimg src=\"https://img.shields.io/badge/956ccaa71-fix-green\" alt=\"fix - 956ccaa71\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove default for unit-test coverage option\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/36978db7e494e4e5612aa2a8384199eeca7c4c2d\"\u003e\u003cimg src=\"https://img.shields.io/badge/36978db7e-fix-green\" alt=\"fix - 36978db7e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn about performance of test.exclude in vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6ec36f5bee05d97c10ca8d91d5746621ffb1fdb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/6ec36f5be-fix-green\" alt=\"fix - 6ec36f5be\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn when vitest watch config conflicts with builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9bdf782c838ab5820ec905d689a62ffc3b3cabe3\"\u003e\u003cimg src=\"https://img.shields.io/badge/9bdf782c8-fix-green\" alt=\"fix - 9bdf782c8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eapply forwarded prefix and vary header in accept-language redirects\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/628c586728748e1c367fa7e363299eb79b1566ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/628c58672-fix-green\" alt=\"fix - 628c58672\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport '*' in allowedHosts and warn about security risks\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003ecadf9b201\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003ebbc255419\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003eb1fe66a7f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.22 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5978eeeff63cd62f1515d949eaad0b5e6f7c44cd\"\u003e5978eeeff\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/core\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6e9b926129a9dd79f01d47b7446411b8963ffb62\"\u003e6e9b92612\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6f209c26dc5a454acd1cd76f25240c26978fa827\"\u003e6f209c26d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.23 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/67cfbe32ff013d7c9763253c8ccd383d8ee2416c\"\u003e67cfbe32f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/30186122102ebe1e5b31abe6241d03c94d162e39\"\u003e\u003ccode\u003e3018612\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/349bd4391f41854cdb7b8da5ac18e88465bb4e99\"\u003e\u003ccode\u003e349bd43\u003c/code\u003e\u003c/a\u003e build: update dependency picomatch to v4.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003ccode\u003ecadf9b2\u003c/code\u003e\u003c/a\u003e feat(\u003ccode\u003e@​angular/cli\u003c/code\u003e): support custom port in MCP devserver start tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003ccode\u003ebbc2554\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): allow underscores in host validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/88ac9986ff58d69cca9ae81feea1e35692fa1e84\"\u003e\u003ccode\u003e88ac998\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/022e0efd93dd1b4866305c18c56bbb402090e033\"\u003e\u003ccode\u003e022e0ef\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c363f19712d8cf06a911780da36457fbd35461d5\"\u003e\u003ccode\u003ec363f19\u003c/code\u003e\u003c/a\u003e build: update dependency node to v22.22.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003ccode\u003eb1fe66a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): patch Headers.forEach in cloneRequestAndPatchHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/2aa93fc30918535abe2698bef8984aae57f6c115\"\u003e\u003ccode\u003e2aa93fc\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f33826e3efc7e5d7e9a061dc683111d2f451f7de\"\u003e\u003ccode\u003ef33826e\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.3...v21.2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@eslint/js` from 9.39.4 to 10.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eslint/eslint/releases\"\u003e\u003ccode\u003e@​eslint/js\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev10.0.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c87d5bded54c5cf491eb04c24c9d09bbbd42c23e\"\u003e\u003ccode\u003ec87d5bd\u003c/code\u003e\u003c/a\u003e fix: update eslint (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20531\"\u003e#20531\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/d84100115c14691691058f00779c94e74fca946a\"\u003e\u003ccode\u003ed841001\u003c/code\u003e\u003c/a\u003e fix: update \u003ccode\u003eminimatch\u003c/code\u003e to \u003ccode\u003e10.2.1\u003c/code\u003e to address security vulnerabilities (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20519\"\u003e#20519\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/04c21475b3004904948f02049f2888b401d82c78\"\u003e\u003ccode\u003e04c2147\u003c/code\u003e\u003c/a\u003e fix: update error message for unused suppressions (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20496\"\u003e#20496\u003c/a\u003e) (fnx)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/38b089c1726feac0e31a31d47941bd99e29ce003\"\u003e\u003ccode\u003e38b089c\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​eslint/config-array\u003c/code\u003e to ^0.23.1 (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20484\"\u003e#20484\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/5b3dbce50a1404a9f118afe810cefeee79388a2a\"\u003e\u003ccode\u003e5b3dbce\u003c/code\u003e\u003c/a\u003e docs: add AI acknowledgement section to templates (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20431\"\u003e#20431\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/6f23076037d5879f20fb3be2ef094293b1e8d38c\"\u003e\u003ccode\u003e6f23076\u003c/code\u003e\u003c/a\u003e docs: toggle nav in no-JS mode (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20476\"\u003e#20476\u003c/a\u003e) (Tanuj Kanti)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/b69cfb32a16c5d5e9986390d484fae1d21e406f9\"\u003e\u003ccode\u003eb69cfb3\u003c/code\u003e\u003c/a\u003e docs: Update README (GitHub Actions Bot)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChores\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e5c281ffd038a3a7a3e5364db0b9378e0ad83020\"\u003e\u003ccode\u003ee5c281f\u003c/code\u003e\u003c/a\u003e chore: updates for v9.39.3 release (Jenkins)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/8c3832adb77cd993b4a24891900d5eeaaf093cdc\"\u003e\u003ccode\u003e8c3832a\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e to ^8.56.0 (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20514\"\u003e#20514\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/8330d238ae6adb68bb6a1c9381e38cfedd990d94\"\u003e\u003ccode\u003e8330d23\u003c/code\u003e\u003c/a\u003e test: add tests for config-api (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20493\"\u003e#20493\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/37d6e91e88fa6a2ca6d8726679096acff21ba6cc\"\u003e\u003ccode\u003e37d6e91\u003c/code\u003e\u003c/a\u003e chore: remove eslint v10 prereleases from eslint-config-eslint deps (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20494\"\u003e#20494\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/da7cd0e79197ad16e17052eef99df141de6dbfb1\"\u003e\u003ccode\u003eda7cd0e\u003c/code\u003e\u003c/a\u003e refactor: cleanup error message templates (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20479\"\u003e#20479\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/84fb885d49ac810e79a9491276b4828b53d913e5\"\u003e\u003ccode\u003e84fb885\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release (Jenkins)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1f667344b57c4c09b548d94bcfac1f91b6e5c63d\"\u003e\u003ccode\u003e1f66734\u003c/code\u003e\u003c/a\u003e chore: add \u003ccode\u003eeslint\u003c/code\u003e to \u003ccode\u003epeerDependencies\u003c/code\u003e of \u003ccode\u003e@eslint/js\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20467\"\u003e#20467\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev10.0.0\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f9e54f43a5e497cdfa179338b431093245cb787b\"\u003e\u003ccode\u003ef9e54f4\u003c/code\u003e\u003c/a\u003e feat!: estimate rule-tester failure location (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20420\"\u003e#20420\u003c/a\u003e) (ST-DDT)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a176319d8ade1a7d9b2d7fb8f038f55a2662325f\"\u003e\u003ccode\u003ea176319\u003c/code\u003e\u003c/a\u003e feat!: replace \u003ccode\u003echalk\u003c/code\u003e with \u003ccode\u003estyleText\u003c/code\u003e and add \u003ccode\u003ecolor\u003c/code\u003e to \u003ccode\u003eResultsMeta\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20227\"\u003e#20227\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c7046e6c1e03c4ca0eee4888a1f2eba4c6454f84\"\u003e\u003ccode\u003ec7046e6\u003c/code\u003e\u003c/a\u003e feat!: enable JSX reference tracking (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20152\"\u003e#20152\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/fa31a608901684fbcd9906d1907e66561d16e5aa\"\u003e\u003ccode\u003efa31a60\u003c/code\u003e\u003c/a\u003e feat!: add \u003ccode\u003ename\u003c/code\u003e to configs (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20015\"\u003e#20015\u003c/a\u003e) (Kirk Waiblinger)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/3383e7ec9028166cafc8ea7986c2f7498d0049f0\"\u003e\u003ccode\u003e3383e7e\u003c/code\u003e\u003c/a\u003e fix!: remove deprecated \u003ccode\u003eSourceCode\u003c/code\u003e methods (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20137\"\u003e#20137\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/501abd0e916a35554c58b7c0365537f1fa3880ce\"\u003e\u003ccode\u003e501abd0\u003c/code\u003e\u003c/a\u003e feat!: update dependency minimatch to v10 (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20246\"\u003e#20246\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ca4d3b40085de47561f89656a2207d09946ed45e\"\u003e\u003ccode\u003eca4d3b4\u003c/code\u003e\u003c/a\u003e fix!: stricter rule tester assertions for valid test cases (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20125\"\u003e#20125\u003c/a\u003e) (唯然)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/96512a66c86402fb0538cdcb6cd30b9073f6bf3b\"\u003e\u003ccode\u003e96512a6\u003c/code\u003e\u003c/a\u003e fix!: Remove deprecated rule context methods (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20086\"\u003e#20086\u003c/a\u003e) (Nicholas C. Zakas)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c69fdacdb2e886b9d965568a397aa8220db3fe90\"\u003e\u003ccode\u003ec69fdac\u003c/code\u003e\u003c/a\u003e feat!: remove eslintrc support (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20037\"\u003e#20037\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/208b5cc34a8374ff81412b5bec2e0800eebfbd04\"\u003e\u003ccode\u003e208b5cc\u003c/code\u003e\u003c/a\u003e feat!: Use \u003ccode\u003eScopeManager#addGlobals()\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20132\"\u003e#20132\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a2ee188ea7a38a0c6155f3d39e2b00e1d0f36e14\"\u003e\u003ccode\u003ea2ee188\u003c/code\u003e\u003c/a\u003e fix!: add \u003ccode\u003euniqueItems: true\u003c/code\u003e in \u003ccode\u003eno-invalid-regexp\u003c/code\u003e option (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20155\"\u003e#20155\u003c/a\u003e) (Tanuj Kanti)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a89059dbf2832d417dd493ee81483227ec44e4ab\"\u003e\u003ccode\u003ea89059d\u003c/code\u003e\u003c/a\u003e feat!: Program range span entire source text (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20133\"\u003e#20133\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/39a6424373d915fa9de0d7b0caba9a4dc3da9b53\"\u003e\u003ccode\u003e39a6424\u003c/code\u003e\u003c/a\u003e fix!: assert 'text' is a string across all RuleFixer methods (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20082\"\u003e#20082\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f28fbf846244e043c92b355b224d121b06140b44\"\u003e\u003ccode\u003ef28fbf8\u003c/code\u003e\u003c/a\u003e fix!: Deprecate \u003ccode\u003e\u0026quot;always\u0026quot;\u003c/code\u003e and \u003ccode\u003e\u0026quot;as-needed\u0026quot;\u003c/code\u003e options of the \u003ccode\u003eradix\u003c/code\u003e rule (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20223\"\u003e#20223\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/aa3fb2b233e929b37220be940575f42c280e0b98\"\u003e\u003ccode\u003eaa3fb2b\u003c/code\u003e\u003c/a\u003e fix!: tighten \u003ccode\u003efunc-names\u003c/code\u003e schema (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20119\"\u003e#20119\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f6c0ed0311dcfee853367d5068c765d066e6b756\"\u003e\u003ccode\u003ef6c0ed0\u003c/code\u003e\u003c/a\u003e feat!: report \u003ccode\u003eeslint-env\u003c/code\u003e comments as errors (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20128\"\u003e#20128\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/4bf739fb533e59f7f0a66b65f7bc80be0f37d8db\"\u003e\u003ccode\u003e4bf739f\u003c/code\u003e\u003c/a\u003e fix!: remove deprecated \u003ccode\u003eLintMessage#nodeType\u003c/code\u003e and \u003ccode\u003eTestCaseError#type\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20096\"\u003e#20096\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/523c076866400670fb2192a3f55dbf7ad3469247\"\u003e\u003ccode\u003e523c076\u003c/code\u003e\u003c/a\u003e feat!: drop support for jiti \u0026lt; 2.2.0 (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20016\"\u003e#20016\u003c/a\u003e) (michael faith)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/454a292c95f34dad232411ddac06408e6383bb64\"\u003e\u003ccode\u003e454a292\u003c/code\u003e\u003c/a\u003e feat!: update \u003ccode\u003eeslint:recommended\u003c/code\u003e configuration (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20210\"\u003e#20210\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/4f880ee02992e1bf0e96ebaba679985e2d1295f1\"\u003e\u003ccode\u003e4f880ee\u003c/code\u003e\u003c/a\u003e feat!: remove \u003ccode\u003ev10_*\u003c/code\u003e and inactive \u003ccode\u003eunstable_*\u003c/code\u003e flags (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20225\"\u003e#20225\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f18115c363a4ac7671a4c7f30ee13d57ebba330f\"\u003e\u003ccode\u003ef18115c\u003c/code\u003e\u003c/a\u003e feat!: \u003ccode\u003eno-shadow-restricted-names\u003c/code\u003e report \u003ccode\u003eglobalThis\u003c/code\u003e by default (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20027\"\u003e#20027\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c6358c31fbd3937b92d89be2618ffdf5a774604e\"\u003e\u003ccode\u003ec6358c3\u003c/code\u003e\u003c/a\u003e feat!: Require Node.js \u003ccode\u003e^20.19.0 || ^22.13.0 || \u0026gt;=24\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20160\"\u003e#20160\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/bff9091927811497dbf066b0e3b85ecb37d43822\"\u003e\u003ccode\u003ebff9091\u003c/code\u003e\u003c/a\u003e feat: handle \u003ccode\u003eArray.fromAsync\u003c/code\u003e in \u003ccode\u003earray-callback-return\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20457\"\u003e#20457\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/290c594bb50c439fb71bc75521ee5360daa8c222\"\u003e\u003ccode\u003e290c594\u003c/code\u003e\u003c/a\u003e feat: add \u003ccode\u003eself\u003c/code\u003e to \u003ccode\u003eno-implied-eval\u003c/code\u003e rule (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20468\"\u003e#20468\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/43677de07ebd6e14bfac40a46ad749ba783c45f2\"\u003e\u003ccode\u003e43677de\u003c/code\u003e\u003c/a\u003e feat: fix handling of function and class expression names in \u003ccode\u003eno-shadow\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20432\"\u003e#20432\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/84fb885d49ac810e79a9491276b4828b53d913e5\"\u003e\u003ccode\u003e84fb885\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1f667344b57c4c09b548d94bcfac1f91b6e5c63d\"\u003e\u003ccode\u003e1f66734\u003c/code\u003e\u003c/a\u003e chore: add \u003ccode\u003eeslint\u003c/code\u003e to \u003ccode\u003epeerDependencies\u003c/code\u003e of \u003ccode\u003e@eslint/js\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20467\"\u003e#20467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f3fbc2f60cbe2c718364feb8c3fc0452c0df3c56\"\u003e\u003ccode\u003ef3fbc2f\u003c/code\u003e\u003c/a\u003e chore: set \u003ccode\u003e@eslint/js\u003c/code\u003e version to 10.0.0 to skip releasing it (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20466\"\u003e#20466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/b4b3127f8542c599ce2dea804b6582ebc40c993d\"\u003e\u003ccode\u003eb4b3127\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/0b14059491d830a49b3577931f4f68fbcfce6be5\"\u003e\u003ccode\u003e0b14059\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/fa31a608901684fbcd9906d1907e66561d16e5aa\"\u003e\u003ccode\u003efa31a60\u003c/code\u003e\u003c/a\u003e feat!: add \u003ccode\u003ename\u003c/code\u003e to configs (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20015\"\u003e#20015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1e2cad5f6fa47ed6ed89d2a29798dda926d50990\"\u003e\u003ccode\u003e1e2cad5\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/454a292c95f34dad232411ddac06408e6383bb64\"\u003e\u003ccode\u003e454a292\u003c/code\u003e\u003c/a\u003e feat!: update \u003ccode\u003eeslint:recommended\u003c/code\u003e configuration (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20210\"\u003e#20210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c6358c31fbd3937b92d89be2618ffdf5a774604e\"\u003e\u003ccode\u003ec6358c3\u003c/code\u003e\u003c/a\u003e feat!: Require Node.js \u003ccode\u003e^20.19.0 || ^22.13.0 || \u0026gt;=24\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20160\"\u003e#20160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/eslint/eslint/commits/v10.0.1/packages/js\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@types/jasmine` from 5.1.15 to 6.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@types/node` from 22.19.15 to 25.5.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `angular-eslint` from 21.0.0 to 21.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular-eslint/angular-eslint/releases\"\u003eangular-eslint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.3.1\u003c/h2\u003e\n\u003ch2\u003e21.3.1 (2026-03-17)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2934\"\u003e#2934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enarrow build target cache outputs to avoid clobbering compile artifacts (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enarrow build target cache outputs to avoid clobbering compile artifacts\u0026quot; (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2943\"\u003e#2943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2949\"\u003e#2949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2954\"\u003e#2954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-uncalled-signals] properly handle statements with unary operators (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eprefer-self-closing-tags:\u003c/strong\u003e add selectedcontent nonAriaElements (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2939\"\u003e#2939\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAI-JamesHenry \u003ca href=\"https://github.com/AI-JamesHenry\"\u003e\u003ccode\u003e@​AI-JamesHenry\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebjarketrux\u003c/li\u003e\n\u003cli\u003eDaniil Demenev \u003ca href=\"https://github.com/BEGEMOT9I\"\u003e\u003ccode\u003e@​BEGEMOT9I\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJames Henry \u003ca href=\"https://github.com/JamesHenry\"\u003e\u003ccode\u003e@​JamesHenry\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev21.3.0\u003c/h2\u003e\n\u003ch2\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for ESLint v10 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e add computed-must-return rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-uncalled-signals] detect Signal member access (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2848\"\u003e#2848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e add \u003ccode\u003eno-non-null-assertion\u003c/code\u003e rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.4 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-uncalled-signals] add check \u003ccode\u003eInputSignalWithTransform\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2879\"\u003e#2879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-uncalled-signals] detect \u003ccode\u003eSignal\u003c/code\u003e type correctly (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [prefer-template-literal] preserve nested non string binary \u003ccode\u003e+\u003c/code\u003e operation (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2902\"\u003e#2902\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDave \u003ca href=\"https://github.com/reduckted\"\u003e\u003ccode\u003e@​reduckted\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEvgeny Stepanovych \u003ca href=\"https://github.com/undsoft\"\u003e\u003ccode\u003e@​undsoft\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\u003c/li\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev21.2.0\u003c/h2\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/CHANGELOG.md\"\u003eangular-eslint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.3.1 (2026-03-17)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for angular-eslint to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for ESLint v10 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e add \u003ccode\u003eno-non-null-assertion\u003c/code\u003e rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e add computed-must-return rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvgeny Stepanovych \u003ca href=\"https://github.com/undsoft\"\u003e\u003ccode\u003e@​undsoft\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\u003c/li\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e add prefer-class-binding rule to enforce class binding over ngClass (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2827\"\u003e#2827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-implicit-takeuntil-destroyed] add rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2803\"\u003e#2803\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGabriel J. \u003ca href=\"https://github.com/rznn7\"\u003e\u003ccode\u003e@​rznn7\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKaran Mistry \u003ca href=\"https://github.com/mistrykaran91\"\u003e\u003ccode\u003e@​mistrykaran91\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e add prefer-signal-model rule to encourage using model() for two-way bindings (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2818\"\u003e#2818\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJames Henry \u003ca href=\"https://github.com/JamesHenry\"\u003e\u003ccode\u003e@​JamesHenry\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKaran Mistry\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for angular-eslint to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/8f2afdce28d4cbdac792465b33aff35915af23b5\"\u003e\u003ccode\u003e8f2afdc\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/a959e4d2804bbeb3cbc7caaa9c2fb2be9da3348e\"\u003e\u003ccode\u003ea959e4d\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/3ef7fb157e866d76ae76d41b706b92efbd54d72d\"\u003e\u003ccode\u003e3ef7fb1\u003c/code\u003e\u003c/a\u003e feat: add support for ESLint v10 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/218a8afff65dd506b4cd5452df82fc86f572f020\"\u003e\u003ccode\u003e218a8af\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin-template): add \u003ccode\u003eno-non-null-assertion\u003c/code\u003e rule (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/d86425178e40e8b628c45d848dc122403c0859bb\"\u003e\u003ccode\u003ed864251\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): add computed-must-return rule (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint/issues/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6fa321dc27993f55e6d5bc6e421010bb7b5ef1d3\"\u003e\u003ccode\u003e6fa321d\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/78bd8e36019d2aff506bc4c338d541948a9b2944\"\u003e\u003ccode\u003e78bd8e3\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin-template): add prefer-class-binding rule to enforce class ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/97e7f8837480f3760762ac3d45762912d5dba10f\"\u003e\u003ccode\u003e97e7f88\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): [no-implicit-takeuntil-destroyed] add rule (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint/issues/2803\"\u003e#2803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/4fa7889c54600ba56d29928b8026ff30a16d600b\"\u003e\u003ccode\u003e4fa7889\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/2cd82eb698a9ff97468b078f2707e766db14d389\"\u003e\u003ccode\u003e2cd82eb\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): add prefer-signal-model rule to encourage using model() ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/angular-eslint\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `eslint` from 9.39.4 to 10.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eslint/eslint/releases\"\u003eeslint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev10.1.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ff4382be349035acdb170627a2dc92828e134562\"\u003e\u003ccode\u003eff4382b\u003c/code\u003e\u003c/a\u003e feat: apply fix for \u003ccode\u003eno-var\u003c/code\u003e in \u003ccode\u003eTSModuleBlock\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20638\"\u003e#20638\u003c/a\u003e) (Tanuj Kanti)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/0916995b51528872b15ba4fedb24172cf25fcb3f\"\u003e\u003ccode\u003e0916995\u003c/code\u003e\u003c/a\u003e feat: Implement api support for bulk-suppressions (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20565\"\u003e#20565\u003c/a\u003e) (Blake Sager)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/2b8824e6be4223980e929a20025602df20d05ea2\"\u003e\u003ccode\u003e2b8824e\u003c/code\u003e\u003c/a\u003e fix: Prevent \u003ccode\u003eno-var\u003c/code\u003e autofix when a variable is used before declaration (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20464\"\u003e#20464\u003c/a\u003e) (Amaresh  S M)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e58b4bff167e79afd067d1b0ee9360bec2d3393e\"\u003e\u003ccode\u003ee58b4bf\u003c/code\u003e\u003c/a\u003e fix: update eslint (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20597\"\u003e#20597\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/b7b57fe9942c572ff651230f1f96cefed787ca52\"\u003e\u003ccode\u003eb7b57fe\u003c/code\u003e\u003c/a\u003e docs: use correct JSDoc link in require-jsdoc.md (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20641\"\u003e#20641\u003c/a\u003e) (mkemna-clb)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/58e4cfc7dbf0fe40c73f09bf0ff94ad944d0ba0e\"\u003e\u003ccode\u003e58e4cfc\u003c/code\u003e\u003c/a\u003e docs: add deprecation notice partial (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20639\"\u003e#20639\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/7143dbf99df27c61edf1552da981794e99a0b2f2\"\u003e\u003ccode\u003e7143dbf\u003c/code\u003e\u003c/a\u003e docs: update v9 migration guide for \u003ccode\u003e@eslint/js\u003c/code\u003e usage (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20540\"\u003e#20540\u003c/a\u003e) (fnx)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/035fc4fbe506e3e4524882cf50db37a4e430adf4\"\u003e\u003ccode\u003e035fc4f\u003c/code\u003e\u003c/a\u003e docs: note that \u003ccode\u003eglobalReturn\u003c/code\u003e applies only with \u003ccode\u003esourceType: \u0026quot;script\u0026quot;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20630\"\u003e#20630\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e972c88ab7474a74191ee99ac2558b00d0427a8a\"\u003e\u003ccode\u003ee972c88\u003c/code\u003e\u003c/a\u003e docs: merge ESLint option descriptions into type definitions (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20608\"\u003e#20608\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/7f10d8440137f0cfd75f18f4746ba6a1c621b953\"\u003e\u003ccode\u003e7f10d84\u003c/code\u003e\u003c/a\u003e docs: Update README (GitHub Actions Bot)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/aeed0078ca2f73d4744cc522102178d45b5be64e\"\u003e\u003ccode\u003eaeed007\u003c/code\u003e\u003c/a\u003e docs: open playground link in new tab (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20602\"\u003e#20602\u003c/a\u003e) (Tanuj Kanti)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a0d1a3772679d3d74bb860fc65b5b58678acd452\"\u003e\u003ccode\u003ea0d1a37\u003c/code\u003e\u003c/a\u003e docs: Add AI Usage Policy (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20510\"\u003e#20510\u003c/a\u003e) (Nicholas C. Zakas)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChores\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a9f9cce82d80b540a0e3549d0e91c16df28740d8\"\u003e\u003ccode\u003ea9f9cce\u003c/code\u003e\u003c/a\u003e chore: update dependency eslint-plugin-unicorn to ^63.0.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20584\"\u003e#20584\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1f42bd7876ae4192cf7f7f4faf73b4ef3d2563cb\"\u003e\u003ccode\u003e1f42bd7\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003eprettier\u003c/code\u003e to 3.8.1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20651\"\u003e#20651\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c0a6f4a2b4169edeca2a81bf7b47783e39ade366\"\u003e\u003ccode\u003ec0a6f4a\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/json\u003c/code\u003e to ^1.2.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20652\"\u003e#20652\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/cc43f795c42e5ec2f19bb43b1f6d534ef2e469f3\"\u003e\u003ccode\u003ecc43f79\u003c/code\u003e\u003c/a\u003e chore: update dependency c8 to v11 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20650\"\u003e#20650\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/2ce4635b036ff2665c7009afddf9c0fb2274dceb\"\u003e\u003ccode\u003e2ce4635\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/json\u003c/code\u003e to v1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20649\"\u003e#20649\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f0406eedcc3dc415babbbf6bbdb5db1eebfd487b\"\u003e\u003ccode\u003ef0406ee\u003c/code\u003e\u003c/a\u003e chore: update dependency markdownlint-cli2 to ^0.21.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20646\"\u003e#20646\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/dbb4c9582a00bac604d5c6ac671bb7111468a846\"\u003e\u003ccode\u003edbb4c95\u003c/code\u003e\u003c/a\u003e chore: remove trunk (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20478\"\u003e#20478\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c672a2a70579fddf1c6ce33dfa712d705726e1c9\"\u003e\u003ccode\u003ec672a2a\u003c/code\u003e\u003c/a\u003e test: fix CLI test for empty output file (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20640\"\u003e#20640\u003c/a\u003e) (kuldeep kumar)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c7ada2455680036bbfc42fcb1511ff28afe3c587\"\u003e\u003ccode\u003ec7ada24\u003c/code\u003e\u003c/a\u003e ci: bump pnpm/action-setup from 4.3.0 to 4.4.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20636\"\u003e#20636\u003c/a\u003e) (dependabot[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/07c4b8b4a9f49145e60a3448dd57853213ed4de3\"\u003e\u003ccode\u003e07c4b8b\u003c/code\u003e\u003c/a\u003e test: fix \u003ccode\u003eRuleTester\u003c/code\u003e test without test runners (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20631\"\u003e#20631\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/079bba7ff17d0a99fdffe32bf991d005ba797fae\"\u003e\u003ccode\u003e079bba7\u003c/code\u003e\u003c/a\u003e test: Add tests for \u003ccode\u003eisValidWithUnicodeFlag\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20601\"\u003e#20601\u003c/a\u003e) (Manish chaudhary)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/5885ae66216bcee9310bbf73786b7d7d5774aeaf\"\u003e\u003ccode\u003e5885ae6\u003c/code\u003e\u003c/a\u003e ci: unpin Node.js 25.x in CI (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20615\"\u003e#20615\u003c/a\u003e) (Copilot)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f65e5d3c0df65fdb317ad6d23f7ae113c5f4b6d7\"\u003e\u003ccode\u003ef65e5d3\u003c/code\u003e\u003c/a\u003e chore: update pnpm/action-setup digest to b906aff (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20610\"\u003e#20610\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev10.0.3\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e511b58d5ecd63a232b87743614867f4eaadbba4\"\u003e\u003ccode\u003ee511b58\u003c/code\u003e\u003c/a\u003e fix: update eslint (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20595\"\u003e#20595\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f4c9cf9b8dc5642de555a09295933464080d722a\"\u003e\u003ccode\u003ef4c9cf9\u003c/code\u003e\u003c/a\u003e fix: include variable name in \u003ccode\u003eno-useless-assignment\u003c/code\u003e message (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20581\"\u003e#20581\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ee9ff31cee13712d2be2a6b5c0a4a54449fe9fe1\"\u003e\u003ccode\u003eee9ff31\u003c/code\u003e\u003c/a\u003e fix: update dependency minimatch to ^10.2.4 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20562\"\u003e#20562\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/9fc31b03ef05abfc4f0f449b22947029d51a72f6\"\u003e\u003ccode\u003e9fc31b0\u003c/code\u003e\u003c/a\u003e docs: Update README (GitHub Actions Bot)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/4efaa367c62d5a45dd21e246e4a506e11dd51758\"\u003e\u003ccode\u003e4efaa36\u003c/code\u003e\u003c/a\u003e docs: add info box for \u003ccode\u003eeslint-plugin-eslint-comments\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20570\"\u003e#20570\u003c/a\u003e) (DesselBane)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/23b2759dd5cd70976ab2e8f4a1cf86ffe4b9f65d\"\u003e\u003ccode\u003e23b2759\u003c/code\u003e\u003c/a\u003e docs: add v10 migration guide link to Use docs index (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20577\"\u003e#20577\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/80259a9b0d9e29596a5ef0e1e5269031636cacdb\"\u003e\u003ccode\u003e80259a9\u003c/code\u003e\u003c/a\u003e docs: Remove deprecated eslintrc documentation files (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20472\"\u003e#20472\u003c/a\u003e) (Copilot)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/9b9b4baf7f0515d28290464ea754d7e7dc350395\"\u003e\u003ccode\u003e9b9b4ba\u003c/code\u003e\u003c/a\u003e docs: fix typo in no-await-in-loop documentation (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20575\"\u003e#20575\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e7d72a77e5e1277690a505160137aebd5985909a\"\u003e\u003ccode\u003ee7d72a7\u003c/code\u003e\u003c/a\u003e docs: document TypeScript 5.3 minimum supported version (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20547\"\u003e#20547\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChores\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ef8fb924bfabc2e239b46b2d7b3c37319b03084e\"\u003e\u003ccode\u003eef8fb92\u003c/code\u003e\u003c/a\u003e chore: package.json update for eslint-config-eslint release (Jenkins)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/8351ec7aaa0f7d4753ff39bb9d6260f2ac9e1f1a\"\u003e\u003ccode\u003e8351ec7\u003c/code\u003e\u003c/a\u003e 10.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/3270bc12165d62646fd0edaab2c28809302663a1\"\u003e\u003ccode\u003e3270bc1\u003c/code\u003e\u003c/a\u003e Build: changelog update for 10.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a9f9cce82d80b540a0e3549d0e91c16df28740d8\"\u003e\u003ccode\u003ea9f9cce\u003c/code\u003e\u003c/a\u003e chore: update dependency eslint-plugin-unicorn to ^63.0.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20584\"\u003e#20584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1f42bd7876ae4192cf7f7f4faf73b4ef3d2563cb\"\u003e\u003ccode\u003e1f42bd7\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003eprettier\u003c/code\u003e to 3.8.1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20651\"\u003e#20651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c0a6f4a2b4169edeca2a81bf7b47783e39ade366\"\u003e\u003ccode\u003ec0a6f4a\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/json\u003c/code\u003e to ^1.2.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20652\"\u003e#20652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/cc43f795c42e5ec2f19bb43b1f6d534ef2e469f3\"\u003e\u003ccode\u003ecc43f79\u003c/code\u003e\u003c/a\u003e chore: update dependency c8 to v11 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/2ce4635b036ff2665c7009afddf9c0fb2274dceb\"\u003e\u003ccode\u003e2ce4635\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/json\u003c/code\u003e to v1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f0406eedcc3dc415babbbf6bbdb5db1eebfd487b\"\u003e\u003ccode\u003ef0406ee\u003c/code\u003e\u003c/a\u003e chore: update dependency markdownlint-cli2 to ^0.21.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20646\"\u003e#20646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/dbb4c9582a00bac604d5c6ac671bb7111468a846\"\u003e\u003ccode\u003edbb4c95\u003c/code\u003e\u003c/a\u003e chore: remove trunk (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20478\"\u003e#20478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ff4382be349035acdb170627a2dc92828e134562\"\u003e\u003ccode\u003eff4382b\u003c/code\u003e\u003c/a\u003e feat: apply fix for \u003ccode\u003eno-var\u003c/code\u003e in \u003ccode\u003eTSModuleBlock\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20638\"\u003e#20638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eslint/eslint/compare/v9.39.4...v10.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jasmine-core` from 5.9.0 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jasmine/jasmine/releases\"\u003ejasmine-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.1.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.1.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-beta.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-beta.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-beta.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-beta.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.2\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.2.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.13.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.13.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.12.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.12.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.12.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.12.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.11.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.11.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.10.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.10.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/3de4512681fa31332f332f70314795f7d7037a3f\"\u003e\u003ccode\u003e3de4512\u003c/code\u003e\u003c/a\u003e Bump version to 6.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/4bf333ed38b50ab26593226e0f5ca4f1280f3c89\"\u003e\u003ccode\u003e4bf333e\u003c/code\u003e\u003c/a\u003e rm unnecessary and deprecated eslint-env comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/4f5ef7c2d7053ff9c8a0c31060c54ab31e5e7c08\"\u003e\u003ccode\u003e4f5ef7c\u003c/code\u003e\u003c/a\u003e Drop support for Safari 16 and 17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/5de03beea14cb40467a22c48007dc1148371ecd7\"\u003e\u003ccode\u003e5de03be\u003c/code\u003e\u003c/a\u003e Fix test failure in Node 20 and 22 parallel tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/42baa422b3fb28ffc69048e4d36b32667f6257bf\"\u003e\u003ccode\u003e42baa42\u003c/code\u003e\u003c/a\u003e Formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/6af5d24b3b2ef3a242b20113d01891930e76d61d\"\u003e\u003ccode\u003e6af5d24\u003c/code\u003e\u003c/a\u003e Improve formatting of AggregateErrors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/b88ce2d49f54f1baa91658509cce1f941a0c62b2\"\u003e\u003ccode\u003eb88ce2d\u003c/code\u003e\u003c/a\u003e Improve AggregateError specs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/c216ae1d132bb4a0d010b85d3328bc1d3c72b45b\"\u003e\u003ccode\u003ec216ae1\u003c/code\u003e\u003c/a\u003e Merge branch 'puglyfe-aggregate-errors'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/319776d2413f42c3da13d6a605118cdcf775e541\"\u003e\u003ccode\u003e319776d\u003c/code\u003e\u003c/a\u003e Report the constituent errors of an AggregateError\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/1d0718dc2f48db5a9ffb6ff90f324703b805a58c\"\u003e\u003ccode\u003e1d0718d\u003c/code\u003e\u003c/a\u003e Fix MAX_PRETTY_PRINT_CHARS default jsdoc in source code too\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jasmine/jasmine/compare/v5.9.0...v6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `karma-jasmine-html-reporter` from 2.1.0 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/releases\"\u003ekarma-jasmine-html-reporter's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Jasmine 6\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\"\u003ehttps://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/commit/12405b839cef2cd3e16540a3ff7b2f51a1517e0a\"\u003e\u003ccode\u003e12405b8\u003c/code\u003e\u003c/a\u003e Minor fix to package.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/commit/7a82a4145d784b5124762b9e8da05be07953a41f\"\u003e\u003ccode\u003e7a82a41\u003c/code\u003e\u003c/a\u003e Add support for Jasmine 6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `knip` from 5.88.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/webpro-nl/knip/releases\"\u003eknip's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/zitadel/example-auth-angular/pull/52","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/zitadel%2Fexample-auth-angular/issues/52","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/52/packages"},{"uuid":"4156813827","node_id":"PR_kwDORfflTs7OMtOj","number":13,"state":"closed","title":"chore(deps-dev): bump @types/jasmine from 5.1.15 to 6.0.0","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-28T01:14:17.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-28T01:12:04.000Z","updated_at":"2026-03-28T01:14:24.000Z","time_to_close":133,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/embmeals/emills-v2/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/embmeals%2Femills-v2/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"},{"uuid":"4148872326","node_id":"PR_kwDOQ_8DsM7N7KpR","number":14,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 31 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-27T03:12:45.000Z","updated_at":"2026-03-27T03:16:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":31,"packages":[{"name":"@angular/animations","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.0.6","new_version":"21.2.4","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@iharbeck/ngx-virtual-scroller","old_version":"19.0.1","new_version":"20.0.0","repository_url":"https://github.com/iharbeck/ngx-virtual-scroller"},{"name":"@primeng/themes","old_version":"21.0.2","new_version":"21.0.4","repository_url":"https://github.com/primefaces/primeng"},{"name":"@stomp/stompjs","old_version":"7.2.1","new_version":"7.3.0","repository_url":"https://github.com/stomp-js/stompjs"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"primeng","old_version":"21.0.2","new_version":"21.1.3","repository_url":"https://github.com/primefaces/primeng"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular/build","old_version":"21.0.5","new_version":"21.2.4","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.0.5","new_version":"21.2.4","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@types/jasmine","old_version":"5.1.14","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/node","old_version":"25.0.6","new_version":"25.5.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.16","new_version":"4.1.2","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.1.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"autoprefixer","old_version":"10.4.23","new_version":"10.4.27","repository_url":"https://github.com/postcss/autoprefixer"},{"name":"eslint","old_version":"9.39.2","new_version":"10.1.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine-core","old_version":"5.13.0","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"jsdom","old_version":"27.4.0","new_version":"29.0.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"tailwindcss","old_version":"3.4.19","new_version":"4.2.2","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.52.0","new_version":"8.57.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 30 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.0.8` | `21.2.6` |\n| [@angular/cdk](https://github.com/angular/components) | `21.0.6` | `21.2.4` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.0.8` | `21.2.6` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.0.8` | `21.2.6` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.0.8` | `21.2.6` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.0.8` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.0.8` | `21.2.6` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.0.8` | `21.2.6` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.0.8` | `21.2.6` |\n| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller) | `19.0.1` | `20.0.0` |\n| [@primeng/themes](https://github.com/primefaces/primeng/tree/HEAD/packages/themes) | `21.0.2` | `21.0.4` |\n| [@stomp/stompjs](https://github.com/stomp-js/stompjs) | `7.2.1` | `7.3.0` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.0.2` | `21.1.3` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.0.5` | `21.2.4` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.0.5` | `21.2.4` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.0.8` | `21.2.6` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.14` | `6.0.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.6` | `25.5.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.16` | `4.1.2` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.1.0` | `21.3.1` |\n| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.23` | `10.4.27` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.1.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.13.0` | `6.1.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `29.0.1` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `3.4.19` | `4.2.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.52.0` | `8.57.2` |\n\n\nUpdates `@angular/animations` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003eb4ab6ba2e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e880a57d4b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003ead0156e056\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e73d6b01b47\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.4 (2026-03-18)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLeave animations are no longer limited to the element being removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChangeDetectorRef.checkNoChanges\u003c/code\u003e was removed. In tests use \u003ccode\u003efixture.detectChanges()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/412788fac9c82ddf94b3f5ad0b141098c8101b0b\"\u003e412788fac9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/75560ce43d7422a131ae86f2312c478754d035aa\"\u003e75560ce43d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406\"\u003ed99ab0e040\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estop generating unused field\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2bd708fb6bc3ada19c5dd21077a7f609996f6346\"\u003e2bd708fb6b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9769560da73efee4793dfdc1459c8b1ac10981de\"\u003e9769560da7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5\"\u003e7a0d6b8df2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etransform dropping exclamationToken from properties\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401\"\u003edf659b8d0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ere-introduce nested leave animations scoped to component boundaries\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f\"\u003edc3131c639\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eTestBed.getFixture -\u0026gt; TestBed.getLastFixture and update implementation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc0446552af76bfcac4642c975b293d4dcb93d46\"\u003edc0446552a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/523d69a7685a3437f1f6ef8fedfd26c52d2d3bb1\"\u003e523d69a768\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a\"\u003e69fb1614ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003echeckNoChanges\u003c/code\u003e from the public API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315\"\u003e3983080236\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport ngNoCva as an opt-out for ControlValueAccessors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.0.6 to 21.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003e\u003cimg src=\"https://img.shields.io/badge/cebf303417-fix-green\" alt=\"fix - cebf303417\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003echeckbox:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/2abe8e6b7330f5281b560b202ab70bdf593782cc\"\u003e\u003cimg src=\"https://img.shields.io/badge/2abe8e6b73-fix-green\" alt=\"fix - 2abe8e6b73\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e render backdrop for context menu if explicitly opted in (\u003ca href=\"https://redirect.github.com/angular/components/issues/32845\"\u003e#32845\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f7308dc4b5e539c2ccacf138a7997f9f5fdf03\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2f7308dc4-fix-green\" alt=\"fix - e2f7308dc4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eradio:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c1295c5818c820ab182727b4f85e5f55a05f6385\"\u003e\u003cimg src=\"https://img.shields.io/badge/c1295c5818-fix-green\" alt=\"fix - c1295c5818\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e itemSelected not emitted when menu is attached to a trigger (\u003ca href=\"https://redirect.github.com/angular/components/issues/32880\"\u003e#32880\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/17c19cc73b4e7e24ae5579c32ae5a784d92c2a12\"\u003e\u003cimg src=\"https://img.shields.io/badge/17c19cc73b-fix-green\" alt=\"fix - 17c19cc73b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eexpand type for restoreFocus (\u003ca href=\"https://redirect.github.com/angular/components/issues/32877\"\u003e#32877\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.0\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8c4526935ef7e960ed4245a4621d41065ba34e3b\"\u003e\u003cimg src=\"https://img.shields.io/badge/8c4526935e-fix-green\" alt=\"fix - 8c4526935e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e expose strong focus indicator structural styles (\u003ca href=\"https://redirect.github.com/angular/components/issues/32808\"\u003e#32808\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/7fe308114829c4ce454cc247e59e59387ee7fd17\"\u003e\u003cimg src=\"https://img.shields.io/badge/7fe3081148-fix-green\" alt=\"fix - 7fe3081148\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e drop dependency on NgClass (\u003ca href=\"https://redirect.github.com/angular/components/issues/32810\"\u003e#32810\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cd5209e9f59c8bd31de29d03fd743452d8ae3d03\"\u003e\u003cimg src=\"https://img.shields.io/badge/cd5209e9f5-fix-green\" alt=\"fix - cd5209e9f5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eportal:\u003c/strong\u003e allow bindings to be passed to component portal (\u003ca href=\"https://redirect.github.com/angular/components/issues/32814\"\u003e#32814\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e397ecbcfad4e85fde8d116faf5caa80dcddca45\"\u003e\u003cimg src=\"https://img.shields.io/badge/e397ecbcfa-fix-green\" alt=\"fix - e397ecbcfa\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etable:\u003c/strong\u003e remove string-based DI tokens (\u003ca href=\"https://redirect.github.com/angular/components/issues/32677\"\u003e#32677\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.4 \u0026quot;hassium-halfpipe\u0026quot; (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e87aa6d977\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/pull/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.2 \u0026quot;hassium-helicopter\u0026quot; (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a46b0a1d4200bf74b036c25ee477d22025f444c8\"\u003ea46b0a1d4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e add mixins for Material Design typography (\u003ca href=\"https://redirect.github.com/angular/components/pull/32959\"\u003e#32959\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ff7d697ec5ed280d3e28029571bc86d7c0c2c3a8\"\u003eff7d697ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/pull/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.1 \u0026quot;22-0-0\u0026quot; (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/0767a3cb4fe9f6fd3496cea991592855cf885b3a\"\u003e0767a3cb4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/pull/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/46b67d15053ce31b4742b809f1777b32eb2f1863\"\u003e46b67d150\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/pull/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6ed6218c474bfe4578b17d2391d8677fe92671cc\"\u003e6ed6218c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e incorrect animation variable name (\u003ca href=\"https://redirect.github.com/angular/components/pull/32941\"\u003e#32941\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.3 \u0026quot;21-2-3\u0026quot; (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e688deda58\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/pull/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e917526511\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/pull/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.0 \u0026quot;plastic-bear\u0026quot; (2026-03-11)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f556281ba1d7ba4327ab6a3253bbb1828886e1cd\"\u003e\u003ccode\u003ef556281\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/df6718b9db92385f9781c40bcbcf45454282ec59\"\u003e\u003ccode\u003edf6718b\u003c/code\u003e\u003c/a\u003e refactor(youtube-player): avoid build errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/7db3d111ff6f21d8f7a5afb06add6e9763b1c77f\"\u003e\u003ccode\u003e7db3d11\u003c/code\u003e\u003c/a\u003e test(multiple): remove usage of deprecated API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ef1be1ea232bdf379c71a4ce97bf9b09ddd96702\"\u003e\u003ccode\u003eef1be1e\u003c/code\u003e\u003c/a\u003e docs(aria/grid): calendar example with arrow key scrolling (\u003ca href=\"https://redirect.github.com/angular/components/issues/32323\"\u003e#32323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/12163dc0d5ee82122b657fb477b34fb81520dfc3\"\u003e\u003ccode\u003e12163dc\u003c/code\u003e\u003c/a\u003e build: update dependency node to v22.22.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32973\"\u003e#32973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/fd215163d615c4113a4fa23e047ba2e02fa74f9c\"\u003e\u003ccode\u003efd21516\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fix typo in aria-accessible-name comment (\u003ca href=\"https://redirect.github.com/angular/components/issues/32703\"\u003e#32703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/82ab19160613a0b9ae1080d6f3776616bf7fbe13\"\u003e\u003ccode\u003e82ab191\u003c/code\u003e\u003c/a\u003e docs(cdk/overlay): rename template variable from trigger to origin in example...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c2b85560847d9b69291004663e0917dfd590928c\"\u003e\u003ccode\u003ec2b8556\u003c/code\u003e\u003c/a\u003e docs(material/button): document iconPositionEnd and matButtonIcon attributes ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5e83cb26a3f57e9995a52d3200f8386571ba0703\"\u003e\u003ccode\u003e5e83cb2\u003c/code\u003e\u003c/a\u003e docs: update remaining NgModule prose references to standalone pattern (\u003ca href=\"https://redirect.github.com/angular/components/issues/32825\"\u003e#32825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f86039779ff11dda144721c1fa8a846aa5f0e2ce\"\u003e\u003ccode\u003ef860397\u003c/code\u003e\u003c/a\u003e docs: use standalone import in getting-started guide (\u003ca href=\"https://redirect.github.com/angular/components/issues/32826\"\u003e#32826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.0.6...v21.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003eb4ab6ba2e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e880a57d4b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003ead0156e056\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e73d6b01b47\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.4 (2026-03-18)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLeave animations are no longer limited to the element being removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChangeDetectorRef.checkNoChanges\u003c/code\u003e was removed. In tests use \u003ccode\u003efixture.detectChanges()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/412788fac9c82ddf94b3f5ad0b141098c8101b0b\"\u003e412788fac9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/75560ce43d7422a131ae86f2312c478754d035aa\"\u003e75560ce43d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406\"\u003ed99ab0e040\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estop generating unused field\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2bd708fb6bc3ada19c5dd21077a7f609996f6346\"\u003e2bd708fb6b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9769560da73efee4793dfdc1459c8b1ac10981de\"\u003e9769560da7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5\"\u003e7a0d6b8df2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etransform dropping exclamationToken from properties\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401\"\u003edf659b8d0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ere-introduce nested leave animations scoped to component boundaries\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f\"\u003edc3131c639\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eTestBed.getFixture -\u0026gt; TestBed.getLastFixture and update implementation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc0446552af76bfcac4642c975b293d4dcb93d46\"\u003edc0446552a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/523d69a7685a3437f1f6ef8fedfd26c52d2d3bb1\"\u003e523d69a768\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a\"\u003e69fb1614ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003echeckNoChanges\u003c/code\u003e from the public API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315\"\u003e3983080236\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport ngNoCva as an opt-out for ControlValueAccessors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003ccode\u003e277ade9\u003c/code\u003e\u003c/a\u003e fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/aeb9b819d2cda782de85338dc9a5457c11e51bfe\"\u003e\u003ccode\u003eaeb9b81\u003c/code\u003e\u003c/a\u003e refactor(http): Improves base64 encoding/decoding with feature detection (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ecf0bb466875d17e0823f2d793491c6f354d6c34\"\u003e\u003ccode\u003eecf0bb4\u003c/code\u003e\u003c/a\u003e test(http): refactors HTTP client tests to use TestBed and providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003ccode\u003ee2e9a9a\u003c/code\u003e\u003c/a\u003e fix(core): adds transfer cache to httpResource to fix hydration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70e4c7fbabb45277cf76ee138c0be275beec7919\"\u003e\u003ccode\u003e70e4c7f\u003c/code\u003e\u003c/a\u003e refactor(common): log a warning when a KeyValuePipe receives a signal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2eeeabb7606900ad4fe8e3370d73f6add985f35d\"\u003e\u003ccode\u003e2eeeabb\u003c/code\u003e\u003c/a\u003e fix(common): fix LCP image detection with duplicate URLs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003eb4ab6ba2e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e880a57d4b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003ead0156e056\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e73d6b01b47\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.4 (2026-03-18)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLeave animations are no longer limited to the element being removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChangeDetectorRef.checkNoChanges\u003c/code\u003e was removed. In tests use \u003ccode\u003efixture.detectChanges()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/412788fac9c82ddf94b3f5ad0b141098c8101b0b\"\u003e412788fac9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/75560ce43d7422a131ae86f2312c478754d035aa\"\u003e75560ce43d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406\"\u003ed99ab0e040\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estop generating unused field\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2bd708fb6bc3ada19c5dd21077a7f609996f6346\"\u003e2bd708fb6b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9769560da73efee4793dfdc1459c8b1ac10981de\"\u003e9769560da7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5\"\u003e7a0d6b8df2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etransform dropping exclamationToken from properties\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401\"\u003edf659b8d0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ere-introduce nested leave animations scoped to component boundaries\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f\"\u003edc3131c639\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eTestBed.getFixture -\u0026gt; TestBed.getLastFixture and update implementation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc0446552af76bfcac4642c975b293d4dcb93d46\"\u003edc0446552a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/523d69a7685a3437f1f6ef8fedfd26c52d2d3bb1\"\u003e523d69a768\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a\"\u003e69fb1614ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003echeckNoChanges\u003c/code\u003e from the public API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315\"\u003e3983080236\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport ngNoCva as an opt-out for ControlValueAccessors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003ccode\u003eed2d324\u003c/code\u003e\u003c/a\u003e fix(compiler): disallow translations of iframe src\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003ccode\u003e1df1697\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent mutation of children array in RecursiveVisitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/95b3f37d4a7d9a38f616d56df746dfcda3c2139b\"\u003e\u003ccode\u003e95b3f37\u003c/code\u003e\u003c/a\u003e feat(compiler): Exhaustive checks for switch blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c5658adb1146b24ebf31fef534c4bbae1ced548\"\u003e\u003ccode\u003e9c5658a\u003c/code\u003e\u003c/a\u003e refactor(compiler): clean up pipeline compatibility distinction\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6e0d783e5b5a256c0aa2fb1d3e008677c0603382\"\u003e\u003ccode\u003e6e0d783\u003c/code\u003e\u003c/a\u003e refactor(compiler): Add info about unclosed element.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/06d94ac0caacce20d5afbdb1e940911bdc500d78\"\u003e\u003ccode\u003e06d94ac\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(compiler): Add info about unclosed element.\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/097208454bb0d5ebaad701a991125d2a33d1f79b\"\u003e\u003ccode\u003e0972084\u003c/code\u003e\u003c/a\u003e refactor(compiler): Add info about unclosed element.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/compiler\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/core` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003eb4ab6ba2e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e880a57d4b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003ead0156e056\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e73d6b01b47\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.4 (2026-03-18)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLeave animations are no longer limited to the element being removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChangeDetectorRef.checkNoChanges\u003c/code\u003e was removed. In tests use \u003ccode\u003efixture.detectChanges()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/412788fac9c82ddf94b3f5ad0b141098c8101b0b\"\u003e412788fac9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/75560ce43d7422a131ae86f2312c478754d035aa\"\u003e75560ce43d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406\"\u003ed99ab0e040\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estop generating unused field\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2bd708fb6bc3ada19c5dd21077a7f609996f6346\"\u003e2bd708fb6b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9769560da73efee4793dfdc1459c8b1ac10981de\"\u003e9769560da7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5\"\u003e7a0d6b8df2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etransform dropping exclamationToken from properties\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401\"\u003edf659b8d0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ere-introduce nested leave animations scoped to component boundaries\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f\"\u003edc3131c639\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eTestBed.getFixture -\u0026gt; TestBed.getLastFixture and update implementation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc0446552af76bfcac4642c975b293d4dcb93d46\"\u003edc0446552a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/523d69a7685a3437f1f6ef8fedfd26c52d2d3bb1\"\u003e523d69a768\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a\"\u003e69fb1614ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003echeckNoChanges\u003c/code\u003e from the public API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315\"\u003e3983080236\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport ngNoCva as an opt-out for ControlValueAccessors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c1579163b7464edc69f7fa0548f53d978b007021\"\u003e\u003ccode\u003ec157916\u003c/code\u003e\u003c/a\u003e build: consolidate domino bundling in platform-server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9be5e2c2113db3fe5d799663b6539d34d1e18f47\"\u003e\u003ccode\u003e9be5e2c\u003c/code\u003e\u003c/a\u003e docs: fix typo in Input decorator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a21be36e15a6d9cf21722f9f6a31dad9380037e9\"\u003e\u003ccode\u003ea21be36\u003c/code\u003e\u003c/a\u003e refactor: prepare for required \u003ccode\u003echangeDetection\u003c/code\u003e prop on G3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/831746eff1e7442bfc96bfa739f54091b26a7997\"\u003e\u003ccode\u003e831746e\u003c/code\u003e\u003c/a\u003e docs: Add callout about the Component interface.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003ccode\u003ead0156e\u003c/code\u003e\u003c/a\u003e fix(core): fixes a regression with animate.leave and reordering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003ccode\u003e73d6b01\u003c/code\u003e\u003c/a\u003e fix(migrations): inject migration not work in multi-project workspace with op...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/3838554503dfe0585e4df93547741fbc34a150d1\"\u003e\u003ccode\u003e3838554\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/851ef77318541580d186d7f1c02061cc615450da\"\u003e\u003ccode\u003e851ef77\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): Ensure determineLongestAnimation is run synchronously...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003ccode\u003e076d41c\u003c/code\u003e\u003c/a\u003e fix(migrations): prevent trailing comma syntax errors after removing NgStyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a8f80c1f995dd7bab6ee1d42f033ebc3d101e9bd\"\u003e\u003ccode\u003ea8f80c1\u003c/code\u003e\u003c/a\u003e refactor(core): declare explicit reactive node prototypes types\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/forms` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th...\n\n_Description has been truncated_","html_url":"https://github.com/wqj666666/booklore-alist-zh/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wqj666666%2Fbooklore-alist-zh/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"},{"uuid":"4140266754","node_id":"PR_kwDOCEdUp87NkPFP","number":62,"state":"closed","title":"Bump @types/jasmine from 2.8.8 to 6.0.0 in /CalcGachaProbTool","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-03-26T03:55:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-26T03:44:46.000Z","updated_at":"2026-03-26T03:55:18.000Z","time_to_close":622,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"@types/jasmine","old_version":"2.8.8","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/CalcGachaProbTool","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 2.8.8 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=2.8.8\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/YSRKEN/CalcGachaProbTool/pull/62","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/YSRKEN%2FCalcGachaProbTool/issues/62","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/62/packages"},{"uuid":"4110955514","node_id":"PR_kwDOQ3_DZs7MS_Oz","number":156,"state":"closed","title":"chore(deps): bump the npm_and_yarn group in /src/angular with 29 updates","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-21T14:55:00.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-21T01:48:43.000Z","updated_at":"2026-03-21T14:55:09.000Z","time_to_close":47177,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm_and_yarn","update_count":29,"packages":[{"name":"@angular/animations","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"19.2.19","new_version":"21.2.3","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"immutable","old_version":"4.3.7","new_version":"5.1.5","repository_url":"https://github.com/immutable-js/immutable-js"},{"name":"jquery","old_version":"3.7.1","new_version":"4.0.0","repository_url":"https://github.com/jquery/jquery"},{"name":"zone.js","old_version":"0.15.1","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular-devkit/build-angular","old_version":"19.2.19","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"19.2.19","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@playwright/test","old_version":"1.58.0","new_version":"1.58.2","repository_url":"https://github.com/microsoft/playwright"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/node","old_version":"22.19.7","new_version":"25.5.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@eslint/js","old_version":"9.39.2","new_version":"10.0.1","repository_url":"https://github.com/eslint/eslint"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.54.0","new_version":"8.57.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@typescript-eslint/parser","old_version":"8.54.0","new_version":"8.57.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"eslint","old_version":"9.39.2","new_version":"10.1.0","repository_url":"https://github.com/eslint/eslint"},{"name":"globals","old_version":"16.5.0","new_version":"17.4.0","repository_url":"https://github.com/sindresorhus/globals"},{"name":"typescript-eslint","old_version":"8.54.0","new_version":"8.57.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"jasmine-core","old_version":"5.1.2","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"sass","old_version":"1.97.3","new_version":"1.98.0","repository_url":"https://github.com/sass/dart-sass"},{"name":"playwright","old_version":"1.58.0","new_version":"1.58.2","repository_url":"https://github.com/microsoft/playwright"},{"name":"typescript","old_version":"5.7.3","new_version":"5.9.3","repository_url":"https://github.com/microsoft/TypeScript"}],"path":"/src/angular","ecosystem":"npm"},"body":"Bumps the npm_and_yarn group in /src/angular with 29 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `19.2.18` | `21.2.5` |\n| [@angular/cdk](https://github.com/angular/components) | `19.2.19` | `21.2.3` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `19.2.18` | `21.2.5` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `19.2.18` | `21.2.5` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `19.2.18` | `21.2.5` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `19.2.18` | `21.2.5` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `19.2.18` | `21.2.5` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `19.2.18` | `21.2.5` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `19.2.18` | `21.2.5` |\n| [immutable](https://github.com/immutable-js/immutable-js) | `4.3.7` | `5.1.5` |\n| [jquery](https://github.com/jquery/jquery) | `3.7.1` | `4.0.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.15.1` | `0.16.1` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `19.2.19` | `21.2.3` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `19.2.19` | `21.2.3` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `19.2.18` | `21.2.5` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `19.2.18` | `21.2.5` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.58.0` | `1.58.2` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.15` | `6.0.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `22.19.7` | `25.5.0` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.2` | `10.0.1` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.54.0` | `8.57.1` |\n| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.54.0` | `8.57.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.1.0` |\n| [globals](https://github.com/sindresorhus/globals) | `16.5.0` | `17.4.0` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.54.0` | `8.57.1` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.1.2` | `6.1.0` |\n| [sass](https://github.com/sass/dart-sass) | `1.97.3` | `1.98.0` |\n| [playwright](https://github.com/microsoft/playwright) | `1.58.0` | `1.58.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.7.3` | `5.9.3` |\n\nUpdates `@angular/animations` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003cimg src=\"https://img.shields.io/badge/abbd8797bb-fix-green\" alt=\"fix - abbd8797bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003cimg src=\"https://img.shields.io/badge/d1dcd16c5b-fix-green\" alt=\"fix - d1dcd16c5b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.3\u003c/h2\u003e\n\u003cp\u003eThis release contains internal refactorings only.\u003c/p\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e\u003cimg src=\"https://img.shields.io/badge/62a97f7e4b-fix-green\" alt=\"fix - 62a97f7e4b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003cimg src=\"https://img.shields.io/badge/21b1c3b2ee-fix-green\" alt=\"fix - 21b1c3b2ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einclude signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003cimg src=\"https://img.shields.io/badge/224e60ecb1-fix-green\" alt=\"fix - 224e60ecb1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(extension): bundle TypeScript 5.9 internally (\u003ca href=\"https://github.com/angular/angular/commit/da57d1af732292823b1ea187b6e9cd9f6b4eca39\"\u003eda57d1af73\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e334ae10168\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e23ea431c4e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e26c43d14ba\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e67e0ba7e03\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e1890c3008b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003ebf948be4c2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e076d41c3f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003ee19150d2b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.20 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5be912eb55fe88e8621e2ce82470d51b7d950ceb\"\u003e5be912eb55\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b89b0a83a4d21bbb6f8534bbf56aece12af24595\"\u003eb89b0a83a4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/621c7071adffbe5dd45a5c954b6b6138e0870844\"\u003e621c7071ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.18 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/02fbf08890ec6ac2efb6c2ec4f17e56497cb81d2\"\u003e02fbf08890\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70332b04532311276dd025ba00e8fcb6c1350880\"\u003e\u003ccode\u003e70332b0\u003c/code\u003e\u003c/a\u003e fix(core): pass element removal property through in all locations (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64565\"\u003e#64565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b257b36590677d436d45e98cefe7ca886c7bd57\"\u003e\u003ccode\u003e2b257b3\u003c/code\u003e\u003c/a\u003e fix(animations): account for \u003ccode\u003eElement.animate\u003c/code\u003e exceptions (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64506\"\u003e#64506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/dde5badb7133826187314e07fcdc578297aabbc9\"\u003e\u003ccode\u003edde5bad\u003c/code\u003e\u003c/a\u003e fix(core): prevent animations renderer from impacting \u003ccode\u003eanimate.leave\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63921\"\u003e#63921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c3576506b3c13389e18fa4c0c29bdf536f604142\"\u003e\u003ccode\u003ec357650\u003c/code\u003e\u003c/a\u003e refactor(core): Update tests for zoneless by default (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63668\"\u003e#63668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/021ead5399ab1136da160c7348ec8555ef5ee8fd\"\u003e\u003ccode\u003e021ead5\u003c/code\u003e\u003c/a\u003e refactor(animations): remove dependency on \u003ccode\u003e@angular/common\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63248\"\u003e#63248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.5/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 19.2.19 to 21.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003e\u003cimg src=\"https://img.shields.io/badge/cebf303417-fix-green\" alt=\"fix - cebf303417\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003echeckbox:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/2abe8e6b7330f5281b560b202ab70bdf593782cc\"\u003e\u003cimg src=\"https://img.shields.io/badge/2abe8e6b73-fix-green\" alt=\"fix - 2abe8e6b73\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e render backdrop for context menu if explicitly opted in (\u003ca href=\"https://redirect.github.com/angular/components/issues/32845\"\u003e#32845\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f7308dc4b5e539c2ccacf138a7997f9f5fdf03\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2f7308dc4-fix-green\" alt=\"fix - e2f7308dc4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eradio:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c1295c5818c820ab182727b4f85e5f55a05f6385\"\u003e\u003cimg src=\"https://img.shields.io/badge/c1295c5818-fix-green\" alt=\"fix - c1295c5818\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e itemSelected not emitted when menu is attached to a trigger (\u003ca href=\"https://redirect.github.com/angular/components/issues/32880\"\u003e#32880\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/17c19cc73b4e7e24ae5579c32ae5a784d92c2a12\"\u003e\u003cimg src=\"https://img.shields.io/badge/17c19cc73b-fix-green\" alt=\"fix - 17c19cc73b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eexpand type for restoreFocus (\u003ca href=\"https://redirect.github.com/angular/components/issues/32877\"\u003e#32877\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.0\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8c4526935ef7e960ed4245a4621d41065ba34e3b\"\u003e\u003cimg src=\"https://img.shields.io/badge/8c4526935e-fix-green\" alt=\"fix - 8c4526935e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e expose strong focus indicator structural styles (\u003ca href=\"https://redirect.github.com/angular/components/issues/32808\"\u003e#32808\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/7fe308114829c4ce454cc247e59e59387ee7fd17\"\u003e\u003cimg src=\"https://img.shields.io/badge/7fe3081148-fix-green\" alt=\"fix - 7fe3081148\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e drop dependency on NgClass (\u003ca href=\"https://redirect.github.com/angular/components/issues/32810\"\u003e#32810\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cd5209e9f59c8bd31de29d03fd743452d8ae3d03\"\u003e\u003cimg src=\"https://img.shields.io/badge/cd5209e9f5-fix-green\" alt=\"fix - cd5209e9f5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eportal:\u003c/strong\u003e allow bindings to be passed to component portal (\u003ca href=\"https://redirect.github.com/angular/components/issues/32814\"\u003e#32814\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e397ecbcfad4e85fde8d116faf5caa80dcddca45\"\u003e\u003cimg src=\"https://img.shields.io/badge/e397ecbcfa-fix-green\" alt=\"fix - e397ecbcfa\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etable:\u003c/strong\u003e remove string-based DI tokens (\u003ca href=\"https://redirect.github.com/angular/components/issues/32677\"\u003e#32677\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/31ff7f26b5dd08c1d48dc5ebb8f1a9ba57a2dc9c\"\u003e\u003cimg src=\"https://img.shields.io/badge/31ff7f26b5-fix-green\" alt=\"fix - 31ff7f26b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e align output naming with styleguide\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d030725f462d93bbca9918f153a48b5631ef0476\"\u003e\u003cimg src=\"https://img.shields.io/badge/d030725f46-fix-green\" alt=\"fix - d030725f46\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e align output naming with styleguide\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.0-rc.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.3 \u0026quot;21-2-3\u0026quot; (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e688deda58\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/pull/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e917526511\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/pull/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.0 \u0026quot;plastic-bear\u0026quot; (2026-03-11)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b4a89d5996864e591cfac762db420ec591d931e2\"\u003eb4a89d5996\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebutton:\u003c/strong\u003e Add support for showing a progress indicator inside the button (\u003ca href=\"https://redirect.github.com/angular/components/pull/32698\"\u003e#32698\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/85c16fe4bb68d89d1f304350ecf965aeceea4662\"\u003e85c16fe4bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add support for separate tab animation durations (\u003ca href=\"https://redirect.github.com/angular/components/pull/32869\"\u003e#32869\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/936f1148b3d6951bcfa1ce5e05538e8b746b677c\"\u003e936f1148b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse eager change detection\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.2 \u0026quot;plastic-goose\u0026quot; (2026-03-11)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e345c543dcb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/pull/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.3.0-next.0 \u0026quot;glass heels\u0026quot; (2026-03-04)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b4a89d5996864e591cfac762db420ec591d931e2\"\u003eb4a89d5996\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebutton:\u003c/strong\u003e Add support for showing a progress indicator inside the button (\u003ca href=\"https://redirect.github.com/angular/components/pull/32698\"\u003e#32698\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/85c16fe4bb68d89d1f304350ecf965aeceea4662\"\u003e85c16fe4bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add support for separate tab animation durations (\u003ca href=\"https://redirect.github.com/angular/components/pull/32869\"\u003e#32869\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/936f1148b3d6951bcfa1ce5e05538e8b746b677c\"\u003e936f1148b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse eager change detection\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e31ed9e2605c2c1f94c227bb292d61cf6a3b0f23\"\u003e\u003ccode\u003ee31ed9e\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.3 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003ccode\u003e688deda\u003c/code\u003e\u003c/a\u003e fix(cdk/drag-drop): item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/21bca7dcad3565c4f272d33893846a2a653c8f14\"\u003e\u003ccode\u003e21bca7d\u003c/code\u003e\u003c/a\u003e build: update dependency bazel to v8.6.0 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32939\"\u003e#32939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b6c5df69bf0bf38b23b1237447bd4602670edec7\"\u003e\u003ccode\u003eb6c5df6\u003c/code\u003e\u003c/a\u003e refactor(aria/accordion): simplify code by using template references instead ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/484a61e0d1a6c4bd40d040259e170dd7f69c02b7\"\u003e\u003ccode\u003e484a61e\u003c/code\u003e\u003c/a\u003e refactor(material/input): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32938\"\u003e#32938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003ccode\u003e9175265\u003c/code\u003e\u003c/a\u003e fix(material/datepicker): add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c8d1ed6318a8608d5b475b0f19f6310f0ce75148\"\u003e\u003ccode\u003ec8d1ed6\u003c/code\u003e\u003c/a\u003e refactor(material/dialog): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32914\"\u003e#32914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/6049dbb2e4823c8e0edee42323504a4fddd2f042\"\u003e\u003ccode\u003e6049dbb\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f971cbf0ab8ac51e0c86d6a964768687f179c558\"\u003e\u003ccode\u003ef971cbf\u003c/code\u003e\u003c/a\u003e build: update repository locations for bazel rules (\u003ca href=\"https://redirect.github.com/angular/components/issues/32911\"\u003e#32911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/439cd8848b7d31ceadbd2d2190f0dccab8402dd4\"\u003e\u003ccode\u003e439cd88\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular/components/issues/32910\"\u003e#32910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/19.2.19...v21.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003cimg src=\"https://img.shields.io/badge/abbd8797bb-fix-green\" alt=\"fix - abbd8797bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003cimg src=\"https://img.shields.io/badge/d1dcd16c5b-fix-green\" alt=\"fix - d1dcd16c5b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.3\u003c/h2\u003e\n\u003cp\u003eThis release contains internal refactorings only.\u003c/p\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e\u003cimg src=\"https://img.shields.io/badge/62a97f7e4b-fix-green\" alt=\"fix - 62a97f7e4b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003cimg src=\"https://img.shields.io/badge/21b1c3b2ee-fix-green\" alt=\"fix - 21b1c3b2ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einclude signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003cimg src=\"https://img.shields.io/badge/224e60ecb1-fix-green\" alt=\"fix - 224e60ecb1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(extension): bundle TypeScript 5.9 internally (\u003ca href=\"https://github.com/angular/angular/commit/da57d1af732292823b1ea187b6e9cd9f6b4eca39\"\u003eda57d1af73\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e334ae10168\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e23ea431c4e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e26c43d14ba\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e67e0ba7e03\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e1890c3008b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003ebf948be4c2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e076d41c3f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003ee19150d2b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.20 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5be912eb55fe88e8621e2ce82470d51b7d950ceb\"\u003e5be912eb55\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b89b0a83a4d21bbb6f8534bbf56aece12af24595\"\u003eb89b0a83a4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/621c7071adffbe5dd45a5c954b6b6138e0870844\"\u003e621c7071ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.18 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/02fbf08890ec6ac2efb6c2ec4f17e56497cb81d2\"\u003e02fbf08890\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003ccode\u003e277ade9\u003c/code\u003e\u003c/a\u003e fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/aeb9b819d2cda782de85338dc9a5457c11e51bfe\"\u003e\u003ccode\u003eaeb9b81\u003c/code\u003e\u003c/a\u003e refactor(http): Improves base64 encoding/decoding with feature detection (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ecf0bb466875d17e0823f2d793491c6f354d6c34\"\u003e\u003ccode\u003eecf0bb4\u003c/code\u003e\u003c/a\u003e test(http): refactors HTTP client tests to use TestBed and providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003ccode\u003ee2e9a9a\u003c/code\u003e\u003c/a\u003e fix(core): adds transfer cache to httpResource to fix hydration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70e4c7fbabb45277cf76ee138c0be275beec7919\"\u003e\u003ccode\u003e70e4c7f\u003c/code\u003e\u003c/a\u003e refactor(common): log a warning when a KeyValuePipe receives a signal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2eeeabb7606900ad4fe8e3370d73f6add985f35d\"\u003e\u003ccode\u003e2eeeabb\u003c/code\u003e\u003c/a\u003e fix(common): fix LCP image detection with duplicate URLs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c4deaa52bb42130f90126f55786331aa8b4f7dc\"\u003e\u003ccode\u003e3c4deaa\u003c/code\u003e\u003c/a\u003e refactor(common): log a warning when a JsonPipe receives a signal\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.5/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003cimg src=\"https://img.shields.io/badge/abbd8797bb-fix-green\" alt=\"fix - abbd8797bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003cimg src=\"https://img.shields.io/badge/d1dcd16c5b-fix-green\" alt=\"fix - d1dcd16c5b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.3\u003c/h2\u003e\n\u003cp\u003eThis release contains internal refactorings only.\u003c/p\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e\u003cimg src=\"https://img.shields.io/badge/62a97f7e4b-fix-green\" alt=\"fix - 62a97f7e4b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003cimg src=\"https://img.shields.io/badge/21b1c3b2ee-fix-green\" alt=\"fix - 21b1c3b2ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einclude signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003cimg src=\"https://img.shields.io/badge/224e60ecb1-fix-green\" alt=\"fix - 224e60ecb1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(extension): bundle TypeScript 5.9 internally (\u003ca href=\"https://github.com/angular/angular/commit/da57d1af732292823b1ea187b6e9cd9f6b4eca39\"\u003eda57d1af73\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e334ae10168\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e23ea431c4e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e26c43d14ba\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e67e0ba7e03\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e1890c3008b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003ebf948be4c2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e076d41c3f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003ee19150d2b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.20 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5be912eb55fe88e8621e2ce82470d51b7d950ceb\"\u003e5be912eb55\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b89b0a83a4d21bbb6f8534bbf56aece12af24595\"\u003eb89b0a83a4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/621c7071adffbe5dd45a5c954b6b6138e0870844\"\u003e621c7071ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.18 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/02fbf08890ec6ac2efb6c2ec4f17e56497cb81d2\"\u003e02fbf08890\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003ccode\u003eed2d324\u003c/code\u003e\u003c/a\u003e fix(compiler): disallow translations of iframe src\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003ccode\u003e1df1697\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent mutation of children array in RecursiveVisitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/95b3f37d4a7d9a38f616d56df746dfcda3c2139b\"\u003e\u003ccode\u003e95b3f37\u003c/code\u003e\u003c/a\u003e feat(compiler): Exhaustive checks for switch blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c5658adb1146b24ebf31fef534c4bbae1ced548\"\u003e\u003ccode\u003e9c5658a\u003c/code\u003e\u003c/a\u003e refactor(compiler): clean up pipeline compatibility distinction\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6e0d783e5b5a256c0aa2fb1d3e008677c0603382\"\u003e\u003ccode\u003e6e0d783\u003c/code\u003e\u003c/a\u003e refactor(compiler): Add info about unclosed element.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/06d94ac0caacce20d5afbdb1e940911bdc500d78\"\u003e\u003ccode\u003e06d94ac\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(compiler): Add info about unclosed element.\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/097208454bb0d5ebaad701a991125d2a33d1f79b\"\u003e\u003ccode\u003e0972084\u003c/code\u003e\u003c/a\u003e refactor(compiler): Add info about unclosed element.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b386f95bd05c6e9efdc00050b1e9ac28421e5f44\"\u003e\u003ccode\u003eb386f95\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(compiler): Add info about unclosed element.\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.5/packages/compiler\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/core` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003cimg src=\"https://img.shields.io/badge/abbd8797bb-fix-green\" alt=\"fix - abbd8797bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003cimg src=\"https://img.shields.io/badge/d1dcd16c5b-fix-green\" alt=\"fix - d1dcd16c5b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.3\u003c/h2\u003e\n\u003cp\u003eThis release contains internal refactorings only.\u003c/p\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e\u003cimg src=\"https://img.shields.io/badge/62a97f7e4b-fix-green\" alt=\"fix - 62a97f7e4b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003cimg src=\"https://img.shields.io/badge/21b1c3b2ee-fix-green\" alt=\"fix - 21b1c3b2ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einclude signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003cimg src=\"https://img.shields.io/badge/224e60ecb1-fix-green\" alt=\"fix - 224e60ecb1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(extension): bundle TypeScript 5.9 internally (\u003ca href=\"https://github.com/angular/angular/commit/da57d1af732292823b1ea187b6e9cd9f6b4eca39\"\u003eda57d1af73\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e334ae10168\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e23ea431c4e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e26c43d14ba\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e67e0ba7e03\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e1890c3008b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003ebf948be4c2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e076d41c3f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003ee19150d2b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.20 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5be912eb55fe88e8621e2ce82470d51b7d950ceb\"\u003e5be912eb55\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b89b0a83a4d21bbb6f8534bbf56aece12af24595\"\u003eb89b0a83a4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/621c7071adffbe5dd45a5c954b6b6138e0870844\"\u003e621c7071ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.18 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/02fbf08890ec6ac2efb6c2ec4f17e56497cb81d2\"\u003e02fbf08890\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/851ef77318541580d186d7f1c02061cc615450da\"\u003e\u003ccode\u003e851ef77\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): Ensure determineLongestAnimation is run synchronously...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003ccode\u003e076d41c\u003c/code\u003e\u003c/a\u003e fix(migrations): prevent trailing comma syntax errors after removing NgStyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a8f80c1f995dd7bab6ee1d42f033ebc3d101e9bd\"\u003e\u003ccode\u003ea8f80c1\u003c/code\u003e\u003c/a\u003e refactor(core): declare explicit reactive node prototypes types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003ccode\u003ebf948be\u003c/code\u003e\u003c/a\u003e fix(core): run linked signal equality check without reactive consumer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003ccode\u003e1890c30\u003c/code\u003e\u003c/a\u003e fix(core): clean up dehydrated views during HMR component replacement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f39896da995f346a26e3508215beb03be26c606e\"\u003e\u003ccode\u003ef39896d\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e5ed276f27c75da192099ed2814a96f52084a589\"\u003e\u003ccode\u003ee5ed276\u003c/code\u003e\u003c/a\u003e refactor(core): Ensure determineLongestAnimation is run synchronously after s...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f41efc6894147c5f7fac25fa1ebb4bba968d4b7\"\u003e\u003ccode\u003e6f41efc\u003c/code\u003e\u003c/a\u003e refactor(core): Update determineLongestAnimation to account for playback rate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/5d755be01cfbc58a5b4b721fac4fccde76645fb7\"\u003e\u003ccode\u003e5d755be\u003c/code\u003e\u003c/a\u003e refactor: ensure modules with 'declare global' are correctly handled by Rollup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.5/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/forms` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://g...\n\n_Description has been truncated_","html_url":"https://github.com/thejuran/seedsync/pull/156","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thejuran%2Fseedsync/issues/156","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/156/packages"}],"issue_packages":[{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":"/frontend","pr_created_at":"2026-05-26T23:14:58.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4528145858","node_id":"PR_kwDOSjXKT87fm7lg","number":13,"state":"open","title":"chore(deps): bump @types/jasmine from 5.1.15 to 6.0.0 in /frontend","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-26T23:14:58.000Z","updated_at":"2026-05-26T23:14:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/frontend","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/412010-PIOTTI/MyCar/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/412010-PIOTTI%2FMyCar/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":"/frontend","pr_created_at":"2026-05-11T18:28:48.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4423280268","node_id":"PR_kwDOSRFYos7aX55t","number":12,"state":"closed","title":"deps(frontend)(deps): bump the major group in /frontend with 46 updates","user":"dependabot[bot]","labels":["invalid","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-11T18:29:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T18:28:48.000Z","updated_at":"2026-05-11T18:29:18.000Z","time_to_close":21,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(frontend)(deps): bump","group_name":"major","update_count":46,"packages":[{"name":"@angular-devkit/build-angular","old_version":"20.3.25","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/animations","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"20.2.14","new_version":"21.2.10","repository_url":"https://github.com/angular/components"},{"name":"@angular/cli","old_version":"20.3.25","new_version":"21.2.10","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/common","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler-cli","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"20.2.14","new_version":"21.2.10","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@fortawesome/fontawesome-svg-core","old_version":"1.2.36","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-brands-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-regular-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-solid-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@ngx-translate/core","old_version":"15.0.0","new_version":"17.0.0","repository_url":"https://github.com/ngx-translate/core"},{"name":"@ngx-translate/http-loader","old_version":"8.0.0","new_version":"17.0.0","repository_url":"https://github.com/ngx-translate/core"},{"name":"@wagmi/core","old_version":"0.5.8","new_version":"3.4.10","repository_url":"https://github.com/wevm/wagmi"},{"name":"@winarg/ngx-text-diff","old_version":"19.0.1","new_version":"21.0.0","repository_url":"https://github.com/winarg/ngx-text-diff"},{"name":"codemirror","old_version":"5.65.21","new_version":"6.0.2","repository_url":"https://github.com/codemirror/basic-setup"},{"name":"ethers","old_version":"5.8.0","new_version":"6.16.0","repository_url":"https://github.com/ethers-io/ethers.js"},{"name":"flag-icons","old_version":"6.15.0","new_version":"7.5.0","repository_url":"https://github.com/lipis/flag-icons"},{"name":"jwt-decode","old_version":"2.2.0","new_version":"4.0.0","repository_url":"https://github.com/auth0/jwt-decode"},{"name":"material-icons","old_version":"0.3.1","new_version":"1.13.14","repository_url":"https://github.com/marella/material-icons"},{"name":"ng-qrcode","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/mnahkies/ng-qrcode"},{"name":"ngx-window-token","old_version":"6.0.0","new_version":"7.0.0","repository_url":"https://github.com/maxisam/ngx-window-token"},{"name":"snarkdown","old_version":"1.2.2","new_version":"2.0.0","repository_url":"https://github.com/developit/snarkdown"},{"name":"socket.io-client","old_version":"3.1.3","new_version":"4.8.3","repository_url":"https://github.com/socketio/socket.io"},{"name":"typescript","old_version":"5.8.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"@angular/language-service","old_version":"20.3.20","new_version":"21.2.12","repository_url":"https://github.com/angular/angular"},{"name":"@eslint/js","old_version":"9.33.0","new_version":"10.0.1","repository_url":"https://github.com/eslint/eslint"},{"name":"@types/express-serve-static-core","old_version":"4.19.8","new_version":"5.1.1","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/jwt-decode","old_version":"2.2.1","new_version":"3.1.0","repository_url":"https://github.com/auth0/jwt-decode"},{"name":"@types/node","old_version":"20.19.40","new_version":"25.6.2","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/socket.io-client","old_version":"1.4.36","new_version":"3.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"angular-eslint","old_version":"20.7.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.4","new_version":"10.3.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine","old_version":"5.13.0","new_version":"6.2.0","repository_url":"https://github.com/jasmine/jasmine-npm"},{"name":"jasmine-core","old_version":"5.9.0","new_version":"6.2.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"karma-jasmine-html-reporter","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/dfederm/karma-jasmine-html-reporter"},{"name":"stylelint","old_version":"16.26.1","new_version":"17.11.0","repository_url":"https://github.com/stylelint/stylelint"},{"name":"stylelint-config-sass-guidelines","old_version":"12.1.0","new_version":"13.0.0","repository_url":"https://github.com/bjankord/stylelint-config-sass-guidelines"},{"name":"stylelint-scss","old_version":"6.14.0","new_version":"7.1.0","repository_url":"https://github.com/stylelint-scss/stylelint-scss"}],"path":"/frontend","ecosystem":"npm"},"body":"Bumps the major group in /frontend with 46 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `20.3.25` | `21.2.10` |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `20.3.20` | `21.2.12` |\n| [@angular/cdk](https://github.com/angular/components) | `20.2.14` | `21.2.10` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `20.3.25` | `21.2.10` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `20.3.20` | `21.2.12` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `20.3.20` | `21.2.12` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `20.3.20` | `21.2.12` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `20.3.20` | `21.2.12` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `20.3.20` | `21.2.12` |\n| [@angular/material](https://github.com/angular/components) | `20.2.14` | `21.2.10` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `20.3.20` | `21.2.12` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `20.3.20` | `21.2.12` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `20.3.20` | `21.2.12` |\n| [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) | `1.2.36` | `7.2.0` |\n| [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@ngx-translate/core](https://github.com/ngx-translate/core) | `15.0.0` | `17.0.0` |\n| [@ngx-translate/http-loader](https://github.com/ngx-translate/core) | `8.0.0` | `17.0.0` |\n| [@wagmi/core](https://github.com/wevm/wagmi/tree/HEAD/packages/core) | `0.5.8` | `3.4.10` |\n| [@winarg/ngx-text-diff](https://github.com/winarg/ngx-text-diff) | `19.0.1` | `21.0.0` |\n| [codemirror](https://github.com/codemirror/basic-setup) | `5.65.21` | `6.0.2` |\n| [ethers](https://github.com/ethers-io/ethers.js) | `5.8.0` | `6.16.0` |\n| [flag-icons](https://github.com/lipis/flag-icons) | `6.15.0` | `7.5.0` |\n| [jwt-decode](https://github.com/auth0/jwt-decode) | `2.2.0` | `4.0.0` |\n| [material-icons](https://github.com/marella/material-icons) | `0.3.1` | `1.13.14` |\n| [ng-qrcode](https://github.com/mnahkies/ng-qrcode) | `20.0.1` | `21.0.0` |\n| [ngx-window-token](https://github.com/maxisam/ngx-window-token) | `6.0.0` | `7.0.0` |\n| [snarkdown](https://github.com/developit/snarkdown) | `1.2.2` | `2.0.0` |\n| [socket.io-client](https://github.com/socketio/socket.io) | `3.1.3` | `4.8.3` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.8.3` | `6.0.3` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `20.3.20` | `21.2.12` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.33.0` | `10.0.1` |\n| [@types/express-serve-static-core](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express-serve-static-core) | `4.19.8` | `5.1.1` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.15` | `6.0.0` |\n| [@types/jwt-decode](https://github.com/auth0/jwt-decode) | `2.2.1` | `3.1.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.19.40` | `25.6.2` |\n| [@types/socket.io-client](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io-client) | `1.4.36` | `3.0.0` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `20.7.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.4` | `10.3.0` |\n| [jasmine](https://github.com/jasmine/jasmine-npm) | `5.13.0` | `6.2.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.9.0` | `6.2.0` |\n| [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) | `2.1.0` | `2.2.0` |\n| [stylelint](https://github.com/stylelint/stylelint) | `16.26.1` | `17.11.0` |\n| [stylelint-config-sass-guidelines](https://github.com/bjankord/stylelint-config-sass-guidelines) | `12.1.0` | `13.0.0` |\n| [stylelint-scss](https://github.com/stylelint-scss/stylelint-scss) | `6.14.0` | `7.1.0` |\n\nUpdates `@angular-devkit/build-angular` from 20.3.25 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e@​angular-devkit/build-angular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003e\u003cimg src=\"https://img.shields.io/badge/bb8611913-fix-green\" alt=\"fix - bb8611913\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestrict MCP workspace access to allowed client roots during resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003e\u003cimg src=\"https://img.shields.io/badge/e7abeb5c7-fix-green\" alt=\"fix - e7abeb5c7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e\u003cimg src=\"https://img.shields.io/badge/233deef01-fix-green\" alt=\"fix - 233deef01\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003cimg src=\"https://img.shields.io/badge/7cea9885c-fix-green\" alt=\"fix - 7cea9885c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b1a5b743-fix-green\" alt=\"fix - 5b1a5b743\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e\u003cimg src=\"https://img.shields.io/badge/94023f62c-fix-green\" alt=\"fix - 94023f62c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003cimg src=\"https://img.shields.io/badge/5ffe5c309-fix-green\" alt=\"fix - 5ffe5c309\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003cimg src=\"https://img.shields.io/badge/930ada9b7-fix-green\" alt=\"fix - 930ada9b7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003cimg src=\"https://img.shields.io/badge/0dc8a440c-fix-green\" alt=\"fix - 0dc8a440c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e@​angular-devkit/build-angular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003ebb8611913\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict MCP workspace access to allowed client roots during resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.25 (2026-04-30)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/49ae0ad2d452ab7d7510297919125fe00081fa49\"\u003e49ae0ad2d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupgrade postcss to 8.5.12\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/2d53feca58730def7e2fb79f9cabfd1c32b9351d\"\u003e2d53feca5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate esbuild to \u003ccode\u003e0.28.0\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/02ce8bf2695e71c1684e231151b4ab5ccba94869\"\u003e02ce8bf26\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0572df06457a46276cf229c7c50ccb59167a75d8\"\u003e0572df064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/d6121b5e87796b61dd0e2157a5ce4e8f3d33e915\"\u003ed6121b5e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/48eab1fc0bd83c6f87a015252283579ebbd7d0fb\"\u003e48eab1fc0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/64cbd623af655487945ecc2d26afdaea20989330\"\u003e\u003ccode\u003e64cbd62\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6f26f4fb9aa039a1afec76e172f58a962615e236\"\u003e\u003ccode\u003e6f26f4f\u003c/code\u003e\u003c/a\u003e build: lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/111dcc3118d46c60143b1a10bf919a0ef76ec54a\"\u003e\u003ccode\u003e111dcc3\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): re-add resolveModule for find examples tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5418ebbdde7d8b66e62fb950cf22627fa791bd07\"\u003e\u003ccode\u003e5418ebb\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a2c8029157954e26ee6217d0ebf27c78fa6afa32\"\u003e\u003ccode\u003ea2c8029\u003c/code\u003e\u003c/a\u003e refactor: configure Gemini reviewer to ignore lockfile and changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7130c92547b91e2c5ebff2daa8122e77ab93e99f\"\u003e\u003ccode\u003e7130c92\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): integrate MCP roots into Host abstraction\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003e\u003ccode\u003ebb86119\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): restrict MCP workspace access to allowed client roots duri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/564b1084e2bfb0813f374f1bff6f6ec5867b4bc2\"\u003e\u003ccode\u003e564b108\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dbda92b6dcc1762ff780327c4e25029c0a9104e7\"\u003e\u003ccode\u003edbda92b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/828c17508fee82c2b0273f3501188eb75681d169\"\u003e\u003ccode\u003e828c175\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v20.3.25...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/animations` from 20.3.20 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/animations's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/animations's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70332b04532311276dd025ba00e8fcb6c1350880\"\u003e\u003ccode\u003e70332b0\u003c/code\u003e\u003c/a\u003e fix(core): pass element removal property through in all locations (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64565\"\u003e#64565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b257b36590677d436d45e98cefe7ca886c7bd57\"\u003e\u003ccode\u003e2b257b3\u003c/code\u003e\u003c/a\u003e fix(animations): account for \u003ccode\u003eElement.animate\u003c/code\u003e exceptions (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64506\"\u003e#64506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/dde5badb7133826187314e07fcdc578297aabbc9\"\u003e\u003ccode\u003edde5bad\u003c/code\u003e\u003c/a\u003e fix(core): prevent animations renderer from impacting \u003ccode\u003eanimate.leave\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63921\"\u003e#63921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c3576506b3c13389e18fa4c0c29bdf536f604142\"\u003e\u003ccode\u003ec357650\u003c/code\u003e\u003c/a\u003e refactor(core): Update tests for zoneless by default (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63668\"\u003e#63668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/021ead5399ab1136da160c7348ec8555ef5ee8fd\"\u003e\u003ccode\u003e021ead5\u003c/code\u003e\u003c/a\u003e refactor(animations): remove dependency on \u003ccode\u003e@angular/common\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63248\"\u003e#63248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 20.2.14 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e@​angular/cdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003cimg src=\"https://img.shields.io/badge/48973661e-fix-green\" alt=\"fix - 48973661e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e@​angular/cdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 \u0026quot;metal-wallaby\u0026quot; (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e48973661e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/pull/33202\"\u003e#33202\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 \u0026quot;astatine-agriculture\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6ec07bc0cbe39be48faaf6021caecf2d0037df1f\"\u003e6ec07bc0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33081\"\u003e#33081\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/05419c5522305275f45b33e844adb8f063454bc2\"\u003e05419c552\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1a5d5d101aa0c3d3113ca8e77f0dbe4175afe655\"\u003e1a5d5d101\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b916ef907fc15fd889ff0fe6fdb7c054331c906b\"\u003eb916ef907\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/867ba993b3baf35868d7c898e77289870316bbb9\"\u003e867ba993b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebottom-sheet:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf3596b53ba1cf118ec06343f8a7772e0fb0e55d\"\u003ebf3596b53\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edialog:\u003c/strong\u003e add the ability to pass bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cb9148dca63d4363bdd8b6d77cee46f93c5d2556\"\u003ecb9148dca\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003egoogle-maps\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e44ff8318911927624d90e0d2fcba6ee94ec5ff7\"\u003ee44ff8318\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eAdd support for the gmp-click event (\u003ca href=\"https://redirect.github.com/angular/components/pull/33147\"\u003e#33147\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/583da8a564dcb667cb8928e79d286eadee0a5013\"\u003e\u003ccode\u003e583da8a\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/babfbb7430547d5f4558174aec1a07ce6c67a26f\"\u003e\u003ccode\u003ebabfbb7\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33205\"\u003e#33205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e08fdf2a6a120078b512043bf5804bc3c7f9716a\"\u003e\u003ccode\u003ee08fdf2\u003c/code\u003e\u003c/a\u003e build: fix failing test (\u003ca href=\"https://redirect.github.com/angular/components/issues/33212\"\u003e#33212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/09e89fa188f157c0892019a461459cd9a252a673\"\u003e\u003ccode\u003e09e89fa\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33201\"\u003e#33201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/48973661ec50649918e3dcafc096d340219135da\"\u003e\u003ccode\u003e4897366\u003c/code\u003e\u003c/a\u003e fix(aria/menu): do not set default aria-label (\u003ca href=\"https://redirect.github.com/angular/components/issues/33202\"\u003e#33202\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c5b72562b9d46ea3c10a2ecb668e013b46a103\"\u003e\u003ccode\u003ea6c5b72\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33181\"\u003e#33181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b7c34e306539716a1222468907ad4af5fb6b1aee\"\u003e\u003ccode\u003eb7c34e3\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33160\"\u003e#33160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/58e29cf1aa8265d6041350c716c5fbfa9e25b738\"\u003e\u003ccode\u003e58e29cf\u003c/code\u003e\u003c/a\u003e build: update dependency bazel_lib to v3.3.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33177\"\u003e#33177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f16ac34e93e69b1ef960ba70c517de799d05cc\"\u003e\u003ccode\u003ee2f16ac\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33165\"\u003e#33165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/20.2.14...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cli` from 20.3.25 to 21.2.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e@​angular/cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003e\u003cimg src=\"https://img.shields.io/badge/bb8611913-fix-green\" alt=\"fix - bb8611913\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestrict MCP workspace access to allowed client roots during resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003e\u003cimg src=\"https://img.shields.io/badge/e7abeb5c7-fix-green\" alt=\"fix - e7abeb5c7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e\u003cimg src=\"https://img.shields.io/badge/233deef01-fix-green\" alt=\"fix - 233deef01\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003cimg src=\"https://img.shields.io/badge/7cea9885c-fix-green\" alt=\"fix - 7cea9885c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b1a5b743-fix-green\" alt=\"fix - 5b1a5b743\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e\u003cimg src=\"https://img.shields.io/badge/94023f62c-fix-green\" alt=\"fix - 94023f62c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003cimg src=\"https://img.shields.io/badge/5ffe5c309-fix-green\" alt=\"fix - 5ffe5c309\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003cimg src=\"https://img.shields.io/badge/930ada9b7-fix-green\" alt=\"fix - 930ada9b7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003cimg src=\"https://img.shields.io/badge/0dc8a440c-fix-green\" alt=\"fix - 0dc8a440c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e@​angular/cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.10 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003ebb8611913\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict MCP workspace access to allowed client roots during resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.25 (2026-04-30)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/49ae0ad2d452ab7d7510297919125fe00081fa49\"\u003e49ae0ad2d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupgrade postcss to 8.5.12\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/2d53feca58730def7e2fb79f9cabfd1c32b9351d\"\u003e2d53feca5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate esbuild to \u003ccode\u003e0.28.0\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/02ce8bf2695e71c1684e231151b4ab5ccba94869\"\u003e02ce8bf26\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.7 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0572df06457a46276cf229c7c50ccb59167a75d8\"\u003e0572df064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/d6121b5e87796b61dd0e2157a5ce4e8f3d33e915\"\u003ed6121b5e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/48eab1fc0bd83c6f87a015252283579ebbd7d0fb\"\u003e48eab1fc0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/64cbd623af655487945ecc2d26afdaea20989330\"\u003e\u003ccode\u003e64cbd62\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.10 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6f26f4fb9aa039a1afec76e172f58a962615e236\"\u003e\u003ccode\u003e6f26f4f\u003c/code\u003e\u003c/a\u003e build: lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/111dcc3118d46c60143b1a10bf919a0ef76ec54a\"\u003e\u003ccode\u003e111dcc3\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): re-add resolveModule for find examples tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5418ebbdde7d8b66e62fb950cf22627fa791bd07\"\u003e\u003ccode\u003e5418ebb\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a2c8029157954e26ee6217d0ebf27c78fa6afa32\"\u003e\u003ccode\u003ea2c8029\u003c/code\u003e\u003c/a\u003e refactor: configure Gemini reviewer to ignore lockfile and changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7130c92547b91e2c5ebff2daa8122e77ab93e99f\"\u003e\u003ccode\u003e7130c92\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): integrate MCP roots into Host abstraction\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bb861191328fc2d25bd5ee99b0c8edc5e49d3a7d\"\u003e\u003ccode\u003ebb86119\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): restrict MCP workspace access to allowed client roots duri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/564b1084e2bfb0813f374f1bff6f6ec5867b4bc2\"\u003e\u003ccode\u003e564b108\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dbda92b6dcc1762ff780327c4e25029c0a9104e7\"\u003e\u003ccode\u003edbda92b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/828c17508fee82c2b0273f3501188eb75681d169\"\u003e\u003ccode\u003e828c175\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v20.3.25...v21.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 20.3.20 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/common's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/common's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003efe13bb669d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e3430251fef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e1aeebbe304\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e9e38ed7d57\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e7a05a9a71a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003ec37f6ca42f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e03ad53863b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.12/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 20.3.20 to 21.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e@​angular/compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.12\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe13bb669d2bfab4713623d17b41c430aa0a61d8\"\u003e\u003cimg src=\"https://img.shields.io/badge/fe13bb669d-fix-green\" alt=\"fix - fe13bb669d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow explicit read generic with signal input transforms\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3430251fef-fix-green\" alt=\"fix - 3430251fef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ei18n flags leaking on errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1aeebbe3048b5aa612dd0a5448de9883ed51e7e8\"\u003e\u003cimg src=\"https://img.shields.io/badge/1aeebbe304-fix-green\" alt=\"fix - 1aeebbe304\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erespect ngSkipHydration on components with projectable nodes in LContainers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003cimg src=\"https://img.shields.io/badge/9e38ed7d57-fix-green\" alt=\"fix - 9e38ed7d57\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitizer typings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a05a9a71a5ab75042ec5560c01526de6e61e062\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a05a9a71a-fix-green\" alt=\"fix - 7a05a9a71a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate security-sensitive attributes in i18n bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/c37f6ca42f263353cb9563fa90d7b31d3c7837ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/c37f6ca42f-fix-green\" alt=\"fix - c37f6ca42f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ng-let expression value in signal migration schematics\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/03ad53863bf3c368f0f02a4322d4141e8f70f674\"\u003e\u003cimg src=\"https://img.shields.io/badge/03ad53863b-fix-green\" alt=\"fix - 03ad53863b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprohibit concurrent submits in signal forms\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e@​angular/compiler's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.12 (2026-05-06)\u003c/h1\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/...\n\n_Description has been truncated_","html_url":"https://github.com/mo0om/juice-shop/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mo0om%2Fjuice-shop/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":"/frontend","pr_created_at":"2026-04-30T18:41:31.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4360476368","node_id":"PR_kwDOSRFYos7XOQC-","number":6,"state":"closed","title":"deps(frontend)(deps): bump the major group in /frontend with 46 updates","user":"dependabot[bot]","labels":["invalid","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-04-30T18:42:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-30T18:41:31.000Z","updated_at":"2026-04-30T18:42:41.000Z","time_to_close":61,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(frontend)(deps): bump","group_name":"major","update_count":46,"packages":[{"name":"@angular-devkit/build-angular","old_version":"20.3.25","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/animations","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"20.2.14","new_version":"21.2.9","repository_url":"https://github.com/angular/components"},{"name":"@angular/cli","old_version":"20.3.25","new_version":"21.2.9","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/common","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler-cli","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"20.2.14","new_version":"21.2.9","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@fortawesome/fontawesome-svg-core","old_version":"1.2.36","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-brands-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-regular-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@fortawesome/free-solid-svg-icons","old_version":"5.15.4","new_version":"7.2.0","repository_url":"https://github.com/FortAwesome/Font-Awesome"},{"name":"@ngx-translate/core","old_version":"15.0.0","new_version":"17.0.0","repository_url":"https://github.com/ngx-translate/core"},{"name":"@ngx-translate/http-loader","old_version":"8.0.0","new_version":"17.0.0","repository_url":"https://github.com/ngx-translate/core"},{"name":"@wagmi/core","old_version":"0.5.8","new_version":"3.4.7","repository_url":"https://github.com/wevm/wagmi"},{"name":"@winarg/ngx-text-diff","old_version":"19.0.1","new_version":"21.0.0","repository_url":"https://github.com/winarg/ngx-text-diff"},{"name":"codemirror","old_version":"5.65.21","new_version":"6.0.2","repository_url":"https://github.com/codemirror/basic-setup"},{"name":"ethers","old_version":"5.8.0","new_version":"6.16.0","repository_url":"https://github.com/ethers-io/ethers.js"},{"name":"flag-icons","old_version":"6.15.0","new_version":"7.5.0","repository_url":"https://github.com/lipis/flag-icons"},{"name":"jwt-decode","old_version":"2.2.0","new_version":"4.0.0","repository_url":"https://github.com/auth0/jwt-decode"},{"name":"material-icons","old_version":"0.3.1","new_version":"1.13.14","repository_url":"https://github.com/marella/material-icons"},{"name":"ng-qrcode","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/mnahkies/ng-qrcode"},{"name":"ngx-window-token","old_version":"6.0.0","new_version":"7.0.0","repository_url":"https://github.com/maxisam/ngx-window-token"},{"name":"snarkdown","old_version":"1.2.2","new_version":"2.0.0","repository_url":"https://github.com/developit/snarkdown"},{"name":"socket.io-client","old_version":"3.1.3","new_version":"4.8.3","repository_url":"https://github.com/socketio/socket.io"},{"name":"typescript","old_version":"5.8.3","new_version":"6.0.3","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"@angular/language-service","old_version":"20.3.19","new_version":"21.2.11","repository_url":"https://github.com/angular/angular"},{"name":"@eslint/js","old_version":"9.33.0","new_version":"10.0.1","repository_url":"https://github.com/eslint/eslint"},{"name":"@types/express-serve-static-core","old_version":"4.19.8","new_version":"5.1.1","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/jwt-decode","old_version":"2.2.1","new_version":"3.1.0","repository_url":"https://github.com/auth0/jwt-decode"},{"name":"@types/node","old_version":"20.19.39","new_version":"25.6.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/socket.io-client","old_version":"1.4.36","new_version":"3.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"angular-eslint","old_version":"20.7.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.4","new_version":"10.2.1","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine","old_version":"5.13.0","new_version":"6.2.0","repository_url":"https://github.com/jasmine/jasmine-npm"},{"name":"jasmine-core","old_version":"5.9.0","new_version":"6.2.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"karma-jasmine-html-reporter","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/dfederm/karma-jasmine-html-reporter"},{"name":"stylelint","old_version":"16.26.1","new_version":"17.9.1","repository_url":"https://github.com/stylelint/stylelint"},{"name":"stylelint-config-sass-guidelines","old_version":"12.1.0","new_version":"13.0.0","repository_url":"https://github.com/bjankord/stylelint-config-sass-guidelines"},{"name":"stylelint-scss","old_version":"6.14.0","new_version":"7.0.0","repository_url":"https://github.com/stylelint-scss/stylelint-scss"}],"path":"/frontend","ecosystem":"npm"},"body":"Bumps the major group in /frontend with 46 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `20.3.25` | `21.2.9` |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `20.3.19` | `21.2.11` |\n| [@angular/cdk](https://github.com/angular/components) | `20.2.14` | `21.2.9` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `20.3.25` | `21.2.9` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `20.3.19` | `21.2.11` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `20.3.19` | `21.2.11` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `20.3.19` | `21.2.11` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `20.3.19` | `21.2.11` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `20.3.19` | `21.2.11` |\n| [@angular/material](https://github.com/angular/components) | `20.2.14` | `21.2.9` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `20.3.19` | `21.2.11` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `20.3.19` | `21.2.11` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `20.3.19` | `21.2.11` |\n| [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) | `1.2.36` | `7.2.0` |\n| [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `5.15.4` | `7.2.0` |\n| [@ngx-translate/core](https://github.com/ngx-translate/core) | `15.0.0` | `17.0.0` |\n| [@ngx-translate/http-loader](https://github.com/ngx-translate/core) | `8.0.0` | `17.0.0` |\n| [@wagmi/core](https://github.com/wevm/wagmi/tree/HEAD/packages/core) | `0.5.8` | `3.4.7` |\n| [@winarg/ngx-text-diff](https://github.com/winarg/ngx-text-diff) | `19.0.1` | `21.0.0` |\n| [codemirror](https://github.com/codemirror/basic-setup) | `5.65.21` | `6.0.2` |\n| [ethers](https://github.com/ethers-io/ethers.js) | `5.8.0` | `6.16.0` |\n| [flag-icons](https://github.com/lipis/flag-icons) | `6.15.0` | `7.5.0` |\n| [jwt-decode](https://github.com/auth0/jwt-decode) | `2.2.0` | `4.0.0` |\n| [material-icons](https://github.com/marella/material-icons) | `0.3.1` | `1.13.14` |\n| [ng-qrcode](https://github.com/mnahkies/ng-qrcode) | `20.0.1` | `21.0.0` |\n| [ngx-window-token](https://github.com/maxisam/ngx-window-token) | `6.0.0` | `7.0.0` |\n| [snarkdown](https://github.com/developit/snarkdown) | `1.2.2` | `2.0.0` |\n| [socket.io-client](https://github.com/socketio/socket.io) | `3.1.3` | `4.8.3` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.8.3` | `6.0.3` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `20.3.19` | `21.2.11` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.33.0` | `10.0.1` |\n| [@types/express-serve-static-core](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express-serve-static-core) | `4.19.8` | `5.1.1` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.15` | `6.0.0` |\n| [@types/jwt-decode](https://github.com/auth0/jwt-decode) | `2.2.1` | `3.1.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.19.39` | `25.6.0` |\n| [@types/socket.io-client](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io-client) | `1.4.36` | `3.0.0` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `20.7.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.4` | `10.2.1` |\n| [jasmine](https://github.com/jasmine/jasmine-npm) | `5.13.0` | `6.2.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.9.0` | `6.2.0` |\n| [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) | `2.1.0` | `2.2.0` |\n| [stylelint](https://github.com/stylelint/stylelint) | `16.26.1` | `17.9.1` |\n| [stylelint-config-sass-guidelines](https://github.com/bjankord/stylelint-config-sass-guidelines) | `12.1.0` | `13.0.0` |\n| [stylelint-scss](https://github.com/stylelint-scss/stylelint-scss) | `6.14.0` | `7.0.0` |\n\nUpdates `@angular-devkit/build-angular` from 20.3.25 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003e\u003cimg src=\"https://img.shields.io/badge/e7abeb5c7-fix-green\" alt=\"fix - e7abeb5c7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e\u003cimg src=\"https://img.shields.io/badge/233deef01-fix-green\" alt=\"fix - 233deef01\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003cimg src=\"https://img.shields.io/badge/7cea9885c-fix-green\" alt=\"fix - 7cea9885c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b1a5b743-fix-green\" alt=\"fix - 5b1a5b743\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e\u003cimg src=\"https://img.shields.io/badge/94023f62c-fix-green\" alt=\"fix - 94023f62c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003cimg src=\"https://img.shields.io/badge/5ffe5c309-fix-green\" alt=\"fix - 5ffe5c309\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003cimg src=\"https://img.shields.io/badge/930ada9b7-fix-green\" alt=\"fix - 930ada9b7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003cimg src=\"https://img.shields.io/badge/0dc8a440c-fix-green\" alt=\"fix - 0dc8a440c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003cimg src=\"https://img.shields.io/badge/365cce81d-fix-green\" alt=\"fix - 365cce81d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003cimg src=\"https://img.shields.io/badge/9f74660c3-fix-green\" alt=\"fix - 9f74660c3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e233deef01\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e7cea9885c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e5b1a5b743\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003ee7abeb5c7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e94023f62c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e5ffe5c309\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e930ada9b7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e0dc8a440c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/564b1084e2bfb0813f374f1bff6f6ec5867b4bc2\"\u003e\u003ccode\u003e564b108\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dbda92b6dcc1762ff780327c4e25029c0a9104e7\"\u003e\u003ccode\u003edbda92b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/828c17508fee82c2b0273f3501188eb75681d169\"\u003e\u003ccode\u003e828c175\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a887b94de4b3677efd2809d26971535621387cb6\"\u003e\u003ccode\u003ea887b94\u003c/code\u003e\u003c/a\u003e build: lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/56d19be3b0045eb7d574fc34cfcea9ac502a8a0f\"\u003e\u003ccode\u003e56d19be\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f2f485173ffdf387bcb2db19bda71d3ebe9fe52d\"\u003e\u003ccode\u003ef2f4851\u003c/code\u003e\u003c/a\u003e build: update dependency postcss to v8.5.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003ccode\u003e5ffe5c3\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): add support for configuring trusted proxy headers via envi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003ccode\u003e930ada9\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): decode route segments when building and matching route tree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003ccode\u003e0dc8a44\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): use router to normalize URLs for comparison\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003ccode\u003e7cea988\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): introduce initial package manager workspace awareness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v20.3.25...v21.2.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/animations` from 20.3.19 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70332b04532311276dd025ba00e8fcb6c1350880\"\u003e\u003ccode\u003e70332b0\u003c/code\u003e\u003c/a\u003e fix(core): pass element removal property through in all locations (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64565\"\u003e#64565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b257b36590677d436d45e98cefe7ca886c7bd57\"\u003e\u003ccode\u003e2b257b3\u003c/code\u003e\u003c/a\u003e fix(animations): account for \u003ccode\u003eElement.animate\u003c/code\u003e exceptions (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64506\"\u003e#64506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/dde5badb7133826187314e07fcdc578297aabbc9\"\u003e\u003ccode\u003edde5bad\u003c/code\u003e\u003c/a\u003e fix(core): prevent animations renderer from impacting \u003ccode\u003eanimate.leave\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63921\"\u003e#63921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c3576506b3c13389e18fa4c0c29bdf536f604142\"\u003e\u003ccode\u003ec357650\u003c/code\u003e\u003c/a\u003e refactor(core): Update tests for zoneless by default (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63668\"\u003e#63668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/021ead5399ab1136da160c7348ec8555ef5ee8fd\"\u003e\u003ccode\u003e021ead5\u003c/code\u003e\u003c/a\u003e refactor(animations): remove dependency on \u003ccode\u003e@angular/common\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63248\"\u003e#63248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 20.2.14 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003cimg src=\"https://img.shields.io/badge/51271c619-fix-green\" alt=\"fix - 51271c619\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003cimg src=\"https://img.shields.io/badge/3a3852d45-fix-green\" alt=\"fix - 3a3852d45\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/issues/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf14cc9d9-fix-green\" alt=\"fix - bf14cc9d9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/issues/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5954c4594c6df87908bc7849214a29f6897b213e\"\u003e\u003cimg src=\"https://img.shields.io/badge/5954c4594c-fix-green\" alt=\"fix - 5954c4594c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/issues/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 \u0026quot;astatine-astronaut\u0026quot; (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/bf14cc9d9fd349974cba853d4747b6859b3aae5b\"\u003ebf14cc9d9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e use computed for menu item patterns, with trigger on visible (\u003ca href=\"https://redirect.github.com/angular/components/pull/33118\"\u003e#33118\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e3a3852d45\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e enter/space key on child node should not toggle parent node expansion (\u003ca href=\"https://redirect.github.com/angular/components/pull/33125\"\u003e#33125\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e51271c619\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33137\"\u003e#33137\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 \u0026quot;v22-0-0-next-6\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/91a4932f65e02ce7087cb38cc0198b6f1f993242\"\u003e91a4932f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecombobox:\u003c/strong\u003e increases autocomplete demo's  placeholder text c… (\u003ca href=\"https://redirect.github.com/angular/components/pull/33084\"\u003e#33084\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.8 \u0026quot;v21-2-8\u0026quot; (2026-04-22)\u003c/h1\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 \u0026quot;carbon-steel\u0026quot; (2026-04-16)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d91f46b4c522159e025d3b94b653981f344a4fdf\"\u003ed91f46b4c5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eaccordion:\u003c/strong\u003e introduce accordion harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33046\"\u003e#33046\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1885d35346e05341532aed56ac476f9a9eae179b\"\u003e1885d35346\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003elistbox:\u003c/strong\u003e introduce listbox harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33064\"\u003e#33064\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/75fae5275c5702e64477da6a2ac8a14428623c8b\"\u003e75fae5275c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e introduce menu harness (\u003ca href=\"https://redirect.github.com/angular/components/pull/33067\"\u003e#33067\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c25e6252ecf3b5a6472151a8fca4af093b3322e6\"\u003ec25e6252ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33079\"\u003e#33079\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a49508bacf419f2e8f0545158de1f951f3ba1c1a\"\u003ea49508bacf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etoolbar:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33068\"\u003e#33068\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/30f223972870c3016e8e14f4bafb913d22117e20\"\u003e30f2239728\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e add test harnesses (\u003ca href=\"https://redirect.github.com/angular/components/pull/33066\"\u003e#33066\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/440cb16064a4daf50437e806057403cf80c52bd6\"\u003e440cb16064\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eautocomplete:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/348c3c89d511ab5f74fda95ef0f0ae7a332527fb\"\u003e348c3c89d5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e remove modal workaround\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/1b6052fbeaab90a245c86762fea18be4c262cb9a\"\u003e1b6052fbea\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esort:\u003c/strong\u003e deprecate MatSortHeaderIntl and hide from docs (\u003ca href=\"https://redirect.github.com/angular/components/pull/33089\"\u003e#33089\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cp\u003e| Commit | Type | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/d17f95df5892475835de9a718c3413d1809fd8ce\"\u003e\u003ccode\u003ed17f95d\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/87340842401d880d998f03f94f729bb074715d16\"\u003e\u003ccode\u003e8734084\u003c/code\u003e\u003c/a\u003e docs(material/tooltip): update tooltip-delay example layout styles (\u003ca href=\"https://redirect.github.com/angular/components/issues/33098\"\u003e#33098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f746b910247b385e29754b237e44dc2d4b0682df\"\u003e\u003ccode\u003ef746b91\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fixed typo in \u003ccode\u003ecdkTreeNodeTypeaheadLabel\u003c/code\u003e input de...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/29af0806975b3f288484f83f25f795538f01a71d\"\u003e\u003ccode\u003e29af080\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fixed typo in ssrSafeIsHTMLTextAreaElement functio...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a6c02421cc23447e8bac194e332027e38cc58877\"\u003e\u003ccode\u003ea6c0242\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33154\"\u003e#33154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b5e5b8a88e6171e5eadff13fe07f4e38aeffa5c5\"\u003e\u003ccode\u003eb5e5b8a\u003c/code\u003e\u003c/a\u003e build: update devinfra digest to c4d0c37 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33144\"\u003e#33144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/33106c6af65daf5caf1141e8d1e0f29c2c803762\"\u003e\u003ccode\u003e33106c6\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (takeover \u003ca href=\"https://redirect.github.com/angular/components/issues/33111\"\u003e#33111\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/angular/components/issues/33135\"\u003e#33135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/3a3852d45a4bbcfb23b46ca00e0eba1d70081ba3\"\u003e\u003ccode\u003e3a3852d\u003c/code\u003e\u003c/a\u003e fix(cdk/tree): enter/space key on child node should not toggle parent node ex...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/51271c6194a9b55ee847c566a8960c9be5ec7cce\"\u003e\u003ccode\u003e51271c6\u003c/code\u003e\u003c/a\u003e fix(material/stepper): allow stepper to be labelled (\u003ca href=\"https://redirect.github.com/angular/components/issues/33137\"\u003e#33137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/43b5e11eabf3de1d98fb7bab663cf77b7b28b520\"\u003e\u003ccode\u003e43b5e11\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33133\"\u003e#33133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/20.2.14...v21.2.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cli` from 20.3.25 to 21.2.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003e\u003cimg src=\"https://img.shields.io/badge/e7abeb5c7-fix-green\" alt=\"fix - e7abeb5c7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e\u003cimg src=\"https://img.shields.io/badge/233deef01-fix-green\" alt=\"fix - 233deef01\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003cimg src=\"https://img.shields.io/badge/7cea9885c-fix-green\" alt=\"fix - 7cea9885c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b1a5b743-fix-green\" alt=\"fix - 5b1a5b743\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e\u003cimg src=\"https://img.shields.io/badge/94023f62c-fix-green\" alt=\"fix - 94023f62c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003cimg src=\"https://img.shields.io/badge/5ffe5c309-fix-green\" alt=\"fix - 5ffe5c309\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003cimg src=\"https://img.shields.io/badge/930ada9b7-fix-green\" alt=\"fix - 930ada9b7\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003cimg src=\"https://img.shields.io/badge/0dc8a440c-fix-green\" alt=\"fix - 0dc8a440c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e91280c05afe7b35b4f01e0eb2800f1ee21fd2ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/e91280c05-fix-green\" alt=\"fix - e91280c05\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edynamically resolve project Angular CLI executable inside MCP tools\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/01af6741bfe489c3c8fd86feab8b5f14cdb92562\"\u003e\u003cimg src=\"https://img.shields.io/badge/01af6741b-fix-green\" alt=\"fix - 01af6741b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore EBADF file system errors during MCP project scan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f7a3e6ed871ff711723dcfdbaa8c3ae497f89a5b\"\u003e\u003cimg src=\"https://img.shields.io/badge/f7a3e6ed8-fix-green\" alt=\"fix - f7a3e6ed8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse headless option in MCP test tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/00336c037dd77d2b441f797580eb8a12c044006b\"\u003e\u003cimg src=\"https://img.shields.io/badge/00336c037-fix-green\" alt=\"fix - 00336c037\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure route has leading slash in prerender builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e87d302d6df3f4d9fa9338e3d377e09a2e161fc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/e87d302d6-fix-green\" alt=\"fix - e87d302d6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix app-shell route format and\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c93140a545869901ec7c24ea10be3073b8899b0d\"\u003e\u003cimg src=\"https://img.shields.io/badge/c93140a54-fix-green\" alt=\"fix - c93140a54\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003euse rootDir for HMR component updates path resolution\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6df2b14884cffb986977636a84b7868bf8b63f0e\"\u003e\u003cimg src=\"https://img.shields.io/badge/6df2b1488-fix-green\" alt=\"fix - 6df2b1488\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate V8 coverage support for browsers in Vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/971041aa11e4546772e4677b77ceec2ad1374496\"\u003e\u003cimg src=\"https://img.shields.io/badge/971041aa1-fix-green\" alt=\"fix - 971041aa1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing package manager during analytics initialization\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/365cce81dde91463d4f0049a69feaed018902585\"\u003e\u003cimg src=\"https://img.shields.io/badge/365cce81d-fix-green\" alt=\"fix - 365cce81d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve coverage ignore comments in development\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9f74660c3688bb1f0d6a7608a136a30dbfe4d7e9\"\u003e\u003cimg src=\"https://img.shields.io/badge/9f74660c3-fix-green\" alt=\"fix - 9f74660c3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eshow clear error when styleUrl points to a TypeScript file\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.9 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/233deef01288c6aa39a048d6bd66a1f09595dc15\"\u003e233deef01\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix broken img ref in ai-tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e7cea9885c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce initial package manager workspace awareness\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5b1a5b7434323eb383df1f53c389fe9dc948a785\"\u003e5b1a5b743\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove standalone true ref in ai tutor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​schematics/angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/e7abeb5c74024daf125070c9b4f7f8d2426bab66\"\u003ee7abeb5c7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd missing imports for focus and skip APIs in refactor-jasmine-vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/94023f62c5b51a669ff3187cc062057f82c79c52\"\u003e94023f62c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eintroduce trustProxyHeaders option to safely validate and sanitize proxy headers\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e5ffe5c309\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd support for configuring trusted proxy headers via environment variable\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e930ada9b7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edecode route segments when building and matching route tree\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e0dc8a440c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse router to normalize URLs for comparison\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/564b1084e2bfb0813f374f1bff6f6ec5867b4bc2\"\u003e\u003ccode\u003e564b108\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.9 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/dbda92b6dcc1762ff780327c4e25029c0a9104e7\"\u003e\u003ccode\u003edbda92b\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/828c17508fee82c2b0273f3501188eb75681d169\"\u003e\u003ccode\u003e828c175\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.33.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a887b94de4b3677efd2809d26971535621387cb6\"\u003e\u003ccode\u003ea887b94\u003c/code\u003e\u003c/a\u003e build: lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/56d19be3b0045eb7d574fc34cfcea9ac502a8a0f\"\u003e\u003ccode\u003e56d19be\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f2f485173ffdf387bcb2db19bda71d3ebe9fe52d\"\u003e\u003ccode\u003ef2f4851\u003c/code\u003e\u003c/a\u003e build: update dependency postcss to v8.5.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5ffe5c309a92e7fd42f1059171924c5942f35c36\"\u003e\u003ccode\u003e5ffe5c3\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): add support for configuring trusted proxy headers via envi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/930ada9b73c5172d57830ce42a5a336ae9483a54\"\u003e\u003ccode\u003e930ada9\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): decode route segments when building and matching route tree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/0dc8a440ca9e4242edb69ba5a8147fef1dddc4f0\"\u003e\u003ccode\u003e0dc8a44\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): use router to normalize URLs for comparison\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7cea9885c64a747b391b74e6434cdf005c843766\"\u003e\u003ccode\u003e7cea988\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): introduce initial package manager workspace awareness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v20.3.25...v21.2.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 20.3.19 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003e\u003cimg src=\"https://img.shields.io/badge/be1f80a253-fix-green\" alt=\"fix - be1f80a253\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.10\u003c/h2\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0d5ee9ae1ba4b7acd8f27a059a778f0b4bd8a5bd\"\u003e\u003cimg src=\"https://img.shields.io/badge/0d5ee9ae1b-fix-green\" alt=\"fix - 0d5ee9ae1b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5533ab4f56f574bc9365cf0573c4a34a3ab5aaf1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5533ab4f56-fix-green\" alt=\"fix - 5533ab4f56\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/580212c995751c4bf4ce8a49df4167498743e0ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/580212c995-fix-green\" alt=\"fix - 580212c995\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.9\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f603d4714fa184aad34a6f7f9ea4e79c8af3afac\"\u003e\u003cimg src=\"https://img.shields.io/badge/f603d4714f-fix-green\" alt=\"fix - f603d4714f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape forward slashes in transfer state to prevent crawler indexing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ehttp\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003cimg src=\"https://img.shields.io/badge/540536c386-fix-green\" alt=\"fix - 540536c386\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd CSP nonce support to JsonpClientBackend\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/63a857b874172766451aa75ed3347ba50f0ee229\"\u003e\u003cimg src=\"https://img.shields.io/badge/63a857b874-fix-green\" alt=\"fix - 63a857b874\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eDon't on Passthru outside of reactive context\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e0b5078cf2ebe79a6de85e9123148ae948b3d81d\"\u003e\u003cimg src=\"https://img.shields.io/badge/e0b5078cf2-fix-green\" alt=\"fix - e0b5078cf2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent SSRF bypasses via protocol-relative and backslash URLs\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-04-29)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e10ad3c0692\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e4f5d8a2c0b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003ea40e2cebc8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e885a1a1d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e7a64aff9b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/be1f80a253b8ee27ed7d8de2287d6895c4821909\"\u003ebe1f80a253\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure origin has a trailing slash when parsing url\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.9 (2026-04-22)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eparamsInheritanceStrategy now defaults to 'always'\u003c/p\u003e\n\u003cp\u003eThe default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a\"\u003e8f3d0b9d97\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eintroduce \u003ccode\u003e@Service\u003c/code\u003e decorator\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff\"\u003e9f479ae964\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eUpdate Testability to use PendingTasks for stability indicator\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003edocs\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b24b4cb699c325fc2ce40681724341baaabf277b\"\u003eb24b4cb699\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003elink formatting in \u0026quot;Animating your Application with CSS\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b395173cf206b8c04c5ab74298e640c9086d0bac\"\u003eb395173cf2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efix NgClass leaving trailing comma after removal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/6eff4395467de51a46656d79d957b448b32dde0c\"\u003e6eff439546\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestore internal URL on popstate when \u003ccode\u003ebrowserUrl\u003c/code\u003e is used\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a\"\u003e17d10f7a99\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eset default paramsInheritanceStrategy to 'always'\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/42d57c35781fb65fc4d44df59b6a85287664216a\"\u003e\u003ccode\u003e42d57c3\u003c/code\u003e\u003c/a\u003e refactor(common): fix viewport tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003ccode\u003e10ad3c0\u003c/code\u003e\u003c/a\u003e fix(common): prevent focus from scrollToAnchor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/540536c386f2c735a700c2c9e2697a88dcb3d4ec\"\u003e\u003ccode\u003e540536c\u003c/code\u003e\u003c/a\u003e fix(http): add CSP nonce support to JsonpClientBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.11/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 20.3.19 to 21.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/10ad3c06923453ae0ec06b06e664ce05900a4ff6\"\u003e\u003cimg src=\"https://img.shields.io/badge/10ad3c0692-fix-green\" alt=\"fix - 10ad3c0692\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent focus from scrollToAnchor\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4f5d8a2c0b5e38d4debc4293945270cea4a9590d\"\u003e\u003cimg src=\"https://img.shields.io/badge/4f5d8a2c0b-fix-green\" alt=\"fix - 4f5d8a2c0b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003elet declaration span not including end character\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/a40e2cebc878965c3e21bfb61658f3f80cbd2ebf\"\u003e\u003cimg src=\"https://img.shields.io/badge/a40e2cebc8-fix-green\" alt=\"fix - a40e2cebc8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix ordering of view queries metadata in JIT mode\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/885a1a1d9757adfa8766d9b369c848a277438c31\"\u003e\u003cimg src=\"https://img.shields.io/badge/885a1a1d97-fix-green\" alt=\"fix - 885a1a1d97\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eguard against non-object events and avoid listener wrapper identity mismatch\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a64aff9b59999077ea915486a7fa0b97a286659\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a64aff9b5-fix-green\" alt=\"fix - 7a64aff9b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent event replay double-invocation when element hydrates before app stability\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eplatform-server\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n...\n\n_Description has been truncated_","html_url":"https://github.com/mo0om/juice-shop/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mo0om%2Fjuice-shop/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"5.1.8","new_version":"6.0.0","update_type":"major","path":"/timeless-api/src/main/webui","pr_created_at":"2026-04-27T18:06:56.000Z","version_change":"5.1.8 → 6.0.0","issue":{"uuid":"4337886333","node_id":"PR_kwDOOsTdXs7WEVNx","number":246,"state":"open","title":"chore(deps-dev): bump @types/jasmine from 5.1.8 to 6.0.0 in /timeless-api/src/main/webui","user":"dependabot[bot]","labels":["dependencies","frontend"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-27T18:06:56.000Z","updated_at":"2026-05-06T23:55:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.8","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/timeless-api/src/main/webui","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.8 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/mcruzdev/timeless/pull/246","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcruzdev%2Ftimeless/issues/246","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/246/packages"}},{"old_version":"5.1.13","new_version":"6.0.0","update_type":"major","path":"/service","pr_created_at":"2026-04-26T10:33:17.000Z","version_change":"5.1.13 → 6.0.0","issue":{"uuid":"4330638645","node_id":"PR_kwDOQN-Svs7VtYUz","number":8,"state":"closed","title":"chore(deps-dev): bump @types/jasmine from 5.1.13 to 6.0.0 in /service","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-26T11:01:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-26T10:33:17.000Z","updated_at":"2026-04-26T11:02:19.000Z","time_to_close":1708,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.13","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/service","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.13 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.13\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Rhaegal222/wyrmrest_frontend/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rhaegal222%2Fwyrmrest_frontend/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-04-20T23:48:48.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4299356509","node_id":"PR_kwDOC9Jy-M7UImxp","number":721,"state":"open","title":"build(deps-dev): bump @types/jasmine from 5.1.15 to 6.0.0","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-20T23:48:48.000Z","updated_at":"2026-04-20T23:50:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Lucs1590/Personal_Site/pull/721","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site/issues/721","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/721/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":"/src/frontend","pr_created_at":"2026-04-18T01:36:28.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4286254243","node_id":"PR_kwDOPhS-rM7Tf0ZE","number":67,"state":"open","title":"chore(deps)(deps-dev): bump @types/jasmine from 5.1.15 to 6.0.0 in /src/frontend","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-18T01:36:28.000Z","updated_at":"2026-04-18T01:36:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/src/frontend","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/ysnarafat/tenantly/pull/67","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysnarafat%2Ftenantly/issues/67","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/67/packages"}},{"old_version":"5.1.14","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-04-10T03:12:28.000Z","version_change":"5.1.14 → 6.0.0","issue":{"uuid":"4236274913","node_id":"PR_kwDOQ_8DsM7RUpQA","number":19,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 33 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-10T03:12:28.000Z","updated_at":"2026-04-10T03:13:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":33,"packages":[{"name":"@angular/animations","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.0.6","new_version":"21.2.6","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@iharbeck/ngx-virtual-scroller","old_version":"19.0.1","new_version":"20.0.0","repository_url":"https://github.com/iharbeck/ngx-virtual-scroller"},{"name":"@primeng/themes","old_version":"21.0.2","new_version":"21.0.4","repository_url":"https://github.com/primefaces/primeng"},{"name":"@stomp/stompjs","old_version":"7.2.1","new_version":"7.3.0","repository_url":"https://github.com/stomp-js/stompjs"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"ngx-extended-pdf-viewer","old_version":"25.6.4","new_version":"26.0.3","repository_url":"https://github.com/stephanrauh/ngx-extended-pdf-viewer"},{"name":"ngx-sse-client","old_version":"20.0.1","new_version":"21.0.0","repository_url":"https://github.com/marcospds/ngx-sse-client"},{"name":"primeng","old_version":"21.0.2","new_version":"21.1.5","repository_url":"https://github.com/primefaces/primeng"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular/build","old_version":"21.0.5","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.0.5","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.0.8","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@types/jasmine","old_version":"5.1.14","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/node","old_version":"25.0.6","new_version":"25.5.2","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.16","new_version":"4.1.4","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.1.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"autoprefixer","old_version":"10.4.23","new_version":"10.4.27","repository_url":"https://github.com/postcss/autoprefixer"},{"name":"eslint","old_version":"9.39.2","new_version":"10.2.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine-core","old_version":"5.13.0","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"jsdom","old_version":"27.4.0","new_version":"29.0.2","repository_url":"https://github.com/jsdom/jsdom"},{"name":"tailwindcss","old_version":"3.4.19","new_version":"4.2.2","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.52.0","new_version":"8.58.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 32 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.0.8` | `21.2.8` |\n| [@angular/cdk](https://github.com/angular/components) | `21.0.6` | `21.2.6` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.0.8` | `21.2.8` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.0.8` | `21.2.8` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.0.8` | `21.2.8` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.0.8` | `21.2.8` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.0.8` | `21.2.8` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.0.8` | `21.2.8` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.0.8` | `21.2.8` |\n| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller) | `19.0.1` | `20.0.0` |\n| [@primeng/themes](https://github.com/primefaces/primeng/tree/HEAD/packages/themes) | `21.0.2` | `21.0.4` |\n| [@stomp/stompjs](https://github.com/stomp-js/stompjs) | `7.2.1` | `7.3.0` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [ngx-extended-pdf-viewer](https://github.com/stephanrauh/ngx-extended-pdf-viewer) | `25.6.4` | `26.0.3` |\n| [ngx-sse-client](https://github.com/marcospds/ngx-sse-client) | `20.0.1` | `21.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.0.2` | `21.1.5` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.0.5` | `21.2.7` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.0.5` | `21.2.7` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.0.8` | `21.2.8` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.14` | `6.0.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.6` | `25.5.2` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.16` | `4.1.4` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.1.0` | `21.3.1` |\n| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.23` | `10.4.27` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.2.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.13.0` | `6.1.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `29.0.2` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `3.4.19` | `4.2.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.52.0` | `8.58.1` |\n\n\nUpdates `@angular/animations` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003cimg src=\"https://img.shields.io/badge/2c6781071f-fix-green\" alt=\"fix - 2c6781071f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003cimg src=\"https://img.shields.io/badge/82192deda9-fix-green\" alt=\"fix - 82192deda9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003cimg src=\"https://img.shields.io/badge/057cc6d09d-fix-green\" alt=\"fix - 057cc6d09d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003cimg src=\"https://img.shields.io/badge/7797671257-fix-green\" alt=\"fix - 7797671257\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003cimg src=\"https://img.shields.io/badge/fea25d1a60-fix-green\" alt=\"fix - fea25d1a60\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003e\u003cimg src=\"https://img.shields.io/badge/bba5ed8e64-fix-green\" alt=\"fix - bba5ed8e64\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003cimg src=\"https://img.shields.io/badge/d04ddd73df-fix-green\" alt=\"fix - d04ddd73df\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003cimg src=\"https://img.shields.io/badge/8fd896e99a-fix-green\" alt=\"fix - 8fd896e99a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003cimg src=\"https://img.shields.io/badge/b682c62873-fix-green\" alt=\"fix - b682c62873\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c41e74fdd279f683156b654699a9312a850add0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3c41e74fdd-fix-green\" alt=\"fix - 3c41e74fdd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0960592d3d4fad110d5598144fda9f2488520826\"\u003e\u003cimg src=\"https://img.shields.io/badge/0960592d3d-fix-green\" alt=\"fix - 0960592d3d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003ee40d378f3e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e2c6781071f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e82192deda9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e057cc6d09d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e7797671257\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/08d36599d724d6b3dbe2c9891c32f783bef4e157\"\u003e08d36599d7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fcd0bb0db83576ef0bc13c5c32f158d95efbedd5\"\u003efcd0bb0db8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e84e35cdd60696d8670421189e4aa02c1db583a6\"\u003ee84e35cdd6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fa66173523bb275d33de4bd43ce23947812922e\"\u003e8fa6617352\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/028e1d3ce0ed3a33d3b7730a51b549a5cf013b29\"\u003e028e1d3ce0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/78710938225d2c29c6e3666e431c2952bb5560db\"\u003e7871093822\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071\"\u003e682aaf943f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd strictTemplates to tsconfig during ng update\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/daa9b2a9d67557ae9246559f74396f43b240581c\"\u003edaa9b2a9d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.0.6 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003cimg src=\"https://img.shields.io/badge/5b4bbe9c4f-fix-green\" alt=\"fix - 5b4bbe9c4f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/issues/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003cimg src=\"https://img.shields.io/badge/895908a12-fix-green\" alt=\"fix - 895908a12\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003cimg src=\"https://img.shields.io/badge/475a8aabb-fix-green\" alt=\"fix - 475a8aabb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003cimg src=\"https://img.shields.io/badge/8a5ed09e5-fix-green\" alt=\"fix - 8a5ed09e5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003cimg src=\"https://img.shields.io/badge/42e10553c-fix-green\" alt=\"fix - 42e10553c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003e\u003cimg src=\"https://img.shields.io/badge/cebf303417-fix-green\" alt=\"fix - cebf303417\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003echeckbox:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/2abe8e6b7330f5281b560b202ab70bdf593782cc\"\u003e\u003cimg src=\"https://img.shields.io/badge/2abe8e6b73-fix-green\" alt=\"fix - 2abe8e6b73\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e render backdrop for context menu if explicitly opted in (\u003ca href=\"https://redirect.github.com/angular/components/issues/32845\"\u003e#32845\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f7308dc4b5e539c2ccacf138a7997f9f5fdf03\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2f7308dc4-fix-green\" alt=\"fix - e2f7308dc4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eradio:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 \u0026quot;steel bottle\u0026quot; (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e5b4bbe9c4f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e wrong transform origin when opening upwards inside another overlay (\u003ca href=\"https://redirect.github.com/angular/components/pull/33032\"\u003e#33032\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.3 \u0026quot;rubber-wombat\u0026quot; (2026-04-01)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRenames the values input/model to value in Combobox, Listbox, Tree, Menu, Toolbar, and Select. Users must update their templates to use the value property instead of values.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003erefactor(multiple): update api goldens\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ac3911071810ac7c54ba3382125bf53094bce80b\"\u003eac3911071\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/pull/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a7d5561803e2f365843cb763a4763ed51cb0ae03\"\u003ea7d556180\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/pull/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/236762fbc5d63bb6000a52c7d20612c0b14c3d8b\"\u003e236762fbc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/pull/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a7fe128c353aec9065e942b63167e9019dc53350\"\u003ea7fe128c3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/pull/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/94a50a25f95c0e28d661b957a0a17501cc9998f9\"\u003e94a50a25f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003erename values to value for signal forms compatibility (\u003ca href=\"https://redirect.github.com/angular/components/pull/33012\"\u003e#33012\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.5 \u0026quot;steel-wombat\u0026quot; (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e42e10553c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003estepper:\u003c/strong\u003e linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/pull/33007\"\u003e#33007\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e895908a12\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/pull/33001\"\u003e#33001\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e475a8aabb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eslider:\u003c/strong\u003e not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/pull/33006\"\u003e#33006\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e8a5ed09e5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/pull/33018\"\u003e#33018\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.4 \u0026quot;hassium-halfpipe\u0026quot; (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/a236a4067ce1d3cf8b7e1362760db5907a26c86e\"\u003e\u003ccode\u003ea236a40\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/6b955a73fe44f0a58993c80836c03cf149ae11a2\"\u003e\u003ccode\u003e6b955a7\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33043\"\u003e#33043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2909c3ac0712119c8286dbc4118a3e4cd1e85a2f\"\u003e\u003ccode\u003e2909c3a\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33038\"\u003e#33038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5b4bbe9c4f8c902d6923b139e7a925822c899bc1\"\u003e\u003ccode\u003e5b4bbe9\u003c/code\u003e\u003c/a\u003e fix(material/select): wrong transform origin when opening upwards inside anot...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2c877d284177bff3973e93f3948c2a926fca08de\"\u003e\u003ccode\u003e2c877d2\u003c/code\u003e\u003c/a\u003e Set generic on some \u003ccode\u003eInjectionToken\u003c/code\u003e.  (\u003ca href=\"https://redirect.github.com/angular/components/issues/32753\"\u003e#32753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/97be64ac8f54540af3ee8d7f08ca80d2c98b0e88\"\u003e\u003ccode\u003e97be64a\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33030\"\u003e#33030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/424b282a690c725b76ae6c4f36eb32b6cdcdf5f7\"\u003e\u003ccode\u003e424b282\u003c/code\u003e\u003c/a\u003e build: update dependency aspect_rules_ts to v3.8.8 (\u003ca href=\"https://redirect.github.com/angular/components/issues/33025\"\u003e#33025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e433a661551394cb740314e0bc2f002d0549c2a2\"\u003e\u003ccode\u003ee433a66\u003c/code\u003e\u003c/a\u003e docs(material/dialog): clarify that default options replace rather than merge...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c9d40aa735751363a729723751aaf87dfb5d4819\"\u003e\u003ccode\u003ec9d40aa\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/899456f6e4b23d6c34643c223a42f0bbd67b9de8\"\u003e\u003ccode\u003e899456f\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/33017\"\u003e#33017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.0.6...v21.2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003cimg src=\"https://img.shields.io/badge/2c6781071f-fix-green\" alt=\"fix - 2c6781071f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003cimg src=\"https://img.shields.io/badge/82192deda9-fix-green\" alt=\"fix - 82192deda9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003cimg src=\"https://img.shields.io/badge/057cc6d09d-fix-green\" alt=\"fix - 057cc6d09d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003cimg src=\"https://img.shields.io/badge/7797671257-fix-green\" alt=\"fix - 7797671257\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003cimg src=\"https://img.shields.io/badge/fea25d1a60-fix-green\" alt=\"fix - fea25d1a60\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003e\u003cimg src=\"https://img.shields.io/badge/bba5ed8e64-fix-green\" alt=\"fix - bba5ed8e64\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003cimg src=\"https://img.shields.io/badge/d04ddd73df-fix-green\" alt=\"fix - d04ddd73df\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003cimg src=\"https://img.shields.io/badge/8fd896e99a-fix-green\" alt=\"fix - 8fd896e99a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003cimg src=\"https://img.shields.io/badge/b682c62873-fix-green\" alt=\"fix - b682c62873\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c41e74fdd279f683156b654699a9312a850add0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3c41e74fdd-fix-green\" alt=\"fix - 3c41e74fdd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0960592d3d4fad110d5598144fda9f2488520826\"\u003e\u003cimg src=\"https://img.shields.io/badge/0960592d3d-fix-green\" alt=\"fix - 0960592d3d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003ee40d378f3e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e2c6781071f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e82192deda9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e057cc6d09d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e7797671257\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/08d36599d724d6b3dbe2c9891c32f783bef4e157\"\u003e08d36599d7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fcd0bb0db83576ef0bc13c5c32f158d95efbedd5\"\u003efcd0bb0db8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e84e35cdd60696d8670421189e4aa02c1db583a6\"\u003ee84e35cdd6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fa66173523bb275d33de4bd43ce23947812922e\"\u003e8fa6617352\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/028e1d3ce0ed3a33d3b7730a51b549a5cf013b29\"\u003e028e1d3ce0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/78710938225d2c29c6e3666e431c2952bb5560db\"\u003e7871093822\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071\"\u003e682aaf943f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd strictTemplates to tsconfig during ng update\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/daa9b2a9d67557ae9246559f74396f43b240581c\"\u003edaa9b2a9d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8102331f82c808ca2256ba51a1d83803a61beabb\"\u003e\u003ccode\u003e8102331\u003c/code\u003e\u003c/a\u003e test(http): disable XSRF and mock location in HttpClient tests to avoid Domin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/13f050d2204285173273ebbfe9b34bc1b3c63c80\"\u003e\u003ccode\u003e13f050d\u003c/code\u003e\u003c/a\u003e test: construct local \u003ccode\u003eDate\u003c/code\u003e objects to fix timezone flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d0cf2995a2b63eb13fe574770ee8a756277852a4\"\u003e\u003ccode\u003ed0cf299\u003c/code\u003e\u003c/a\u003e test: remove unsupported timezone from \u003ccode\u003eformatDate\u003c/code\u003e tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003ccode\u003e277ade9\u003c/code\u003e\u003c/a\u003e fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/aeb9b819d2cda782de85338dc9a5457c11e51bfe\"\u003e\u003ccode\u003eaeb9b81\u003c/code\u003e\u003c/a\u003e refactor(http): Improves base64 encoding/decoding with feature detection (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ecf0bb466875d17e0823f2d793491c6f354d6c34\"\u003e\u003ccode\u003eecf0bb4\u003c/code\u003e\u003c/a\u003e test(http): refactors HTTP client tests to use TestBed and providers\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003cimg src=\"https://img.shields.io/badge/2c6781071f-fix-green\" alt=\"fix - 2c6781071f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003cimg src=\"https://img.shields.io/badge/82192deda9-fix-green\" alt=\"fix - 82192deda9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003cimg src=\"https://img.shields.io/badge/057cc6d09d-fix-green\" alt=\"fix - 057cc6d09d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003cimg src=\"https://img.shields.io/badge/7797671257-fix-green\" alt=\"fix - 7797671257\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003cimg src=\"https://img.shields.io/badge/fea25d1a60-fix-green\" alt=\"fix - fea25d1a60\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003e\u003cimg src=\"https://img.shields.io/badge/bba5ed8e64-fix-green\" alt=\"fix - bba5ed8e64\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003cimg src=\"https://img.shields.io/badge/d04ddd73df-fix-green\" alt=\"fix - d04ddd73df\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003cimg src=\"https://img.shields.io/badge/8fd896e99a-fix-green\" alt=\"fix - 8fd896e99a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003cimg src=\"https://img.shields.io/badge/b682c62873-fix-green\" alt=\"fix - b682c62873\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c41e74fdd279f683156b654699a9312a850add0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3c41e74fdd-fix-green\" alt=\"fix - 3c41e74fdd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0960592d3d4fad110d5598144fda9f2488520826\"\u003e\u003cimg src=\"https://img.shields.io/badge/0960592d3d-fix-green\" alt=\"fix - 0960592d3d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003ee40d378f3e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e2c6781071f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e82192deda9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e057cc6d09d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e7797671257\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/08d36599d724d6b3dbe2c9891c32f783bef4e157\"\u003e08d36599d7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fcd0bb0db83576ef0bc13c5c32f158d95efbedd5\"\u003efcd0bb0db8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e84e35cdd60696d8670421189e4aa02c1db583a6\"\u003ee84e35cdd6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fa66173523bb275d33de4bd43ce23947812922e\"\u003e8fa6617352\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/028e1d3ce0ed3a33d3b7730a51b549a5cf013b29\"\u003e028e1d3ce0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/78710938225d2c29c6e3666e431c2952bb5560db\"\u003e7871093822\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071\"\u003e682aaf943f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd strictTemplates to tsconfig during ng update\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/daa9b2a9d67557ae9246559f74396f43b240581c\"\u003edaa9b2a9d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a4f312060cdf745e4fb0b15eda24ee2b4df0440c\"\u003e\u003ccode\u003ea4f3120\u003c/code\u003e\u003c/a\u003e refactor(compiler): require a reference in DirectiveMeta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/de533fe49181ee7409fd0b0ae4c0391a1e220ee6\"\u003e\u003ccode\u003ede533fe\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): move ClassPropertyMapping into compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ea1e34c4ddf404cde8d5c4ba0ba762bb0b9edbf8\"\u003e\u003ccode\u003eea1e34c\u003c/code\u003e\u003c/a\u003e refactor(compiler): move matchSource into base metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003ccode\u003ee40d378\u003c/code\u003e\u003c/a\u003e fix(compiler): handle nested brackets in host object bindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003ccode\u003efea25d1\u003c/code\u003e\u003c/a\u003e fix(compiler): register SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003ccode\u003eed2d324\u003c/code\u003e\u003c/a\u003e fix(compiler): disallow translations of iframe src\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/compiler\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/core` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e\u003cimg src=\"https://img.shields.io/badge/2c6781071f-fix-green\" alt=\"fix - 2c6781071f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003cimg src=\"https://img.shields.io/badge/82192deda9-fix-green\" alt=\"fix - 82192deda9\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003cimg src=\"https://img.shields.io/badge/057cc6d09d-fix-green\" alt=\"fix - 057cc6d09d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e\u003cimg src=\"https://img.shields.io/badge/7797671257-fix-green\" alt=\"fix - 7797671257\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.7\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003e\u003cimg src=\"https://img.shields.io/badge/fea25d1a60-fix-green\" alt=\"fix - fea25d1a60\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003e\u003cimg src=\"https://img.shields.io/badge/bba5ed8e64-fix-green\" alt=\"fix - bba5ed8e64\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003cimg src=\"https://img.shields.io/badge/d04ddd73df-fix-green\" alt=\"fix - d04ddd73df\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003cimg src=\"https://img.shields.io/badge/8fd896e99a-fix-green\" alt=\"fix - 8fd896e99a\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003cimg src=\"https://img.shields.io/badge/b682c62873-fix-green\" alt=\"fix - b682c62873\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c41e74fdd279f683156b654699a9312a850add0\"\u003e\u003cimg src=\"https://img.shields.io/badge/3c41e74fdd-fix-green\" alt=\"fix - 3c41e74fdd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0960592d3d4fad110d5598144fda9f2488520826\"\u003e\u003cimg src=\"https://img.shields.io/badge/0960592d3d-fix-green\" alt=\"fix - 0960592d3d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.8 (2026-04-08)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003ee40d378f3e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle nested brackets in host object bindings\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c6781071f52d6378a002fba6611bb283fbb2fde\"\u003e2c6781071f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eerror for type parameter declarations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e82192deda9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ehandle missing serialized container hydration data\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e057cc6d09d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove obsolete iOS cursor pointer hack in event delegation\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elanguage-service\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7797671257350665e8b3ceb2bc6a0201829dd338\"\u003e7797671257\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eget quick info at local var location to align with TS semantics and support type narrowing\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.6 (2026-04-01)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/08d36599d724d6b3dbe2c9891c32f783bef4e157\"\u003e08d36599d7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eregister SVG animation attributes in URL security context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/fcd0bb0db83576ef0bc13c5c32f158d95efbedd5\"\u003efcd0bb0db8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent recursive scope checks for invalid NgModule imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e84e35cdd60696d8670421189e4aa02c1db583a6\"\u003ee84e35cdd6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fa66173523bb275d33de4bd43ce23947812922e\"\u003e8fa6617352\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eresolve component import by exact specifier in route lazy-loading schematic\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/028e1d3ce0ed3a33d3b7730a51b549a5cf013b29\"\u003e028e1d3ce0\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etreat \u003ccode\u003eobject[data]\u003c/code\u003e as resource URL context (\u003ca href=\"https://redirect.github.com/angular/angular/pull/67797\"\u003e#67797\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003elocalize\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/78710938225d2c29c6e3666e431c2952bb5560db\"\u003e7871093822\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evalidate locale in getOutputPathFn to prevent path traversal\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071\"\u003e682aaf943f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd strictTemplates to tsconfig during ng update\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003erouter\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/daa9b2a9d67557ae9246559f74396f43b240581c\"\u003edaa9b2a9d6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epass outlet context to split to fix empty path named outlets\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d4c8a9a887a28fa4f3dfce663095ec13ef3bebd0\"\u003e\u003ccode\u003ed4c8a9a\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple SymbolBuilder from BoundTarget and minimize ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/057cc6d09d234f401a810cfdd3ad14127652b88b\"\u003e\u003ccode\u003e057cc6d\u003c/code\u003e\u003c/a\u003e fix(core): remove obsolete iOS cursor pointer hack in event delegation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c9f8f3afb68ac921e02354473ebae5fae229400a\"\u003e\u003ccode\u003ec9f8f3a\u003c/code\u003e\u003c/a\u003e test(core): add missing import of ChangeDetectionStrategy in query_spec\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/910dcb6d6aaf0fd5f592cda00a1f45c5ed3e71c1\"\u003e\u003ccode\u003e910dcb6\u003c/code\u003e\u003c/a\u003e refactor(compiler-cli): decouple TemplateSymbolBuilder from ts.TypeChecker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/82192deda9c07113835e6c85af3f2c8c8218cda0\"\u003e\u003ccode\u003e82192de\u003c/code\u003e\u003c/a\u003e fix(core): handle missing serialized container hydration data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2ae0912eea38d63201e94a5ecdee781c8491d78b\"\u003e\u003ccode\u003e2ae0912\u003c/code\u003e\u003c/a\u003e refactor(core): address review comments on NG0750 error message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e583f4c80811202ffbd321b98cc957fd586df1bd\"\u003e\u003ccode\u003ee583f4c\u003c/code\u003e\u003c/a\u003e refactor(core): Add more detail to NG0750 error message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b08e29f2634a86d3903a679fc37a21bd21a0bcc\"\u003e\u003ccode\u003e0b08e29\u003c/code\u003e\u003c/a\u003e test(core): refactors test to use \u003ccode\u003etimeout\u003c/code\u003e utility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4ad6d582d2a9f887c8530ff10ae513a4181ad24c\"\u003e\u003ccode\u003e4ad6d58\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003e\u003ccode\u003ed04ddd7\u003c/code\u003e\u003c/a\u003e fix(core): prevent binding unsafe attributes on SVG animation elements (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67797\"\u003e#67797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/forms` from 21.0.8 to 21.2.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.8\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e40d378f3e3e7e57a45c8fbd9565ee06a3a6a13f\"\u003e\u003cimg src=\"https://img.shields.io/badge/e40d378f3e-fix-green\" alt=\"fix - e40d378f3e\" /\u003e\u003c/a\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/wqj666666/booklore-alist-zh/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wqj666666%2Fbooklore-alist-zh/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"}},{"old_version":"3.10.19","new_version":"6.0.0","update_type":"major","path":"/web","pr_created_at":"2026-04-07T16:53:42.000Z","version_change":"3.10.19 → 6.0.0","issue":{"uuid":"4219273369","node_id":"PR_kwDOR7UDp87QkBAd","number":2,"state":"closed","title":"chore(deps-dev): bump @types/jasmine from 3.10.19 to 6.0.0 in /web","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-04T18:50:53.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-07T16:53:42.000Z","updated_at":"2026-05-04T18:51:02.000Z","time_to_close":2339831,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"3.10.19","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/web","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 3.10.19 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=3.10.19\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/abdur1547/bookturf-rails/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdur1547%2Fbookturf-rails/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-04-07T02:19:57.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4215041295","node_id":"PR_kwDOR5d9P87QXVZ8","number":14,"state":"open","title":"Bump @types/jasmine from 5.1.15 to 6.0.0","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-07T02:19:57.000Z","updated_at":"2026-04-07T02:20:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/TeamStarWolf/ATTACK-Navi/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamStarWolf%2FATTACK-Navi/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-04-06T03:33:29.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4209372850","node_id":"PR_kwDORtMf787QG9JY","number":51,"state":"open","title":"chore(deps): Bump the testing group across 1 directory with 4 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-06T03:33:29.000Z","updated_at":"2026-04-06T03:33:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"testing","update_count":4,"packages":[{"name":"@playwright/test","old_version":"1.58.2","new_version":"1.59.1","repository_url":"https://github.com/microsoft/playwright"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"jasmine-core","old_version":"5.6.0","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"karma-jasmine-html-reporter","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/dfederm/karma-jasmine-html-reporter"}],"path":null,"ecosystem":"npm"},"body":"Bumps the testing group with 4 updates in the /frontend/angular directory: [@playwright/test](https://github.com/microsoft/playwright), [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine), [jasmine-core](https://github.com/jasmine/jasmine) and [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter).\n\nUpdates `@playwright/test` from 1.58.2 to 1.59.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/playwright/releases\"\u003e\u003ccode\u003e@​playwright/test\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.59.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[Windows]\u003c/strong\u003e Reverted hiding console window when spawning browser processes, which caused regressions including broken \u003ccode\u003ecodegen\u003c/code\u003e, \u003ccode\u003e--ui\u003c/code\u003e and \u003ccode\u003eshow\u003c/code\u003e commands (\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39990\"\u003e#39990\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.59.0\u003c/h2\u003e\n\u003ch2\u003e🎬 Screencast\u003c/h2\u003e\n\u003cp\u003eNew \u003ca href=\"https://playwright.dev/docs/api/class-page#page-screencast\"\u003epage.screencast\u003c/a\u003e API provides a unified interface for capturing page content with:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eScreencast recordings\u003c/li\u003e\n\u003cli\u003eAction annotations\u003c/li\u003e\n\u003cli\u003eVisual overlays\u003c/li\u003e\n\u003cli\u003eReal-time frame capture\u003c/li\u003e\n\u003cli\u003eAgentic video receipts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003cstrong\u003eScreencast recording\u003c/strong\u003e — record video with precise start/stop control, as an alternative to the \u003ca href=\"https://playwright.dev/docs/api/class-browser#browser-new-context-option-record-video\"\u003e\u003ccode\u003erecordVideo\u003c/code\u003e\u003c/a\u003e option:\u003c/p\u003e\n\u003cpre lang=\"js\"\u003e\u003ccode\u003eawait page.screencast.start({ path: 'video.webm' });\r\n// ... perform actions ...\r\nawait page.screencast.stop();\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eAction annotations\u003c/strong\u003e — enable built-in visual annotations that highlight interacted elements and display action titles during recording:\u003c/p\u003e\n\u003cpre lang=\"js\"\u003e\u003ccode\u003eawait page.screencast.showActions({ position: 'top-right' });\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003ca href=\"https://playwright.dev/docs/api/class-screencast#screencast-show-actions\"\u003escreencast.showActions()\u003c/a\u003e accepts \u003ccode\u003eposition\u003c/code\u003e (\u003ccode\u003e'top-left'\u003c/code\u003e, \u003ccode\u003e'top'\u003c/code\u003e, \u003ccode\u003e'top-right'\u003c/code\u003e, \u003ccode\u003e'bottom-left'\u003c/code\u003e, \u003ccode\u003e'bottom'\u003c/code\u003e, \u003ccode\u003e'bottom-right'\u003c/code\u003e), \u003ccode\u003eduration\u003c/code\u003e (ms per annotation), and \u003ccode\u003efontSize\u003c/code\u003e (px). Returns a disposable to stop showing actions.\u003c/p\u003e\n\u003cp\u003eAction annotations can also be enabled in test fixtures via the \u003ccode\u003evideo\u003c/code\u003e option:\u003c/p\u003e\n\u003cpre lang=\"js\"\u003e\u003ccode\u003e// playwright.config.ts\r\nexport default defineConfig({\r\n  use: {\r\n    video: {\r\n      mode: 'on',\r\n      show: {\r\n        actions: { position: 'top-left' },\r\n        test: { position: 'top-right' },\r\n      },\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/d466ac5358cae058cdc75d2ae3ab3ad220042730\"\u003e\u003ccode\u003ed466ac5\u003c/code\u003e\u003c/a\u003e chore: mark v1.59.1 (\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/40005\"\u003e#40005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/530e7e5f0021730948605a5788790d353d9cf444\"\u003e\u003ccode\u003e530e7e5\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/4004\"\u003e#4004\u003c/a\u003e): fix(cli): kill-all should kill dashboard\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/9aa216c8d7f866e8a8fa94ca55d86e81a8f4decb\"\u003e\u003ccode\u003e9aa216c\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39994\"\u003e#39994\u003c/a\u003e): Revert \u0026quot;fix(windows): hide console window when spawning ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/01b2b1533e0bfa1c582117e3ec109fcb57657747\"\u003e\u003ccode\u003e01b2b15\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39980\"\u003e#39980\u003c/a\u003e): chore: more release notes fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/a5cb6c9a2f52078de075413beb812e3180d195ba\"\u003e\u003ccode\u003ea5cb6c9\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39972\"\u003e#39972\u003c/a\u003e): chore: expose browser.bind and browser.unbind APIs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/99a17b58541798b03257c57a9e5589db2394f89e\"\u003e\u003ccode\u003e99a17b5\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39975\"\u003e#39975\u003c/a\u003e): chore: support opening .trace files via .link indirection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/43607c3b71d89445a6473708429eeecd6f571d6e\"\u003e\u003ccode\u003e43607c3\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39974\"\u003e#39974\u003c/a\u003e): chore(webkit): update Safari user-agent version to 26.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/62cabe19eb07e329086e5cb20441737cf51367d0\"\u003e\u003ccode\u003e62cabe1\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39969\"\u003e#39969\u003c/a\u003e): chore(npm): include all *.md from lib (\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39970\"\u003e#39970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/0c65a759af337ba5143ebbe34afe4141482ce2d4\"\u003e\u003ccode\u003e0c65a75\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39968\"\u003e#39968\u003c/a\u003e): chore: screencast.showActions api\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/playwright/commit/f04155b09034c21719162146d6016de9933a2dbe\"\u003e\u003ccode\u003ef04155b\u003c/code\u003e\u003c/a\u003e cherry-pick(\u003ca href=\"https://redirect.github.com/microsoft/playwright/issues/39958\"\u003e#39958\u003c/a\u003e): chore: release notes for langs v1.59\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/playwright/compare/v1.58.2...v1.59.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@types/jasmine` from 5.1.15 to 6.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jasmine-core` from 5.6.0 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jasmine/jasmine/releases\"\u003ejasmine-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.1.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.1.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-beta.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-beta.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-beta.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-beta.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.2\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.2.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.13.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.13.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.12.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.12.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.12.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.12.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.11.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.11.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.10.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.10.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.9.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.9.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.8.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.8.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.7.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.7.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.7.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.7.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/3de4512681fa31332f332f70314795f7d7037a3f\"\u003e\u003ccode\u003e3de4512\u003c/code\u003e\u003c/a\u003e Bump version to 6.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/4bf333ed38b50ab26593226e0f5ca4f1280f3c89\"\u003e\u003ccode\u003e4bf333e\u003c/code\u003e\u003c/a\u003e rm unnecessary and deprecated eslint-env comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/4f5ef7c2d7053ff9c8a0c31060c54ab31e5e7c08\"\u003e\u003ccode\u003e4f5ef7c\u003c/code\u003e\u003c/a\u003e Drop support for Safari 16 and 17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/5de03beea14cb40467a22c48007dc1148371ecd7\"\u003e\u003ccode\u003e5de03be\u003c/code\u003e\u003c/a\u003e Fix test failure in Node 20 and 22 parallel tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/42baa422b3fb28ffc69048e4d36b32667f6257bf\"\u003e\u003ccode\u003e42baa42\u003c/code\u003e\u003c/a\u003e Formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/6af5d24b3b2ef3a242b20113d01891930e76d61d\"\u003e\u003ccode\u003e6af5d24\u003c/code\u003e\u003c/a\u003e Improve formatting of AggregateErrors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/b88ce2d49f54f1baa91658509cce1f941a0c62b2\"\u003e\u003ccode\u003eb88ce2d\u003c/code\u003e\u003c/a\u003e Improve AggregateError specs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/c216ae1d132bb4a0d010b85d3328bc1d3c72b45b\"\u003e\u003ccode\u003ec216ae1\u003c/code\u003e\u003c/a\u003e Merge branch 'puglyfe-aggregate-errors'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/319776d2413f42c3da13d6a605118cdcf775e541\"\u003e\u003ccode\u003e319776d\u003c/code\u003e\u003c/a\u003e Report the constituent errors of an AggregateError\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/1d0718dc2f48db5a9ffb6ff90f324703b805a58c\"\u003e\u003ccode\u003e1d0718d\u003c/code\u003e\u003c/a\u003e Fix MAX_PRETTY_PRINT_CHARS default jsdoc in source code too\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jasmine/jasmine/compare/v5.6.0...v6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `karma-jasmine-html-reporter` from 2.1.0 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/releases\"\u003ekarma-jasmine-html-reporter's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Jasmine 6\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\"\u003ehttps://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/commit/12405b839cef2cd3e16540a3ff7b2f51a1517e0a\"\u003e\u003ccode\u003e12405b8\u003c/code\u003e\u003c/a\u003e Minor fix to package.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/commit/7a82a4145d784b5124762b9e8da05be07953a41f\"\u003e\u003ccode\u003e7a82a41\u003c/code\u003e\u003c/a\u003e Add support for Jasmine 6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/MynorXico/racephotos/pull/51","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MynorXico%2Fracephotos/issues/51","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/51/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-04-05T13:20:27.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4207528834","node_id":"PR_kwDOR6RXGM7QC3sH","number":2,"state":"closed","title":"chore(deps-dev): bump @types/jasmine from 5.1.15 to 6.0.0","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-05T13:23:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-05T13:20:27.000Z","updated_at":"2026-04-05T13:23:58.000Z","time_to_close":209,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/franverona/planr/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/franverona%2Fplanr/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"}},{"old_version":"5.1.4","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-04-04T13:23:05.000Z","version_change":"5.1.4 → 6.0.0","issue":{"uuid":"4204931813","node_id":"PR_kwDOBiCNks7P9SXR","number":1402,"state":"open","title":"Bump @types/jasmine from 5.1.4 to 6.0.0","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-04T13:23:05.000Z","updated_at":"2026-04-04T13:25:40.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"@types/jasmine","old_version":"5.1.4","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.4 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.4\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/SubJunk/TimelineTools/pull/1402","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SubJunk%2FTimelineTools/issues/1402","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1402/packages"}},{"old_version":"3.6.11","new_version":"3.10.19","update_type":"minor","path":"/components/crud-web-apps/volumes/frontend","pr_created_at":"2026-04-01T16:01:05.000Z","version_change":"3.6.11 → 3.10.19","issue":{"uuid":"4188066116","node_id":"PR_kwDOR3A4rs7PTkRB","number":87,"state":"closed","title":"chore: Bump @types/jasmine from 3.6.11 to 3.10.19 in /components/crud-web-apps/volumes/frontend","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-04T10:47:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-01T16:01:05.000Z","updated_at":"2026-04-04T10:47:52.000Z","time_to_close":240399,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: Bump","packages":[{"name":"@types/jasmine","old_version":"3.6.11","new_version":"3.10.19","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/components/crud-web-apps/volumes/frontend","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 3.6.11 to 3.10.19.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=3.6.11\u0026new-version=3.10.19)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/christian-heusel/notebooks-playground/pull/87","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/christian-heusel%2Fnotebooks-playground/issues/87","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/87/packages"}},{"old_version":"3.6.11","new_version":"3.10.19","update_type":"minor","path":"/components/crud-web-apps/jupyter/frontend","pr_created_at":"2026-04-01T15:55:29.000Z","version_change":"3.6.11 → 3.10.19","issue":{"uuid":"4188032427","node_id":"PR_kwDOR3A4rs7PTecw","number":78,"state":"closed","title":"chore: Bump @types/jasmine from 3.6.11 to 3.10.19 in /components/crud-web-apps/jupyter/frontend","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-04T10:47:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-01T15:55:29.000Z","updated_at":"2026-04-04T10:47:49.000Z","time_to_close":240732,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: Bump","packages":[{"name":"@types/jasmine","old_version":"3.6.11","new_version":"3.10.19","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/components/crud-web-apps/jupyter/frontend","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 3.6.11 to 3.10.19.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=3.6.11\u0026new-version=3.10.19)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/christian-heusel/notebooks-playground/pull/78","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/christian-heusel%2Fnotebooks-playground/issues/78","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/78/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-03-30T11:35:39.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4169994112","node_id":"PR_kwDOQGzZCM7Olvuk","number":52,"state":"closed","title":"chore(deps): bump the npm-version-updates group across 1 directory with 14 updates","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-06T11:01:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-30T11:35:39.000Z","updated_at":"2026-04-06T11:01:43.000Z","time_to_close":602763,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-version-updates","update_count":14,"packages":[{"name":"@edgeflare/ngx-oidc","old_version":"0.0.1","new_version":"0.0.2","repository_url":"https://github.com/edgeflare/ngx-oidc"},{"name":"zone.js","old_version":"0.15.1","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular/build","old_version":"21.2.3","new_version":"21.2.5","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.3","new_version":"21.2.5","repository_url":"https://github.com/angular/angular-cli"},{"name":"@eslint/js","old_version":"9.39.4","new_version":"10.0.1","repository_url":"https://github.com/eslint/eslint"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/node","old_version":"22.19.15","new_version":"25.5.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"angular-eslint","old_version":"21.0.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.4","new_version":"10.1.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine-core","old_version":"5.9.0","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"karma-jasmine-html-reporter","old_version":"2.1.0","new_version":"2.2.0","repository_url":"https://github.com/dfederm/karma-jasmine-html-reporter"},{"name":"knip","old_version":"5.88.1","new_version":"6.1.0","repository_url":"https://github.com/webpro-nl/knip"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.46.0","new_version":"8.57.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-version-updates group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@edgeflare/ngx-oidc](https://github.com/edgeflare/ngx-oidc) | `0.0.1` | `0.0.2` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.15.1` | `0.16.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.3` | `21.2.5` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.3` | `21.2.5` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.4` | `10.0.1` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.15` | `6.0.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `22.19.15` | `25.5.0` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.0.0` | `21.3.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.4` | `10.1.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.9.0` | `6.1.0` |\n| [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) | `2.1.0` | `2.2.0` |\n| [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.88.1` | `6.1.0` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.46.0` | `8.57.2` |\n\n\nUpdates `@edgeflare/ngx-oidc` from 0.0.1 to 0.0.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/edgeflare/ngx-oidc/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zone.js` from 0.15.1 to 0.16.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/packages/zone.js/CHANGELOG.md\"\u003ezone.js's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003c!-- raw HTML omitted --\u003e0.16.1 (2026-02-18)\u003c!-- raw HTML omitted --\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(zone.js): support passthrough of Promise.try API (\u003ca href=\"https://github.com/angular/angular/commit/fc557f0\"\u003efc557f0\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/67057\"\u003e#67057\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003c!-- raw HTML omitted --\u003e0.16.0 (2025-11-19)\u003c!-- raw HTML omitted --\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(zone.js): Support jasmine v6 (\u003ca href=\"https://github.com/angular/angular/commit/48abe00\"\u003e48abe00\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(zone.js): waitForAsync should pass args to the test function (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/61755\"\u003e#61755\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/3c216c1\"\u003e3c216c1\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/61755\"\u003e#61755\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/61717\"\u003e#61717\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/61755\"\u003e#61755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(zone.js): Add internal implementation for auto ticking fakeAsync (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/62135\"\u003e#62135\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/0a827f9\"\u003e0a827f9\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/62135\"\u003e#62135\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/62135\"\u003e#62135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(zone.js): Improve missing proxy zone error for jest imported (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/64497\"\u003e#64497\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/ced2fa5\"\u003eced2fa5\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/64497\"\u003e#64497\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/47603\"\u003e#47603\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/64497\"\u003e#64497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(zone.js): remove legacy browser support (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/63511\"\u003e#63511\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/2e46596\"\u003e2e46596\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/63511\"\u003e#63511\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/63511\"\u003e#63511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor(zone.js): remove unused jasmine globalerror monkey patching. (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/63077\"\u003e#63077\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/9aef481\"\u003e9aef481\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/63077\"\u003e#63077\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/63072\"\u003e#63072\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/63077\"\u003e#63077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest(zone.js): refactor tests to remove usage of shelljs (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/zone.js/issues/64042\"\u003e#64042\u003c/a\u003e) (\u003ca href=\"https://github.com/angular/angular/commit/422a3b9\"\u003e422a3b9\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/angular/angular/issues/64042\"\u003e#64042\u003c/a\u003e \u003ca href=\"https://redirect.github.com/angular/angular/issues/64042\"\u003e#64042\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBREAKING CHANGE\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIE/Non-Chromium Edge are not supported anymore.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ac8b5ff9382ee92761c414098a3295cd8d1cd519\"\u003e\u003ccode\u003eac8b5ff\u003c/code\u003e\u003c/a\u003e release: cut the zone.js-0.16.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/98610aabaf88654863f863addece1c67d6429095\"\u003e\u003ccode\u003e98610aa\u003c/code\u003e\u003c/a\u003e docs(zone.js): update release and publish commands in DEVELOPER.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99e336a034d597aa93d2042123174e7acbfc520\"\u003e\u003ccode\u003ed99e336\u003c/code\u003e\u003c/a\u003e docs(zone.js): update build command in DEVELOPER.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c2f7eaa833bc8cfaa331bfed370b4b83bf628c2e\"\u003e\u003ccode\u003ec2f7eaa\u003c/code\u003e\u003c/a\u003e docs(zone.js): update instructions to use pnpm\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fc557f0276aefe523e328cad984eddb3ba7fecdb\"\u003e\u003ccode\u003efc557f0\u003c/code\u003e\u003c/a\u003e fix(zone.js): support passthrough of Promise.try API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/11767cabe48606a1f575d50b8af79b8bbb35a852\"\u003e\u003ccode\u003e11767ca\u003c/code\u003e\u003c/a\u003e build: update Jasmine to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0c6604f47858d6bea566db4a8a68fe72870022f3\"\u003e\u003ccode\u003e0c6604f\u003c/code\u003e\u003c/a\u003e refactor(common): update copyright to Google LLC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/df3258cfc471f4061f7db8b135cf4d84fe6cbf3b\"\u003e\u003ccode\u003edf3258c\u003c/code\u003e\u003c/a\u003e build: update all non-major dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9989c5fb7814fe19c782bebcf9355b3bf4fde526\"\u003e\u003ccode\u003e9989c5f\u003c/code\u003e\u003c/a\u003e build: update dependency \u003ccode\u003e@​csstools/css-color-parser\u003c/code\u003e to v4\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/zone.js-0.16.1/packages/zone.js\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/build` from 21.2.3 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003cimg src=\"https://img.shields.io/badge/cadf9b201-feat-blue\" alt=\"feat - cadf9b201\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbc255419-fix-green\" alt=\"fix - bbc255419\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003cimg src=\"https://img.shields.io/badge/b1fe66a7f-fix-green\" alt=\"fix - b1fe66a7f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7787d0925559fe7731034856a872708bcfb78be\"\u003e\u003cimg src=\"https://img.shields.io/badge/a7787d092-fix-green\" alt=\"fix - a7787d092\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore console methods after logger completes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7170599ab237691d9208c410363ef7e4ee50db2c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7170599ab-fix-green\" alt=\"fix - 7170599ab\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ededuplicate and merge coverage excludes with vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c73f13797afe57fcc98faf6361085e1dd5afae9b\"\u003e\u003cimg src=\"https://img.shields.io/badge/c73f13797-fix-green\" alt=\"fix - c73f13797\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent reporter duplicates by explicitly overriding Vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/956ccaa71ea8a3626e4139cf7e2f26ee637feeed\"\u003e\u003cimg src=\"https://img.shields.io/badge/956ccaa71-fix-green\" alt=\"fix - 956ccaa71\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove default for unit-test coverage option\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/36978db7e494e4e5612aa2a8384199eeca7c4c2d\"\u003e\u003cimg src=\"https://img.shields.io/badge/36978db7e-fix-green\" alt=\"fix - 36978db7e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn about performance of test.exclude in vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6ec36f5bee05d97c10ca8d91d5746621ffb1fdb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/6ec36f5be-fix-green\" alt=\"fix - 6ec36f5be\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn when vitest watch config conflicts with builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9bdf782c838ab5820ec905d689a62ffc3b3cabe3\"\u003e\u003cimg src=\"https://img.shields.io/badge/9bdf782c8-fix-green\" alt=\"fix - 9bdf782c8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eapply forwarded prefix and vary header in accept-language redirects\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/628c586728748e1c367fa7e363299eb79b1566ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/628c58672-fix-green\" alt=\"fix - 628c58672\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport '*' in allowedHosts and warn about security risks\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003ecadf9b201\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003ebbc255419\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003eb1fe66a7f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.22 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5978eeeff63cd62f1515d949eaad0b5e6f7c44cd\"\u003e5978eeeff\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/core\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6e9b926129a9dd79f01d47b7446411b8963ffb62\"\u003e6e9b92612\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6f209c26dc5a454acd1cd76f25240c26978fa827\"\u003e6f209c26d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.23 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/67cfbe32ff013d7c9763253c8ccd383d8ee2416c\"\u003e67cfbe32f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/30186122102ebe1e5b31abe6241d03c94d162e39\"\u003e\u003ccode\u003e3018612\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/349bd4391f41854cdb7b8da5ac18e88465bb4e99\"\u003e\u003ccode\u003e349bd43\u003c/code\u003e\u003c/a\u003e build: update dependency picomatch to v4.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003ccode\u003ecadf9b2\u003c/code\u003e\u003c/a\u003e feat(\u003ccode\u003e@​angular/cli\u003c/code\u003e): support custom port in MCP devserver start tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003ccode\u003ebbc2554\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): allow underscores in host validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/88ac9986ff58d69cca9ae81feea1e35692fa1e84\"\u003e\u003ccode\u003e88ac998\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/022e0efd93dd1b4866305c18c56bbb402090e033\"\u003e\u003ccode\u003e022e0ef\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c363f19712d8cf06a911780da36457fbd35461d5\"\u003e\u003ccode\u003ec363f19\u003c/code\u003e\u003c/a\u003e build: update dependency node to v22.22.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003ccode\u003eb1fe66a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): patch Headers.forEach in cloneRequestAndPatchHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/2aa93fc30918535abe2698bef8984aae57f6c115\"\u003e\u003ccode\u003e2aa93fc\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f33826e3efc7e5d7e9a061dc683111d2f451f7de\"\u003e\u003ccode\u003ef33826e\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.3...v21.2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cli` from 21.2.3 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/releases\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003cimg src=\"https://img.shields.io/badge/cadf9b201-feat-blue\" alt=\"feat - cadf9b201\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbc255419-fix-green\" alt=\"fix - bbc255419\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003cimg src=\"https://img.shields.io/badge/b1fe66a7f-fix-green\" alt=\"fix - b1fe66a7f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7787d0925559fe7731034856a872708bcfb78be\"\u003e\u003cimg src=\"https://img.shields.io/badge/a7787d092-fix-green\" alt=\"fix - a7787d092\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erestore console methods after logger completes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7170599ab237691d9208c410363ef7e4ee50db2c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7170599ab-fix-green\" alt=\"fix - 7170599ab\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ededuplicate and merge coverage excludes with vitest\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c73f13797afe57fcc98faf6361085e1dd5afae9b\"\u003e\u003cimg src=\"https://img.shields.io/badge/c73f13797-fix-green\" alt=\"fix - c73f13797\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent reporter duplicates by explicitly overriding Vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/956ccaa71ea8a3626e4139cf7e2f26ee637feeed\"\u003e\u003cimg src=\"https://img.shields.io/badge/956ccaa71-fix-green\" alt=\"fix - 956ccaa71\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove default for unit-test coverage option\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/36978db7e494e4e5612aa2a8384199eeca7c4c2d\"\u003e\u003cimg src=\"https://img.shields.io/badge/36978db7e-fix-green\" alt=\"fix - 36978db7e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn about performance of test.exclude in vitest configuration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6ec36f5bee05d97c10ca8d91d5746621ffb1fdb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/6ec36f5be-fix-green\" alt=\"fix - 6ec36f5be\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ewarn when vitest watch config conflicts with builder\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/9bdf782c838ab5820ec905d689a62ffc3b3cabe3\"\u003e\u003cimg src=\"https://img.shields.io/badge/9bdf782c8-fix-green\" alt=\"fix - 9bdf782c8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eapply forwarded prefix and vary header in accept-language redirects\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/628c586728748e1c367fa7e363299eb79b1566ca\"\u003e\u003cimg src=\"https://img.shields.io/badge/628c58672-fix-green\" alt=\"fix - 628c58672\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esupport '*' in allowedHosts and warn about security risks\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular-cli/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003ecadf9b201\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport custom port in MCP devserver start tool\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/ssr\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003ebbc255419\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow underscores in host validation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003eb1fe66a7f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epatch Headers.forEach in cloneRequestAndPatchHeaders\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.22 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/build-angular\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/5978eeeff63cd62f1515d949eaad0b5e6f7c44cd\"\u003e5978eeeff\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular-devkit/core\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6e9b926129a9dd79f01d47b7446411b8963ffb62\"\u003e6e9b92612\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/build\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/6f209c26dc5a454acd1cd76f25240c26978fa827\"\u003e6f209c26d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.23 (2026-03-27)\u003c/h1\u003e\n\u003ch3\u003e\u003ccode\u003e@​angular/cli\u003c/code\u003e\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/67cfbe32ff013d7c9763253c8ccd383d8ee2416c\"\u003e67cfbe32f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eupdate picomatch to 4.0.4\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/30186122102ebe1e5b31abe6241d03c94d162e39\"\u003e\u003ccode\u003e3018612\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/349bd4391f41854cdb7b8da5ac18e88465bb4e99\"\u003e\u003ccode\u003e349bd43\u003c/code\u003e\u003c/a\u003e build: update dependency picomatch to v4.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/cadf9b201bd1055a6e3cc016eb01e0196b028080\"\u003e\u003ccode\u003ecadf9b2\u003c/code\u003e\u003c/a\u003e feat(\u003ccode\u003e@​angular/cli\u003c/code\u003e): support custom port in MCP devserver start tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbc255419b346e5152391b47f310922f86e9e383\"\u003e\u003ccode\u003ebbc2554\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): allow underscores in host validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/88ac9986ff58d69cca9ae81feea1e35692fa1e84\"\u003e\u003ccode\u003e88ac998\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/022e0efd93dd1b4866305c18c56bbb402090e033\"\u003e\u003ccode\u003e022e0ef\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/c363f19712d8cf06a911780da36457fbd35461d5\"\u003e\u003ccode\u003ec363f19\u003c/code\u003e\u003c/a\u003e build: update dependency node to v22.22.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/b1fe66a7f8650ce021b4070394bc31848fc64ca5\"\u003e\u003ccode\u003eb1fe66a\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): patch Headers.forEach in cloneRequestAndPatchHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/2aa93fc30918535abe2698bef8984aae57f6c115\"\u003e\u003ccode\u003e2aa93fc\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f33826e3efc7e5d7e9a061dc683111d2f451f7de\"\u003e\u003ccode\u003ef33826e\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.3...v21.2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@eslint/js` from 9.39.4 to 10.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eslint/eslint/releases\"\u003e\u003ccode\u003e@​eslint/js\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev10.0.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c87d5bded54c5cf491eb04c24c9d09bbbd42c23e\"\u003e\u003ccode\u003ec87d5bd\u003c/code\u003e\u003c/a\u003e fix: update eslint (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20531\"\u003e#20531\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/d84100115c14691691058f00779c94e74fca946a\"\u003e\u003ccode\u003ed841001\u003c/code\u003e\u003c/a\u003e fix: update \u003ccode\u003eminimatch\u003c/code\u003e to \u003ccode\u003e10.2.1\u003c/code\u003e to address security vulnerabilities (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20519\"\u003e#20519\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/04c21475b3004904948f02049f2888b401d82c78\"\u003e\u003ccode\u003e04c2147\u003c/code\u003e\u003c/a\u003e fix: update error message for unused suppressions (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20496\"\u003e#20496\u003c/a\u003e) (fnx)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/38b089c1726feac0e31a31d47941bd99e29ce003\"\u003e\u003ccode\u003e38b089c\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​eslint/config-array\u003c/code\u003e to ^0.23.1 (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20484\"\u003e#20484\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/5b3dbce50a1404a9f118afe810cefeee79388a2a\"\u003e\u003ccode\u003e5b3dbce\u003c/code\u003e\u003c/a\u003e docs: add AI acknowledgement section to templates (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20431\"\u003e#20431\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/6f23076037d5879f20fb3be2ef094293b1e8d38c\"\u003e\u003ccode\u003e6f23076\u003c/code\u003e\u003c/a\u003e docs: toggle nav in no-JS mode (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20476\"\u003e#20476\u003c/a\u003e) (Tanuj Kanti)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/b69cfb32a16c5d5e9986390d484fae1d21e406f9\"\u003e\u003ccode\u003eb69cfb3\u003c/code\u003e\u003c/a\u003e docs: Update README (GitHub Actions Bot)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChores\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e5c281ffd038a3a7a3e5364db0b9378e0ad83020\"\u003e\u003ccode\u003ee5c281f\u003c/code\u003e\u003c/a\u003e chore: updates for v9.39.3 release (Jenkins)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/8c3832adb77cd993b4a24891900d5eeaaf093cdc\"\u003e\u003ccode\u003e8c3832a\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003e@​typescript-eslint/parser\u003c/code\u003e to ^8.56.0 (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20514\"\u003e#20514\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/8330d238ae6adb68bb6a1c9381e38cfedd990d94\"\u003e\u003ccode\u003e8330d23\u003c/code\u003e\u003c/a\u003e test: add tests for config-api (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20493\"\u003e#20493\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/37d6e91e88fa6a2ca6d8726679096acff21ba6cc\"\u003e\u003ccode\u003e37d6e91\u003c/code\u003e\u003c/a\u003e chore: remove eslint v10 prereleases from eslint-config-eslint deps (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20494\"\u003e#20494\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/da7cd0e79197ad16e17052eef99df141de6dbfb1\"\u003e\u003ccode\u003eda7cd0e\u003c/code\u003e\u003c/a\u003e refactor: cleanup error message templates (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20479\"\u003e#20479\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/84fb885d49ac810e79a9491276b4828b53d913e5\"\u003e\u003ccode\u003e84fb885\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release (Jenkins)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1f667344b57c4c09b548d94bcfac1f91b6e5c63d\"\u003e\u003ccode\u003e1f66734\u003c/code\u003e\u003c/a\u003e chore: add \u003ccode\u003eeslint\u003c/code\u003e to \u003ccode\u003epeerDependencies\u003c/code\u003e of \u003ccode\u003e@eslint/js\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20467\"\u003e#20467\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev10.0.0\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f9e54f43a5e497cdfa179338b431093245cb787b\"\u003e\u003ccode\u003ef9e54f4\u003c/code\u003e\u003c/a\u003e feat!: estimate rule-tester failure location (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20420\"\u003e#20420\u003c/a\u003e) (ST-DDT)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a176319d8ade1a7d9b2d7fb8f038f55a2662325f\"\u003e\u003ccode\u003ea176319\u003c/code\u003e\u003c/a\u003e feat!: replace \u003ccode\u003echalk\u003c/code\u003e with \u003ccode\u003estyleText\u003c/code\u003e and add \u003ccode\u003ecolor\u003c/code\u003e to \u003ccode\u003eResultsMeta\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20227\"\u003e#20227\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c7046e6c1e03c4ca0eee4888a1f2eba4c6454f84\"\u003e\u003ccode\u003ec7046e6\u003c/code\u003e\u003c/a\u003e feat!: enable JSX reference tracking (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20152\"\u003e#20152\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/fa31a608901684fbcd9906d1907e66561d16e5aa\"\u003e\u003ccode\u003efa31a60\u003c/code\u003e\u003c/a\u003e feat!: add \u003ccode\u003ename\u003c/code\u003e to configs (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20015\"\u003e#20015\u003c/a\u003e) (Kirk Waiblinger)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/3383e7ec9028166cafc8ea7986c2f7498d0049f0\"\u003e\u003ccode\u003e3383e7e\u003c/code\u003e\u003c/a\u003e fix!: remove deprecated \u003ccode\u003eSourceCode\u003c/code\u003e methods (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20137\"\u003e#20137\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/501abd0e916a35554c58b7c0365537f1fa3880ce\"\u003e\u003ccode\u003e501abd0\u003c/code\u003e\u003c/a\u003e feat!: update dependency minimatch to v10 (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20246\"\u003e#20246\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ca4d3b40085de47561f89656a2207d09946ed45e\"\u003e\u003ccode\u003eca4d3b4\u003c/code\u003e\u003c/a\u003e fix!: stricter rule tester assertions for valid test cases (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20125\"\u003e#20125\u003c/a\u003e) (唯然)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/96512a66c86402fb0538cdcb6cd30b9073f6bf3b\"\u003e\u003ccode\u003e96512a6\u003c/code\u003e\u003c/a\u003e fix!: Remove deprecated rule context methods (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20086\"\u003e#20086\u003c/a\u003e) (Nicholas C. Zakas)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c69fdacdb2e886b9d965568a397aa8220db3fe90\"\u003e\u003ccode\u003ec69fdac\u003c/code\u003e\u003c/a\u003e feat!: remove eslintrc support (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20037\"\u003e#20037\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/208b5cc34a8374ff81412b5bec2e0800eebfbd04\"\u003e\u003ccode\u003e208b5cc\u003c/code\u003e\u003c/a\u003e feat!: Use \u003ccode\u003eScopeManager#addGlobals()\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20132\"\u003e#20132\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a2ee188ea7a38a0c6155f3d39e2b00e1d0f36e14\"\u003e\u003ccode\u003ea2ee188\u003c/code\u003e\u003c/a\u003e fix!: add \u003ccode\u003euniqueItems: true\u003c/code\u003e in \u003ccode\u003eno-invalid-regexp\u003c/code\u003e option (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20155\"\u003e#20155\u003c/a\u003e) (Tanuj Kanti)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a89059dbf2832d417dd493ee81483227ec44e4ab\"\u003e\u003ccode\u003ea89059d\u003c/code\u003e\u003c/a\u003e feat!: Program range span entire source text (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20133\"\u003e#20133\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/39a6424373d915fa9de0d7b0caba9a4dc3da9b53\"\u003e\u003ccode\u003e39a6424\u003c/code\u003e\u003c/a\u003e fix!: assert 'text' is a string across all RuleFixer methods (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20082\"\u003e#20082\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f28fbf846244e043c92b355b224d121b06140b44\"\u003e\u003ccode\u003ef28fbf8\u003c/code\u003e\u003c/a\u003e fix!: Deprecate \u003ccode\u003e\u0026quot;always\u0026quot;\u003c/code\u003e and \u003ccode\u003e\u0026quot;as-needed\u0026quot;\u003c/code\u003e options of the \u003ccode\u003eradix\u003c/code\u003e rule (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20223\"\u003e#20223\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/aa3fb2b233e929b37220be940575f42c280e0b98\"\u003e\u003ccode\u003eaa3fb2b\u003c/code\u003e\u003c/a\u003e fix!: tighten \u003ccode\u003efunc-names\u003c/code\u003e schema (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20119\"\u003e#20119\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f6c0ed0311dcfee853367d5068c765d066e6b756\"\u003e\u003ccode\u003ef6c0ed0\u003c/code\u003e\u003c/a\u003e feat!: report \u003ccode\u003eeslint-env\u003c/code\u003e comments as errors (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20128\"\u003e#20128\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/4bf739fb533e59f7f0a66b65f7bc80be0f37d8db\"\u003e\u003ccode\u003e4bf739f\u003c/code\u003e\u003c/a\u003e fix!: remove deprecated \u003ccode\u003eLintMessage#nodeType\u003c/code\u003e and \u003ccode\u003eTestCaseError#type\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20096\"\u003e#20096\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/523c076866400670fb2192a3f55dbf7ad3469247\"\u003e\u003ccode\u003e523c076\u003c/code\u003e\u003c/a\u003e feat!: drop support for jiti \u0026lt; 2.2.0 (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20016\"\u003e#20016\u003c/a\u003e) (michael faith)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/454a292c95f34dad232411ddac06408e6383bb64\"\u003e\u003ccode\u003e454a292\u003c/code\u003e\u003c/a\u003e feat!: update \u003ccode\u003eeslint:recommended\u003c/code\u003e configuration (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20210\"\u003e#20210\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/4f880ee02992e1bf0e96ebaba679985e2d1295f1\"\u003e\u003ccode\u003e4f880ee\u003c/code\u003e\u003c/a\u003e feat!: remove \u003ccode\u003ev10_*\u003c/code\u003e and inactive \u003ccode\u003eunstable_*\u003c/code\u003e flags (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20225\"\u003e#20225\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f18115c363a4ac7671a4c7f30ee13d57ebba330f\"\u003e\u003ccode\u003ef18115c\u003c/code\u003e\u003c/a\u003e feat!: \u003ccode\u003eno-shadow-restricted-names\u003c/code\u003e report \u003ccode\u003eglobalThis\u003c/code\u003e by default (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20027\"\u003e#20027\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c6358c31fbd3937b92d89be2618ffdf5a774604e\"\u003e\u003ccode\u003ec6358c3\u003c/code\u003e\u003c/a\u003e feat!: Require Node.js \u003ccode\u003e^20.19.0 || ^22.13.0 || \u0026gt;=24\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20160\"\u003e#20160\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/bff9091927811497dbf066b0e3b85ecb37d43822\"\u003e\u003ccode\u003ebff9091\u003c/code\u003e\u003c/a\u003e feat: handle \u003ccode\u003eArray.fromAsync\u003c/code\u003e in \u003ccode\u003earray-callback-return\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20457\"\u003e#20457\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/290c594bb50c439fb71bc75521ee5360daa8c222\"\u003e\u003ccode\u003e290c594\u003c/code\u003e\u003c/a\u003e feat: add \u003ccode\u003eself\u003c/code\u003e to \u003ccode\u003eno-implied-eval\u003c/code\u003e rule (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20468\"\u003e#20468\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/43677de07ebd6e14bfac40a46ad749ba783c45f2\"\u003e\u003ccode\u003e43677de\u003c/code\u003e\u003c/a\u003e feat: fix handling of function and class expression names in \u003ccode\u003eno-shadow\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20432\"\u003e#20432\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/84fb885d49ac810e79a9491276b4828b53d913e5\"\u003e\u003ccode\u003e84fb885\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1f667344b57c4c09b548d94bcfac1f91b6e5c63d\"\u003e\u003ccode\u003e1f66734\u003c/code\u003e\u003c/a\u003e chore: add \u003ccode\u003eeslint\u003c/code\u003e to \u003ccode\u003epeerDependencies\u003c/code\u003e of \u003ccode\u003e@eslint/js\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20467\"\u003e#20467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f3fbc2f60cbe2c718364feb8c3fc0452c0df3c56\"\u003e\u003ccode\u003ef3fbc2f\u003c/code\u003e\u003c/a\u003e chore: set \u003ccode\u003e@eslint/js\u003c/code\u003e version to 10.0.0 to skip releasing it (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20466\"\u003e#20466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/b4b3127f8542c599ce2dea804b6582ebc40c993d\"\u003e\u003ccode\u003eb4b3127\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/0b14059491d830a49b3577931f4f68fbcfce6be5\"\u003e\u003ccode\u003e0b14059\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/fa31a608901684fbcd9906d1907e66561d16e5aa\"\u003e\u003ccode\u003efa31a60\u003c/code\u003e\u003c/a\u003e feat!: add \u003ccode\u003ename\u003c/code\u003e to configs (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20015\"\u003e#20015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1e2cad5f6fa47ed6ed89d2a29798dda926d50990\"\u003e\u003ccode\u003e1e2cad5\u003c/code\u003e\u003c/a\u003e chore: package.json update for \u003ccode\u003e@​eslint/js\u003c/code\u003e release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/454a292c95f34dad232411ddac06408e6383bb64\"\u003e\u003ccode\u003e454a292\u003c/code\u003e\u003c/a\u003e feat!: update \u003ccode\u003eeslint:recommended\u003c/code\u003e configuration (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20210\"\u003e#20210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c6358c31fbd3937b92d89be2618ffdf5a774604e\"\u003e\u003ccode\u003ec6358c3\u003c/code\u003e\u003c/a\u003e feat!: Require Node.js \u003ccode\u003e^20.19.0 || ^22.13.0 || \u0026gt;=24\u003c/code\u003e (\u003ca href=\"https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20160\"\u003e#20160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/eslint/eslint/commits/v10.0.1/packages/js\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@types/jasmine` from 5.1.15 to 6.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@types/node` from 22.19.15 to 25.5.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `angular-eslint` from 21.0.0 to 21.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular-eslint/angular-eslint/releases\"\u003eangular-eslint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.3.1\u003c/h2\u003e\n\u003ch2\u003e21.3.1 (2026-03-17)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2934\"\u003e#2934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enarrow build target cache outputs to avoid clobbering compile artifacts (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enarrow build target cache outputs to avoid clobbering compile artifacts\u0026quot; (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2943\"\u003e#2943\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2949\"\u003e#2949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2954\"\u003e#2954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-uncalled-signals] properly handle statements with unary operators (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eprefer-self-closing-tags:\u003c/strong\u003e add selectedcontent nonAriaElements (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2939\"\u003e#2939\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAI-JamesHenry \u003ca href=\"https://github.com/AI-JamesHenry\"\u003e\u003ccode\u003e@​AI-JamesHenry\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebjarketrux\u003c/li\u003e\n\u003cli\u003eDaniil Demenev \u003ca href=\"https://github.com/BEGEMOT9I\"\u003e\u003ccode\u003e@​BEGEMOT9I\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eJames Henry \u003ca href=\"https://github.com/JamesHenry\"\u003e\u003ccode\u003e@​JamesHenry\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev21.3.0\u003c/h2\u003e\n\u003ch2\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for ESLint v10 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e add computed-must-return rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-uncalled-signals] detect Signal member access (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2848\"\u003e#2848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e add \u003ccode\u003eno-non-null-assertion\u003c/code\u003e rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.4 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-uncalled-signals] add check \u003ccode\u003eInputSignalWithTransform\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2879\"\u003e#2879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-uncalled-signals] detect \u003ccode\u003eSignal\u003c/code\u003e type correctly (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [prefer-template-literal] preserve nested non string binary \u003ccode\u003e+\u003c/code\u003e operation (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2902\"\u003e#2902\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDave \u003ca href=\"https://github.com/reduckted\"\u003e\u003ccode\u003e@​reduckted\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEvgeny Stepanovych \u003ca href=\"https://github.com/undsoft\"\u003e\u003ccode\u003e@​undsoft\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\u003c/li\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev21.2.0\u003c/h2\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/CHANGELOG.md\"\u003eangular-eslint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.3.1 (2026-03-17)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for angular-eslint to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd support for ESLint v10 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e add \u003ccode\u003eno-non-null-assertion\u003c/code\u003e rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e add computed-must-return rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEvgeny Stepanovych \u003ca href=\"https://github.com/undsoft\"\u003e\u003ccode\u003e@​undsoft\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\u003c/li\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e add prefer-class-binding rule to enforce class binding over ngClass (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2827\"\u003e#2827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [no-implicit-takeuntil-destroyed] add rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2803\"\u003e#2803\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGabriel J. \u003ca href=\"https://github.com/rznn7\"\u003e\u003ccode\u003e@​rznn7\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKaran Mistry \u003ca href=\"https://github.com/mistrykaran91\"\u003e\u003ccode\u003e@​mistrykaran91\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e add prefer-signal-model rule to encourage using model() for two-way bindings (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2818\"\u003e#2818\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJames Henry \u003ca href=\"https://github.com/JamesHenry\"\u003e\u003ccode\u003e@​JamesHenry\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKaran Mistry\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for angular-eslint to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/8f2afdce28d4cbdac792465b33aff35915af23b5\"\u003e\u003ccode\u003e8f2afdc\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/a959e4d2804bbeb3cbc7caaa9c2fb2be9da3348e\"\u003e\u003ccode\u003ea959e4d\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/3ef7fb157e866d76ae76d41b706b92efbd54d72d\"\u003e\u003ccode\u003e3ef7fb1\u003c/code\u003e\u003c/a\u003e feat: add support for ESLint v10 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/218a8afff65dd506b4cd5452df82fc86f572f020\"\u003e\u003ccode\u003e218a8af\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin-template): add \u003ccode\u003eno-non-null-assertion\u003c/code\u003e rule (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/d86425178e40e8b628c45d848dc122403c0859bb\"\u003e\u003ccode\u003ed864251\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): add computed-must-return rule (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint/issues/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6fa321dc27993f55e6d5bc6e421010bb7b5ef1d3\"\u003e\u003ccode\u003e6fa321d\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/78bd8e36019d2aff506bc4c338d541948a9b2944\"\u003e\u003ccode\u003e78bd8e3\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin-template): add prefer-class-binding rule to enforce class ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/97e7f8837480f3760762ac3d45762912d5dba10f\"\u003e\u003ccode\u003e97e7f88\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): [no-implicit-takeuntil-destroyed] add rule (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint/issues/2803\"\u003e#2803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/4fa7889c54600ba56d29928b8026ff30a16d600b\"\u003e\u003ccode\u003e4fa7889\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/2cd82eb698a9ff97468b078f2707e766db14d389\"\u003e\u003ccode\u003e2cd82eb\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): add prefer-signal-model rule to encourage using model() ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/angular-eslint\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `eslint` from 9.39.4 to 10.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eslint/eslint/releases\"\u003eeslint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev10.1.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ff4382be349035acdb170627a2dc92828e134562\"\u003e\u003ccode\u003eff4382b\u003c/code\u003e\u003c/a\u003e feat: apply fix for \u003ccode\u003eno-var\u003c/code\u003e in \u003ccode\u003eTSModuleBlock\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20638\"\u003e#20638\u003c/a\u003e) (Tanuj Kanti)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/0916995b51528872b15ba4fedb24172cf25fcb3f\"\u003e\u003ccode\u003e0916995\u003c/code\u003e\u003c/a\u003e feat: Implement api support for bulk-suppressions (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20565\"\u003e#20565\u003c/a\u003e) (Blake Sager)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/2b8824e6be4223980e929a20025602df20d05ea2\"\u003e\u003ccode\u003e2b8824e\u003c/code\u003e\u003c/a\u003e fix: Prevent \u003ccode\u003eno-var\u003c/code\u003e autofix when a variable is used before declaration (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20464\"\u003e#20464\u003c/a\u003e) (Amaresh  S M)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e58b4bff167e79afd067d1b0ee9360bec2d3393e\"\u003e\u003ccode\u003ee58b4bf\u003c/code\u003e\u003c/a\u003e fix: update eslint (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20597\"\u003e#20597\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/b7b57fe9942c572ff651230f1f96cefed787ca52\"\u003e\u003ccode\u003eb7b57fe\u003c/code\u003e\u003c/a\u003e docs: use correct JSDoc link in require-jsdoc.md (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20641\"\u003e#20641\u003c/a\u003e) (mkemna-clb)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/58e4cfc7dbf0fe40c73f09bf0ff94ad944d0ba0e\"\u003e\u003ccode\u003e58e4cfc\u003c/code\u003e\u003c/a\u003e docs: add deprecation notice partial (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20639\"\u003e#20639\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/7143dbf99df27c61edf1552da981794e99a0b2f2\"\u003e\u003ccode\u003e7143dbf\u003c/code\u003e\u003c/a\u003e docs: update v9 migration guide for \u003ccode\u003e@eslint/js\u003c/code\u003e usage (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20540\"\u003e#20540\u003c/a\u003e) (fnx)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/035fc4fbe506e3e4524882cf50db37a4e430adf4\"\u003e\u003ccode\u003e035fc4f\u003c/code\u003e\u003c/a\u003e docs: note that \u003ccode\u003eglobalReturn\u003c/code\u003e applies only with \u003ccode\u003esourceType: \u0026quot;script\u0026quot;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20630\"\u003e#20630\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e972c88ab7474a74191ee99ac2558b00d0427a8a\"\u003e\u003ccode\u003ee972c88\u003c/code\u003e\u003c/a\u003e docs: merge ESLint option descriptions into type definitions (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20608\"\u003e#20608\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/7f10d8440137f0cfd75f18f4746ba6a1c621b953\"\u003e\u003ccode\u003e7f10d84\u003c/code\u003e\u003c/a\u003e docs: Update README (GitHub Actions Bot)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/aeed0078ca2f73d4744cc522102178d45b5be64e\"\u003e\u003ccode\u003eaeed007\u003c/code\u003e\u003c/a\u003e docs: open playground link in new tab (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20602\"\u003e#20602\u003c/a\u003e) (Tanuj Kanti)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a0d1a3772679d3d74bb860fc65b5b58678acd452\"\u003e\u003ccode\u003ea0d1a37\u003c/code\u003e\u003c/a\u003e docs: Add AI Usage Policy (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20510\"\u003e#20510\u003c/a\u003e) (Nicholas C. Zakas)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChores\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a9f9cce82d80b540a0e3549d0e91c16df28740d8\"\u003e\u003ccode\u003ea9f9cce\u003c/code\u003e\u003c/a\u003e chore: update dependency eslint-plugin-unicorn to ^63.0.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20584\"\u003e#20584\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1f42bd7876ae4192cf7f7f4faf73b4ef3d2563cb\"\u003e\u003ccode\u003e1f42bd7\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003eprettier\u003c/code\u003e to 3.8.1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20651\"\u003e#20651\u003c/a\u003e) (루밀LuMir)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c0a6f4a2b4169edeca2a81bf7b47783e39ade366\"\u003e\u003ccode\u003ec0a6f4a\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/json\u003c/code\u003e to ^1.2.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20652\"\u003e#20652\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/cc43f795c42e5ec2f19bb43b1f6d534ef2e469f3\"\u003e\u003ccode\u003ecc43f79\u003c/code\u003e\u003c/a\u003e chore: update dependency c8 to v11 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20650\"\u003e#20650\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/2ce4635b036ff2665c7009afddf9c0fb2274dceb\"\u003e\u003ccode\u003e2ce4635\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/json\u003c/code\u003e to v1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20649\"\u003e#20649\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f0406eedcc3dc415babbbf6bbdb5db1eebfd487b\"\u003e\u003ccode\u003ef0406ee\u003c/code\u003e\u003c/a\u003e chore: update dependency markdownlint-cli2 to ^0.21.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20646\"\u003e#20646\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/dbb4c9582a00bac604d5c6ac671bb7111468a846\"\u003e\u003ccode\u003edbb4c95\u003c/code\u003e\u003c/a\u003e chore: remove trunk (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20478\"\u003e#20478\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c672a2a70579fddf1c6ce33dfa712d705726e1c9\"\u003e\u003ccode\u003ec672a2a\u003c/code\u003e\u003c/a\u003e test: fix CLI test for empty output file (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20640\"\u003e#20640\u003c/a\u003e) (kuldeep kumar)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c7ada2455680036bbfc42fcb1511ff28afe3c587\"\u003e\u003ccode\u003ec7ada24\u003c/code\u003e\u003c/a\u003e ci: bump pnpm/action-setup from 4.3.0 to 4.4.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20636\"\u003e#20636\u003c/a\u003e) (dependabot[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/07c4b8b4a9f49145e60a3448dd57853213ed4de3\"\u003e\u003ccode\u003e07c4b8b\u003c/code\u003e\u003c/a\u003e test: fix \u003ccode\u003eRuleTester\u003c/code\u003e test without test runners (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20631\"\u003e#20631\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/079bba7ff17d0a99fdffe32bf991d005ba797fae\"\u003e\u003ccode\u003e079bba7\u003c/code\u003e\u003c/a\u003e test: Add tests for \u003ccode\u003eisValidWithUnicodeFlag\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20601\"\u003e#20601\u003c/a\u003e) (Manish chaudhary)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/5885ae66216bcee9310bbf73786b7d7d5774aeaf\"\u003e\u003ccode\u003e5885ae6\u003c/code\u003e\u003c/a\u003e ci: unpin Node.js 25.x in CI (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20615\"\u003e#20615\u003c/a\u003e) (Copilot)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f65e5d3c0df65fdb317ad6d23f7ae113c5f4b6d7\"\u003e\u003ccode\u003ef65e5d3\u003c/code\u003e\u003c/a\u003e chore: update pnpm/action-setup digest to b906aff (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20610\"\u003e#20610\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev10.0.3\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e511b58d5ecd63a232b87743614867f4eaadbba4\"\u003e\u003ccode\u003ee511b58\u003c/code\u003e\u003c/a\u003e fix: update eslint (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20595\"\u003e#20595\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f4c9cf9b8dc5642de555a09295933464080d722a\"\u003e\u003ccode\u003ef4c9cf9\u003c/code\u003e\u003c/a\u003e fix: include variable name in \u003ccode\u003eno-useless-assignment\u003c/code\u003e message (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20581\"\u003e#20581\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ee9ff31cee13712d2be2a6b5c0a4a54449fe9fe1\"\u003e\u003ccode\u003eee9ff31\u003c/code\u003e\u003c/a\u003e fix: update dependency minimatch to ^10.2.4 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20562\"\u003e#20562\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/9fc31b03ef05abfc4f0f449b22947029d51a72f6\"\u003e\u003ccode\u003e9fc31b0\u003c/code\u003e\u003c/a\u003e docs: Update README (GitHub Actions Bot)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/4efaa367c62d5a45dd21e246e4a506e11dd51758\"\u003e\u003ccode\u003e4efaa36\u003c/code\u003e\u003c/a\u003e docs: add info box for \u003ccode\u003eeslint-plugin-eslint-comments\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20570\"\u003e#20570\u003c/a\u003e) (DesselBane)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/23b2759dd5cd70976ab2e8f4a1cf86ffe4b9f65d\"\u003e\u003ccode\u003e23b2759\u003c/code\u003e\u003c/a\u003e docs: add v10 migration guide link to Use docs index (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20577\"\u003e#20577\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/80259a9b0d9e29596a5ef0e1e5269031636cacdb\"\u003e\u003ccode\u003e80259a9\u003c/code\u003e\u003c/a\u003e docs: Remove deprecated eslintrc documentation files (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20472\"\u003e#20472\u003c/a\u003e) (Copilot)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/9b9b4baf7f0515d28290464ea754d7e7dc350395\"\u003e\u003ccode\u003e9b9b4ba\u003c/code\u003e\u003c/a\u003e docs: fix typo in no-await-in-loop documentation (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20575\"\u003e#20575\u003c/a\u003e) (Pixel998)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e7d72a77e5e1277690a505160137aebd5985909a\"\u003e\u003ccode\u003ee7d72a7\u003c/code\u003e\u003c/a\u003e docs: document TypeScript 5.3 minimum supported version (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20547\"\u003e#20547\u003c/a\u003e) (sethamus)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChores\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ef8fb924bfabc2e239b46b2d7b3c37319b03084e\"\u003e\u003ccode\u003eef8fb92\u003c/code\u003e\u003c/a\u003e chore: package.json update for eslint-config-eslint release (Jenkins)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/8351ec7aaa0f7d4753ff39bb9d6260f2ac9e1f1a\"\u003e\u003ccode\u003e8351ec7\u003c/code\u003e\u003c/a\u003e 10.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/3270bc12165d62646fd0edaab2c28809302663a1\"\u003e\u003ccode\u003e3270bc1\u003c/code\u003e\u003c/a\u003e Build: changelog update for 10.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/a9f9cce82d80b540a0e3549d0e91c16df28740d8\"\u003e\u003ccode\u003ea9f9cce\u003c/code\u003e\u003c/a\u003e chore: update dependency eslint-plugin-unicorn to ^63.0.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20584\"\u003e#20584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/1f42bd7876ae4192cf7f7f4faf73b4ef3d2563cb\"\u003e\u003ccode\u003e1f42bd7\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003eprettier\u003c/code\u003e to 3.8.1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20651\"\u003e#20651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/c0a6f4a2b4169edeca2a81bf7b47783e39ade366\"\u003e\u003ccode\u003ec0a6f4a\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/json\u003c/code\u003e to ^1.2.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20652\"\u003e#20652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/cc43f795c42e5ec2f19bb43b1f6d534ef2e469f3\"\u003e\u003ccode\u003ecc43f79\u003c/code\u003e\u003c/a\u003e chore: update dependency c8 to v11 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20650\"\u003e#20650\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/2ce4635b036ff2665c7009afddf9c0fb2274dceb\"\u003e\u003ccode\u003e2ce4635\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/json\u003c/code\u003e to v1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20649\"\u003e#20649\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/f0406eedcc3dc415babbbf6bbdb5db1eebfd487b\"\u003e\u003ccode\u003ef0406ee\u003c/code\u003e\u003c/a\u003e chore: update dependency markdownlint-cli2 to ^0.21.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20646\"\u003e#20646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/dbb4c9582a00bac604d5c6ac671bb7111468a846\"\u003e\u003ccode\u003edbb4c95\u003c/code\u003e\u003c/a\u003e chore: remove trunk (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20478\"\u003e#20478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/ff4382be349035acdb170627a2dc92828e134562\"\u003e\u003ccode\u003eff4382b\u003c/code\u003e\u003c/a\u003e feat: apply fix for \u003ccode\u003eno-var\u003c/code\u003e in \u003ccode\u003eTSModuleBlock\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20638\"\u003e#20638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eslint/eslint/compare/v9.39.4...v10.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jasmine-core` from 5.9.0 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jasmine/jasmine/releases\"\u003ejasmine-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.1.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.1.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-beta.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-beta.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-beta.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-beta.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.2\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.2.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev6.0.0-alpha.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/6.0.0-alpha.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.13.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.13.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.12.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.12.1.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.12.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.12.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.11.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.11.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ev5.10.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://github.com/jasmine/jasmine/blob/main/release_notes/5.10.0.md\"\u003erelease notes\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/3de4512681fa31332f332f70314795f7d7037a3f\"\u003e\u003ccode\u003e3de4512\u003c/code\u003e\u003c/a\u003e Bump version to 6.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/4bf333ed38b50ab26593226e0f5ca4f1280f3c89\"\u003e\u003ccode\u003e4bf333e\u003c/code\u003e\u003c/a\u003e rm unnecessary and deprecated eslint-env comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/4f5ef7c2d7053ff9c8a0c31060c54ab31e5e7c08\"\u003e\u003ccode\u003e4f5ef7c\u003c/code\u003e\u003c/a\u003e Drop support for Safari 16 and 17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/5de03beea14cb40467a22c48007dc1148371ecd7\"\u003e\u003ccode\u003e5de03be\u003c/code\u003e\u003c/a\u003e Fix test failure in Node 20 and 22 parallel tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/42baa422b3fb28ffc69048e4d36b32667f6257bf\"\u003e\u003ccode\u003e42baa42\u003c/code\u003e\u003c/a\u003e Formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/6af5d24b3b2ef3a242b20113d01891930e76d61d\"\u003e\u003ccode\u003e6af5d24\u003c/code\u003e\u003c/a\u003e Improve formatting of AggregateErrors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/b88ce2d49f54f1baa91658509cce1f941a0c62b2\"\u003e\u003ccode\u003eb88ce2d\u003c/code\u003e\u003c/a\u003e Improve AggregateError specs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/c216ae1d132bb4a0d010b85d3328bc1d3c72b45b\"\u003e\u003ccode\u003ec216ae1\u003c/code\u003e\u003c/a\u003e Merge branch 'puglyfe-aggregate-errors'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/319776d2413f42c3da13d6a605118cdcf775e541\"\u003e\u003ccode\u003e319776d\u003c/code\u003e\u003c/a\u003e Report the constituent errors of an AggregateError\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jasmine/jasmine/commit/1d0718dc2f48db5a9ffb6ff90f324703b805a58c\"\u003e\u003ccode\u003e1d0718d\u003c/code\u003e\u003c/a\u003e Fix MAX_PRETTY_PRINT_CHARS default jsdoc in source code too\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jasmine/jasmine/compare/v5.9.0...v6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `karma-jasmine-html-reporter` from 2.1.0 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/releases\"\u003ekarma-jasmine-html-reporter's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Jasmine 6\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\"\u003ehttps://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/commit/12405b839cef2cd3e16540a3ff7b2f51a1517e0a\"\u003e\u003ccode\u003e12405b8\u003c/code\u003e\u003c/a\u003e Minor fix to package.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/commit/7a82a4145d784b5124762b9e8da05be07953a41f\"\u003e\u003ccode\u003e7a82a41\u003c/code\u003e\u003c/a\u003e Add support for Jasmine 6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `knip` from 5.88.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/webpro-nl/knip/releases\"\u003eknip's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/zitadel/example-auth-angular/pull/52","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/zitadel%2Fexample-auth-angular/issues/52","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/52/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-03-28T01:12:04.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4156813827","node_id":"PR_kwDORfflTs7OMtOj","number":13,"state":"closed","title":"chore(deps-dev): bump @types/jasmine from 5.1.15 to 6.0.0","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-28T01:14:17.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-28T01:12:04.000Z","updated_at":"2026-03-28T01:14:24.000Z","time_to_close":133,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 5.1.15 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=5.1.15\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/embmeals/emills-v2/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/embmeals%2Femills-v2/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"}},{"old_version":"5.1.14","new_version":"6.0.0","update_type":"major","path":null,"pr_created_at":"2026-03-27T03:12:45.000Z","version_change":"5.1.14 → 6.0.0","issue":{"uuid":"4148872326","node_id":"PR_kwDOQ_8DsM7N7KpR","number":14,"state":"open","title":"chore(deps): bump the npm-dependencies group across 1 directory with 31 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-27T03:12:45.000Z","updated_at":"2026-03-27T03:16:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm-dependencies","update_count":31,"packages":[{"name":"@angular/animations","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.0.6","new_version":"21.2.4","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@iharbeck/ngx-virtual-scroller","old_version":"19.0.1","new_version":"20.0.0","repository_url":"https://github.com/iharbeck/ngx-virtual-scroller"},{"name":"@primeng/themes","old_version":"21.0.2","new_version":"21.0.4","repository_url":"https://github.com/primefaces/primeng"},{"name":"@stomp/stompjs","old_version":"7.2.1","new_version":"7.3.0","repository_url":"https://github.com/stomp-js/stompjs"},{"name":"ng2-charts","old_version":"8.0.0","new_version":"10.0.0","repository_url":"https://github.com/valor-software/ng2-charts"},{"name":"primeng","old_version":"21.0.2","new_version":"21.1.3","repository_url":"https://github.com/primefaces/primeng"},{"name":"ws","old_version":"8.19.0","new_version":"8.20.0","repository_url":"https://github.com/websockets/ws"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular/build","old_version":"21.0.5","new_version":"21.2.4","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.0.5","new_version":"21.2.4","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.0.8","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@types/jasmine","old_version":"5.1.14","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/node","old_version":"25.0.6","new_version":"25.5.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@vitest/coverage-v8","old_version":"4.0.16","new_version":"4.1.2","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"angular-eslint","old_version":"21.1.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"autoprefixer","old_version":"10.4.23","new_version":"10.4.27","repository_url":"https://github.com/postcss/autoprefixer"},{"name":"eslint","old_version":"9.39.2","new_version":"10.1.0","repository_url":"https://github.com/eslint/eslint"},{"name":"jasmine-core","old_version":"5.13.0","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"jsdom","old_version":"27.4.0","new_version":"29.0.1","repository_url":"https://github.com/jsdom/jsdom"},{"name":"tailwindcss","old_version":"3.4.19","new_version":"4.2.2","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"},{"name":"typescript-eslint","old_version":"8.52.0","new_version":"8.57.2","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the npm-dependencies group with 30 updates in the /booklore-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.0.8` | `21.2.6` |\n| [@angular/cdk](https://github.com/angular/components) | `21.0.6` | `21.2.4` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.0.8` | `21.2.6` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.0.8` | `21.2.6` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.0.8` | `21.2.6` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.0.8` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.0.8` | `21.2.6` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.0.8` | `21.2.6` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.0.8` | `21.2.6` |\n| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller) | `19.0.1` | `20.0.0` |\n| [@primeng/themes](https://github.com/primefaces/primeng/tree/HEAD/packages/themes) | `21.0.2` | `21.0.4` |\n| [@stomp/stompjs](https://github.com/stomp-js/stompjs) | `7.2.1` | `7.3.0` |\n| [ng2-charts](https://github.com/valor-software/ng2-charts) | `8.0.0` | `10.0.0` |\n| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.0.2` | `21.1.3` |\n| [ws](https://github.com/websockets/ws) | `8.19.0` | `8.20.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.0.5` | `21.2.4` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.0.5` | `21.2.4` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.0.8` | `21.2.6` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.14` | `6.0.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.6` | `25.5.0` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.16` | `4.1.2` |\n| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.1.0` | `21.3.1` |\n| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.23` | `10.4.27` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.1.0` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.13.0` | `6.1.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `29.0.1` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `3.4.19` | `4.2.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.52.0` | `8.57.2` |\n\n\nUpdates `@angular/animations` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003eb4ab6ba2e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e880a57d4b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003ead0156e056\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e73d6b01b47\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.4 (2026-03-18)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLeave animations are no longer limited to the element being removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChangeDetectorRef.checkNoChanges\u003c/code\u003e was removed. In tests use \u003ccode\u003efixture.detectChanges()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/412788fac9c82ddf94b3f5ad0b141098c8101b0b\"\u003e412788fac9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/75560ce43d7422a131ae86f2312c478754d035aa\"\u003e75560ce43d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406\"\u003ed99ab0e040\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estop generating unused field\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2bd708fb6bc3ada19c5dd21077a7f609996f6346\"\u003e2bd708fb6b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9769560da73efee4793dfdc1459c8b1ac10981de\"\u003e9769560da7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5\"\u003e7a0d6b8df2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etransform dropping exclamationToken from properties\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401\"\u003edf659b8d0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ere-introduce nested leave animations scoped to component boundaries\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f\"\u003edc3131c639\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eTestBed.getFixture -\u0026gt; TestBed.getLastFixture and update implementation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc0446552af76bfcac4642c975b293d4dcb93d46\"\u003edc0446552a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/523d69a7685a3437f1f6ef8fedfd26c52d2d3bb1\"\u003e523d69a768\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a\"\u003e69fb1614ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003echeckNoChanges\u003c/code\u003e from the public API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315\"\u003e3983080236\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport ngNoCva as an opt-out for ControlValueAccessors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 21.0.6 to 21.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e\u003cimg src=\"https://img.shields.io/badge/87aa6d977-fix-green\" alt=\"fix - 87aa6d977\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/issues/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003e\u003cimg src=\"https://img.shields.io/badge/cebf303417-fix-green\" alt=\"fix - cebf303417\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003echeckbox:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/2abe8e6b7330f5281b560b202ab70bdf593782cc\"\u003e\u003cimg src=\"https://img.shields.io/badge/2abe8e6b73-fix-green\" alt=\"fix - 2abe8e6b73\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e render backdrop for context menu if explicitly opted in (\u003ca href=\"https://redirect.github.com/angular/components/issues/32845\"\u003e#32845\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f7308dc4b5e539c2ccacf138a7997f9f5fdf03\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2f7308dc4-fix-green\" alt=\"fix - e2f7308dc4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eradio:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c1295c5818c820ab182727b4f85e5f55a05f6385\"\u003e\u003cimg src=\"https://img.shields.io/badge/c1295c5818-fix-green\" alt=\"fix - c1295c5818\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e itemSelected not emitted when menu is attached to a trigger (\u003ca href=\"https://redirect.github.com/angular/components/issues/32880\"\u003e#32880\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/17c19cc73b4e7e24ae5579c32ae5a784d92c2a12\"\u003e\u003cimg src=\"https://img.shields.io/badge/17c19cc73b-fix-green\" alt=\"fix - 17c19cc73b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eexpand type for restoreFocus (\u003ca href=\"https://redirect.github.com/angular/components/issues/32877\"\u003e#32877\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.0\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8c4526935ef7e960ed4245a4621d41065ba34e3b\"\u003e\u003cimg src=\"https://img.shields.io/badge/8c4526935e-fix-green\" alt=\"fix - 8c4526935e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e expose strong focus indicator structural styles (\u003ca href=\"https://redirect.github.com/angular/components/issues/32808\"\u003e#32808\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/7fe308114829c4ce454cc247e59e59387ee7fd17\"\u003e\u003cimg src=\"https://img.shields.io/badge/7fe3081148-fix-green\" alt=\"fix - 7fe3081148\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e drop dependency on NgClass (\u003ca href=\"https://redirect.github.com/angular/components/issues/32810\"\u003e#32810\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cd5209e9f59c8bd31de29d03fd743452d8ae3d03\"\u003e\u003cimg src=\"https://img.shields.io/badge/cd5209e9f5-fix-green\" alt=\"fix - cd5209e9f5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eportal:\u003c/strong\u003e allow bindings to be passed to component portal (\u003ca href=\"https://redirect.github.com/angular/components/issues/32814\"\u003e#32814\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e397ecbcfad4e85fde8d116faf5caa80dcddca45\"\u003e\u003cimg src=\"https://img.shields.io/badge/e397ecbcfa-fix-green\" alt=\"fix - e397ecbcfa\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etable:\u003c/strong\u003e remove string-based DI tokens (\u003ca href=\"https://redirect.github.com/angular/components/issues/32677\"\u003e#32677\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.4 \u0026quot;hassium-halfpipe\u0026quot; (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/87aa6d977166d09b0f321eed6300663bfe57b8aa\"\u003e87aa6d977\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/pull/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.2 \u0026quot;hassium-helicopter\u0026quot; (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a46b0a1d4200bf74b036c25ee477d22025f444c8\"\u003ea46b0a1d4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e add mixins for Material Design typography (\u003ca href=\"https://redirect.github.com/angular/components/pull/32959\"\u003e#32959\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/ff7d697ec5ed280d3e28029571bc86d7c0c2c3a8\"\u003eff7d697ec\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etooltip:\u003c/strong\u003e wrong type for shape token (\u003ca href=\"https://redirect.github.com/angular/components/pull/32968\"\u003e#32968\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.1 \u0026quot;22-0-0\u0026quot; (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/0767a3cb4fe9f6fd3496cea991592855cf885b3a\"\u003e0767a3cb4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/pull/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/46b67d15053ce31b4742b809f1777b32eb2f1863\"\u003e46b67d150\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/pull/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6ed6218c474bfe4578b17d2391d8677fe92671cc\"\u003e6ed6218c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e incorrect animation variable name (\u003ca href=\"https://redirect.github.com/angular/components/pull/32941\"\u003e#32941\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.3 \u0026quot;21-2-3\u0026quot; (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e688deda58\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/pull/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e917526511\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/pull/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.0 \u0026quot;plastic-bear\u0026quot; (2026-03-11)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f556281ba1d7ba4327ab6a3253bbb1828886e1cd\"\u003e\u003ccode\u003ef556281\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/df6718b9db92385f9781c40bcbcf45454282ec59\"\u003e\u003ccode\u003edf6718b\u003c/code\u003e\u003c/a\u003e refactor(youtube-player): avoid build errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/7db3d111ff6f21d8f7a5afb06add6e9763b1c77f\"\u003e\u003ccode\u003e7db3d11\u003c/code\u003e\u003c/a\u003e test(multiple): remove usage of deprecated API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ef1be1ea232bdf379c71a4ce97bf9b09ddd96702\"\u003e\u003ccode\u003eef1be1e\u003c/code\u003e\u003c/a\u003e docs(aria/grid): calendar example with arrow key scrolling (\u003ca href=\"https://redirect.github.com/angular/components/issues/32323\"\u003e#32323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/12163dc0d5ee82122b657fb477b34fb81520dfc3\"\u003e\u003ccode\u003e12163dc\u003c/code\u003e\u003c/a\u003e build: update dependency node to v22.22.2 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32973\"\u003e#32973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/fd215163d615c4113a4fa23e047ba2e02fa74f9c\"\u003e\u003ccode\u003efd21516\u003c/code\u003e\u003c/a\u003e docs(material/datepicker): fix typo in aria-accessible-name comment (\u003ca href=\"https://redirect.github.com/angular/components/issues/32703\"\u003e#32703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/82ab19160613a0b9ae1080d6f3776616bf7fbe13\"\u003e\u003ccode\u003e82ab191\u003c/code\u003e\u003c/a\u003e docs(cdk/overlay): rename template variable from trigger to origin in example...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c2b85560847d9b69291004663e0917dfd590928c\"\u003e\u003ccode\u003ec2b8556\u003c/code\u003e\u003c/a\u003e docs(material/button): document iconPositionEnd and matButtonIcon attributes ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5e83cb26a3f57e9995a52d3200f8386571ba0703\"\u003e\u003ccode\u003e5e83cb2\u003c/code\u003e\u003c/a\u003e docs: update remaining NgModule prose references to standalone pattern (\u003ca href=\"https://redirect.github.com/angular/components/issues/32825\"\u003e#32825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f86039779ff11dda144721c1fa8a846aa5f0e2ce\"\u003e\u003ccode\u003ef860397\u003c/code\u003e\u003c/a\u003e docs: use standalone import in getting-started guide (\u003ca href=\"https://redirect.github.com/angular/components/issues/32826\"\u003e#32826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.0.6...v21.2.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003eb4ab6ba2e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e880a57d4b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003ead0156e056\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e73d6b01b47\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.4 (2026-03-18)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLeave animations are no longer limited to the element being removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChangeDetectorRef.checkNoChanges\u003c/code\u003e was removed. In tests use \u003ccode\u003efixture.detectChanges()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/412788fac9c82ddf94b3f5ad0b141098c8101b0b\"\u003e412788fac9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/75560ce43d7422a131ae86f2312c478754d035aa\"\u003e75560ce43d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406\"\u003ed99ab0e040\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estop generating unused field\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2bd708fb6bc3ada19c5dd21077a7f609996f6346\"\u003e2bd708fb6b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9769560da73efee4793dfdc1459c8b1ac10981de\"\u003e9769560da7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5\"\u003e7a0d6b8df2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etransform dropping exclamationToken from properties\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401\"\u003edf659b8d0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ere-introduce nested leave animations scoped to component boundaries\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f\"\u003edc3131c639\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eTestBed.getFixture -\u0026gt; TestBed.getLastFixture and update implementation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc0446552af76bfcac4642c975b293d4dcb93d46\"\u003edc0446552a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/523d69a7685a3437f1f6ef8fedfd26c52d2d3bb1\"\u003e523d69a768\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a\"\u003e69fb1614ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003echeckNoChanges\u003c/code\u003e from the public API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315\"\u003e3983080236\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport ngNoCva as an opt-out for ControlValueAccessors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003ccode\u003eb4ab6ba\u003c/code\u003e\u003c/a\u003e fix(common): avoid redundant image fetch on destroy with auto sizes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003ccode\u003e277ade9\u003c/code\u003e\u003c/a\u003e fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/aeb9b819d2cda782de85338dc9a5457c11e51bfe\"\u003e\u003ccode\u003eaeb9b81\u003c/code\u003e\u003c/a\u003e refactor(http): Improves base64 encoding/decoding with feature detection (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ecf0bb466875d17e0823f2d793491c6f354d6c34\"\u003e\u003ccode\u003eecf0bb4\u003c/code\u003e\u003c/a\u003e test(http): refactors HTTP client tests to use TestBed and providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003ccode\u003ee2e9a9a\u003c/code\u003e\u003c/a\u003e fix(core): adds transfer cache to httpResource to fix hydration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70e4c7fbabb45277cf76ee138c0be275beec7919\"\u003e\u003ccode\u003e70e4c7f\u003c/code\u003e\u003c/a\u003e refactor(common): log a warning when a KeyValuePipe receives a signal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2eeeabb7606900ad4fe8e3370d73f6add985f35d\"\u003e\u003ccode\u003e2eeeabb\u003c/code\u003e\u003c/a\u003e fix(common): fix LCP image detection with duplicate URLs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003eb4ab6ba2e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e880a57d4b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003ead0156e056\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e73d6b01b47\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.4 (2026-03-18)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLeave animations are no longer limited to the element being removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChangeDetectorRef.checkNoChanges\u003c/code\u003e was removed. In tests use \u003ccode\u003efixture.detectChanges()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/412788fac9c82ddf94b3f5ad0b141098c8101b0b\"\u003e412788fac9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/75560ce43d7422a131ae86f2312c478754d035aa\"\u003e75560ce43d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406\"\u003ed99ab0e040\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estop generating unused field\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2bd708fb6bc3ada19c5dd21077a7f609996f6346\"\u003e2bd708fb6b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9769560da73efee4793dfdc1459c8b1ac10981de\"\u003e9769560da7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5\"\u003e7a0d6b8df2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etransform dropping exclamationToken from properties\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401\"\u003edf659b8d0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ere-introduce nested leave animations scoped to component boundaries\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f\"\u003edc3131c639\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eTestBed.getFixture -\u0026gt; TestBed.getLastFixture and update implementation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc0446552af76bfcac4642c975b293d4dcb93d46\"\u003edc0446552a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/523d69a7685a3437f1f6ef8fedfd26c52d2d3bb1\"\u003e523d69a768\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a\"\u003e69fb1614ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003echeckNoChanges\u003c/code\u003e from the public API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315\"\u003e3983080236\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport ngNoCva as an opt-out for ControlValueAccessors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003ccode\u003e880a57d\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent shimCssText from adding extra blank lines per CSS comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003ccode\u003eed2d324\u003c/code\u003e\u003c/a\u003e fix(compiler): disallow translations of iframe src\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003ccode\u003e1df1697\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent mutation of children array in RecursiveVisitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/95b3f37d4a7d9a38f616d56df746dfcda3c2139b\"\u003e\u003ccode\u003e95b3f37\u003c/code\u003e\u003c/a\u003e feat(compiler): Exhaustive checks for switch blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c5658adb1146b24ebf31fef534c4bbae1ced548\"\u003e\u003ccode\u003e9c5658a\u003c/code\u003e\u003c/a\u003e refactor(compiler): clean up pipeline compatibility distinction\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6e0d783e5b5a256c0aa2fb1d3e008677c0603382\"\u003e\u003ccode\u003e6e0d783\u003c/code\u003e\u003c/a\u003e refactor(compiler): Add info about unclosed element.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/06d94ac0caacce20d5afbdb1e940911bdc500d78\"\u003e\u003ccode\u003e06d94ac\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(compiler): Add info about unclosed element.\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/097208454bb0d5ebaad701a991125d2a33d1f79b\"\u003e\u003ccode\u003e0972084\u003c/code\u003e\u003c/a\u003e refactor(compiler): Add info about unclosed element.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/compiler\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/core` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cp\u003e| Commit | Description |\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.6 (2026-03-25)\u003c/h1\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003eb4ab6ba2e8\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e880a57d4b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003ead0156e056\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e73d6b01b47\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.4 (2026-03-18)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLeave animations are no longer limited to the element being removed.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChangeDetectorRef.checkNoChanges\u003c/code\u003e was removed. In tests use \u003ccode\u003efixture.detectChanges()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/412788fac9c82ddf94b3f5ad0b141098c8101b0b\"\u003e412788fac9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/75560ce43d7422a131ae86f2312c478754d035aa\"\u003e75560ce43d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406\"\u003ed99ab0e040\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estop generating unused field\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/2bd708fb6bc3ada19c5dd21077a7f609996f6346\"\u003e2bd708fb6b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/9769560da73efee4793dfdc1459c8b1ac10981de\"\u003e9769560da7\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5\"\u003e7a0d6b8df2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etransform dropping exclamationToken from properties\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401\"\u003edf659b8d0c\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003ere-introduce nested leave animations scoped to component boundaries\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f\"\u003edc3131c639\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eTestBed.getFixture -\u0026gt; TestBed.getLastFixture and update implementation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/dc0446552af76bfcac4642c975b293d4dcb93d46\"\u003edc0446552a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/523d69a7685a3437f1f6ef8fedfd26c52d2d3bb1\"\u003e523d69a768\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a\"\u003e69fb1614ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003echeckNoChanges\u003c/code\u003e from the public API.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eforms\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315\"\u003e3983080236\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003esupport ngNoCva as an opt-out for ControlValueAccessors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c1579163b7464edc69f7fa0548f53d978b007021\"\u003e\u003ccode\u003ec157916\u003c/code\u003e\u003c/a\u003e build: consolidate domino bundling in platform-server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9be5e2c2113db3fe5d799663b6539d34d1e18f47\"\u003e\u003ccode\u003e9be5e2c\u003c/code\u003e\u003c/a\u003e docs: fix typo in Input decorator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a21be36e15a6d9cf21722f9f6a31dad9380037e9\"\u003e\u003ccode\u003ea21be36\u003c/code\u003e\u003c/a\u003e refactor: prepare for required \u003ccode\u003echangeDetection\u003c/code\u003e prop on G3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/831746eff1e7442bfc96bfa739f54091b26a7997\"\u003e\u003ccode\u003e831746e\u003c/code\u003e\u003c/a\u003e docs: Add callout about the Component interface.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003ccode\u003ead0156e\u003c/code\u003e\u003c/a\u003e fix(core): fixes a regression with animate.leave and reordering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003ccode\u003e73d6b01\u003c/code\u003e\u003c/a\u003e fix(migrations): inject migration not work in multi-project workspace with op...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/3838554503dfe0585e4df93547741fbc34a150d1\"\u003e\u003ccode\u003e3838554\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies to v21.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/851ef77318541580d186d7f1c02061cc615450da\"\u003e\u003ccode\u003e851ef77\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): Ensure determineLongestAnimation is run synchronously...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003ccode\u003e076d41c\u003c/code\u003e\u003c/a\u003e fix(migrations): prevent trailing comma syntax errors after removing NgStyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a8f80c1f995dd7bab6ee1d42f033ebc3d101e9bd\"\u003e\u003ccode\u003ea8f80c1\u003c/code\u003e\u003c/a\u003e refactor(core): declare explicit reactive node prototypes types\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/forms` from 21.0.8 to 21.2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.6\u003c/h2\u003e\n\u003ch3\u003ecommon\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ab6ba2e84a18309b0bb5dd68311ff1776b1cb4\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ab6ba2e8-fix-green\" alt=\"fix - b4ab6ba2e8\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eavoid redundant image fetch on destroy with auto sizes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/880a57d4b34af5aa27cd5bee11fa218ade6444bb\"\u003e\u003cimg src=\"https://img.shields.io/badge/880a57d4b3-fix-green\" alt=\"fix - 880a57d4b3\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent shimCssText from adding extra blank lines per CSS comment\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ad0156e056e60ffebfeb804fda70dce88d9475a8\"\u003e\u003cimg src=\"https://img.shields.io/badge/ad0156e056-fix-green\" alt=\"fix - ad0156e056\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efixes a regression with animate.leave and reordering\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/73d6b01b47bb6762d182f1cd891f8ad4d7f688e1\"\u003e\u003cimg src=\"https://img.shields.io/badge/73d6b01b47-fix-green\" alt=\"fix - 73d6b01b47\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einject migration not work in multi-project workspace with option path\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th...\n\n_Description has been truncated_","html_url":"https://github.com/wqj666666/booklore-alist-zh/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wqj666666%2Fbooklore-alist-zh/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"}},{"old_version":"2.8.8","new_version":"6.0.0","update_type":"major","path":"/CalcGachaProbTool","pr_created_at":"2026-03-26T03:44:46.000Z","version_change":"2.8.8 → 6.0.0","issue":{"uuid":"4140266754","node_id":"PR_kwDOCEdUp87NkPFP","number":62,"state":"closed","title":"Bump @types/jasmine from 2.8.8 to 6.0.0 in /CalcGachaProbTool","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-03-26T03:55:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-26T03:44:46.000Z","updated_at":"2026-03-26T03:55:18.000Z","time_to_close":622,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"@types/jasmine","old_version":"2.8.8","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"}],"path":"/CalcGachaProbTool","ecosystem":"npm"},"body":"Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 2.8.8 to 6.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jasmine\u0026package-manager=npm_and_yarn\u0026previous-version=2.8.8\u0026new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/YSRKEN/CalcGachaProbTool/pull/62","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/YSRKEN%2FCalcGachaProbTool/issues/62","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/62/packages"}},{"old_version":"5.1.15","new_version":"6.0.0","update_type":"major","path":"/src/angular","pr_created_at":"2026-03-21T01:48:43.000Z","version_change":"5.1.15 → 6.0.0","issue":{"uuid":"4110955514","node_id":"PR_kwDOQ3_DZs7MS_Oz","number":156,"state":"closed","title":"chore(deps): bump the npm_and_yarn group in /src/angular with 29 updates","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-21T14:55:00.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-21T01:48:43.000Z","updated_at":"2026-03-21T14:55:09.000Z","time_to_close":47177,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"npm_and_yarn","update_count":29,"packages":[{"name":"@angular/animations","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"19.2.19","new_version":"21.2.3","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"immutable","old_version":"4.3.7","new_version":"5.1.5","repository_url":"https://github.com/immutable-js/immutable-js"},{"name":"jquery","old_version":"3.7.1","new_version":"4.0.0","repository_url":"https://github.com/jquery/jquery"},{"name":"zone.js","old_version":"0.15.1","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular-devkit/build-angular","old_version":"19.2.19","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"19.2.19","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"19.2.18","new_version":"21.2.5","repository_url":"https://github.com/angular/angular"},{"name":"@playwright/test","old_version":"1.58.0","new_version":"1.58.2","repository_url":"https://github.com/microsoft/playwright"},{"name":"@types/jasmine","old_version":"5.1.15","new_version":"6.0.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@types/node","old_version":"22.19.7","new_version":"25.5.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"@eslint/js","old_version":"9.39.2","new_version":"10.0.1","repository_url":"https://github.com/eslint/eslint"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.54.0","new_version":"8.57.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@typescript-eslint/parser","old_version":"8.54.0","new_version":"8.57.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"eslint","old_version":"9.39.2","new_version":"10.1.0","repository_url":"https://github.com/eslint/eslint"},{"name":"globals","old_version":"16.5.0","new_version":"17.4.0","repository_url":"https://github.com/sindresorhus/globals"},{"name":"typescript-eslint","old_version":"8.54.0","new_version":"8.57.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"jasmine-core","old_version":"5.1.2","new_version":"6.1.0","repository_url":"https://github.com/jasmine/jasmine"},{"name":"sass","old_version":"1.97.3","new_version":"1.98.0","repository_url":"https://github.com/sass/dart-sass"},{"name":"playwright","old_version":"1.58.0","new_version":"1.58.2","repository_url":"https://github.com/microsoft/playwright"},{"name":"typescript","old_version":"5.7.3","new_version":"5.9.3","repository_url":"https://github.com/microsoft/TypeScript"}],"path":"/src/angular","ecosystem":"npm"},"body":"Bumps the npm_and_yarn group in /src/angular with 29 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `19.2.18` | `21.2.5` |\n| [@angular/cdk](https://github.com/angular/components) | `19.2.19` | `21.2.3` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `19.2.18` | `21.2.5` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `19.2.18` | `21.2.5` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `19.2.18` | `21.2.5` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `19.2.18` | `21.2.5` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `19.2.18` | `21.2.5` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `19.2.18` | `21.2.5` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `19.2.18` | `21.2.5` |\n| [immutable](https://github.com/immutable-js/immutable-js) | `4.3.7` | `5.1.5` |\n| [jquery](https://github.com/jquery/jquery) | `3.7.1` | `4.0.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.15.1` | `0.16.1` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `19.2.19` | `21.2.3` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `19.2.19` | `21.2.3` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `19.2.18` | `21.2.5` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `19.2.18` | `21.2.5` |\n| [@playwright/test](https://github.com/microsoft/playwright) | `1.58.0` | `1.58.2` |\n| [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) | `5.1.15` | `6.0.0` |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `22.19.7` | `25.5.0` |\n| [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.2` | `10.0.1` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.54.0` | `8.57.1` |\n| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.54.0` | `8.57.1` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.1.0` |\n| [globals](https://github.com/sindresorhus/globals) | `16.5.0` | `17.4.0` |\n| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.54.0` | `8.57.1` |\n| [jasmine-core](https://github.com/jasmine/jasmine) | `5.1.2` | `6.1.0` |\n| [sass](https://github.com/sass/dart-sass) | `1.97.3` | `1.98.0` |\n| [playwright](https://github.com/microsoft/playwright) | `1.58.0` | `1.58.2` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.7.3` | `5.9.3` |\n\nUpdates `@angular/animations` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003cimg src=\"https://img.shields.io/badge/abbd8797bb-fix-green\" alt=\"fix - abbd8797bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003cimg src=\"https://img.shields.io/badge/d1dcd16c5b-fix-green\" alt=\"fix - d1dcd16c5b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.3\u003c/h2\u003e\n\u003cp\u003eThis release contains internal refactorings only.\u003c/p\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e\u003cimg src=\"https://img.shields.io/badge/62a97f7e4b-fix-green\" alt=\"fix - 62a97f7e4b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003cimg src=\"https://img.shields.io/badge/21b1c3b2ee-fix-green\" alt=\"fix - 21b1c3b2ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einclude signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003cimg src=\"https://img.shields.io/badge/224e60ecb1-fix-green\" alt=\"fix - 224e60ecb1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(extension): bundle TypeScript 5.9 internally (\u003ca href=\"https://github.com/angular/angular/commit/da57d1af732292823b1ea187b6e9cd9f6b4eca39\"\u003eda57d1af73\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/animations\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e334ae10168\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e23ea431c4e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e26c43d14ba\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e67e0ba7e03\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e1890c3008b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003ebf948be4c2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e076d41c3f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003ee19150d2b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.20 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5be912eb55fe88e8621e2ce82470d51b7d950ceb\"\u003e5be912eb55\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b89b0a83a4d21bbb6f8534bbf56aece12af24595\"\u003eb89b0a83a4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/621c7071adffbe5dd45a5c954b6b6138e0870844\"\u003e621c7071ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.18 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/02fbf08890ec6ac2efb6c2ec4f17e56497cb81d2\"\u003e02fbf08890\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/7907e982ee90778e596d3e849f0a31c6c26db235\"\u003e\u003ccode\u003e7907e98\u003c/code\u003e\u003c/a\u003e test: remove duplicate tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abb179466d8cfb512a8b80b1b8a1831ebd910145\"\u003e\u003ccode\u003eabb1794\u003c/code\u003e\u003c/a\u003e refactor(core): mark VERSION exports as pure for better tree-shaking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/26fed34e0e340166b70702d6177ad639bbfa94aa\"\u003e\u003ccode\u003e26fed34\u003c/code\u003e\u003c/a\u003e build: format md files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b9e2ccdda8b428de8259934879e4431bae16a8ce\"\u003e\u003ccode\u003eb9e2ccd\u003c/code\u003e\u003c/a\u003e refactor(common): remove unused import (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64699\"\u003e#64699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70332b04532311276dd025ba00e8fcb6c1350880\"\u003e\u003ccode\u003e70332b0\u003c/code\u003e\u003c/a\u003e fix(core): pass element removal property through in all locations (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64565\"\u003e#64565\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2b257b36590677d436d45e98cefe7ca886c7bd57\"\u003e\u003ccode\u003e2b257b3\u003c/code\u003e\u003c/a\u003e fix(animations): account for \u003ccode\u003eElement.animate\u003c/code\u003e exceptions (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/64506\"\u003e#64506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/dde5badb7133826187314e07fcdc578297aabbc9\"\u003e\u003ccode\u003edde5bad\u003c/code\u003e\u003c/a\u003e fix(core): prevent animations renderer from impacting \u003ccode\u003eanimate.leave\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63921\"\u003e#63921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c3576506b3c13389e18fa4c0c29bdf536f604142\"\u003e\u003ccode\u003ec357650\u003c/code\u003e\u003c/a\u003e refactor(core): Update tests for zoneless by default (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63668\"\u003e#63668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/021ead5399ab1136da160c7348ec8555ef5ee8fd\"\u003e\u003ccode\u003e021ead5\u003c/code\u003e\u003c/a\u003e refactor(animations): remove dependency on \u003ccode\u003e@angular/common\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/63248\"\u003e#63248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.5/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/cdk` from 19.2.19 to 21.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/releases\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003cimg src=\"https://img.shields.io/badge/917526511-fix-green\" alt=\"fix - 917526511\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003cimg src=\"https://img.shields.io/badge/688deda58-fix-green\" alt=\"fix - 688deda58\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.2\u003c/h2\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003cimg src=\"https://img.shields.io/badge/345c543dcb-fix-green\" alt=\"fix - 345c543dcb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.1\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003e\u003cimg src=\"https://img.shields.io/badge/cebf303417-fix-green\" alt=\"fix - cebf303417\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003echeckbox:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/2abe8e6b7330f5281b560b202ab70bdf593782cc\"\u003e\u003cimg src=\"https://img.shields.io/badge/2abe8e6b73-fix-green\" alt=\"fix - 2abe8e6b73\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e render backdrop for context menu if explicitly opted in (\u003ca href=\"https://redirect.github.com/angular/components/issues/32845\"\u003e#32845\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e2f7308dc4b5e539c2ccacf138a7997f9f5fdf03\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2f7308dc4-fix-green\" alt=\"fix - e2f7308dc4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eradio:\u003c/strong\u003e hide decorative elements from assistive technology\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c1295c5818c820ab182727b4f85e5f55a05f6385\"\u003e\u003cimg src=\"https://img.shields.io/badge/c1295c5818-fix-green\" alt=\"fix - c1295c5818\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e itemSelected not emitted when menu is attached to a trigger (\u003ca href=\"https://redirect.github.com/angular/components/issues/32880\"\u003e#32880\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/17c19cc73b4e7e24ae5579c32ae5a784d92c2a12\"\u003e\u003cimg src=\"https://img.shields.io/badge/17c19cc73b-fix-green\" alt=\"fix - 17c19cc73b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eexpand type for restoreFocus (\u003ca href=\"https://redirect.github.com/angular/components/issues/32877\"\u003e#32877\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.0\u003c/h2\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/8c4526935ef7e960ed4245a4621d41065ba34e3b\"\u003e\u003cimg src=\"https://img.shields.io/badge/8c4526935e-fix-green\" alt=\"fix - 8c4526935e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecore:\u003c/strong\u003e expose strong focus indicator structural styles (\u003ca href=\"https://redirect.github.com/angular/components/issues/32808\"\u003e#32808\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/7fe308114829c4ce454cc247e59e59387ee7fd17\"\u003e\u003cimg src=\"https://img.shields.io/badge/7fe3081148-fix-green\" alt=\"fix - 7fe3081148\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e drop dependency on NgClass (\u003ca href=\"https://redirect.github.com/angular/components/issues/32810\"\u003e#32810\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/cd5209e9f59c8bd31de29d03fd743452d8ae3d03\"\u003e\u003cimg src=\"https://img.shields.io/badge/cd5209e9f5-fix-green\" alt=\"fix - cd5209e9f5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eportal:\u003c/strong\u003e allow bindings to be passed to component portal (\u003ca href=\"https://redirect.github.com/angular/components/issues/32814\"\u003e#32814\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/e397ecbcfad4e85fde8d116faf5caa80dcddca45\"\u003e\u003cimg src=\"https://img.shields.io/badge/e397ecbcfa-fix-green\" alt=\"fix - e397ecbcfa\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etable:\u003c/strong\u003e remove string-based DI tokens (\u003ca href=\"https://redirect.github.com/angular/components/issues/32677\"\u003e#32677\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/31ff7f26b5dd08c1d48dc5ebb8f1a9ba57a2dc9c\"\u003e\u003cimg src=\"https://img.shields.io/badge/31ff7f26b5-fix-green\" alt=\"fix - 31ff7f26b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e align output naming with styleguide\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/d030725f462d93bbca9918f153a48b5631ef0476\"\u003e\u003cimg src=\"https://img.shields.io/badge/d030725f46-fix-green\" alt=\"fix - d030725f46\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e align output naming with styleguide\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.0-rc.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/cdk\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.3 \u0026quot;21-2-3\u0026quot; (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecdk\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e688deda58\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edrag-drop:\u003c/strong\u003e item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/pull/32944\"\u003e#32944\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e917526511\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/pull/32925\"\u003e#32925\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.0 \u0026quot;plastic-bear\u0026quot; (2026-03-11)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b4a89d5996864e591cfac762db420ec591d931e2\"\u003eb4a89d5996\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebutton:\u003c/strong\u003e Add support for showing a progress indicator inside the button (\u003ca href=\"https://redirect.github.com/angular/components/pull/32698\"\u003e#32698\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/85c16fe4bb68d89d1f304350ecf965aeceea4662\"\u003e85c16fe4bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add support for separate tab animation durations (\u003ca href=\"https://redirect.github.com/angular/components/pull/32869\"\u003e#32869\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/936f1148b3d6951bcfa1ce5e05538e8b746b677c\"\u003e936f1148b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse eager change detection\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.2.2 \u0026quot;plastic-goose\u0026quot; (2026-03-11)\u003c/h1\u003e\n\u003ch3\u003earia\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e345c543dcb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003egrid:\u003c/strong\u003e unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/pull/32841\"\u003e#32841\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e21.3.0-next.0 \u0026quot;glass heels\u0026quot; (2026-03-04)\u003c/h1\u003e\n\u003ch3\u003ematerial\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/b4a89d5996864e591cfac762db420ec591d931e2\"\u003eb4a89d5996\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ebutton:\u003c/strong\u003e Add support for showing a progress indicator inside the button (\u003ca href=\"https://redirect.github.com/angular/components/pull/32698\"\u003e#32698\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/85c16fe4bb68d89d1f304350ecf965aeceea4662\"\u003e85c16fe4bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etabs:\u003c/strong\u003e add support for separate tab animation durations (\u003ca href=\"https://redirect.github.com/angular/components/pull/32869\"\u003e#32869\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emultiple\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/936f1148b3d6951bcfa1ce5e05538e8b746b677c\"\u003e936f1148b3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003euse eager change detection\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e31ed9e2605c2c1f94c227bb292d61cf6a3b0f23\"\u003e\u003ccode\u003ee31ed9e\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.3 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/688deda580c9141e2a7e36164dbba860d060e5df\"\u003e\u003ccode\u003e688deda\u003c/code\u003e\u003c/a\u003e fix(cdk/drag-drop): item returned to wrong index in initial container (\u003ca href=\"https://redirect.github.com/angular/components/issues/32944\"\u003e#32944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/21bca7dcad3565c4f272d33893846a2a653c8f14\"\u003e\u003ccode\u003e21bca7d\u003c/code\u003e\u003c/a\u003e build: update dependency bazel to v8.6.0 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32939\"\u003e#32939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/b6c5df69bf0bf38b23b1237447bd4602670edec7\"\u003e\u003ccode\u003eb6c5df6\u003c/code\u003e\u003c/a\u003e refactor(aria/accordion): simplify code by using template references instead ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/484a61e0d1a6c4bd40d040259e170dd7f69c02b7\"\u003e\u003ccode\u003e484a61e\u003c/code\u003e\u003c/a\u003e refactor(material/input): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32938\"\u003e#32938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/917526511e1d52bb2d9fa665e10f087e62aa2229\"\u003e\u003ccode\u003e9175265\u003c/code\u003e\u003c/a\u003e fix(material/datepicker): add harness for datepicker actions (\u003ca href=\"https://redirect.github.com/angular/components/issues/32925\"\u003e#32925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c8d1ed6318a8608d5b475b0f19f6310f0ce75148\"\u003e\u003ccode\u003ec8d1ed6\u003c/code\u003e\u003c/a\u003e refactor(material/dialog): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32914\"\u003e#32914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/6049dbb2e4823c8e0edee42323504a4fddd2f042\"\u003e\u003ccode\u003e6049dbb\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f971cbf0ab8ac51e0c86d6a964768687f179c558\"\u003e\u003ccode\u003ef971cbf\u003c/code\u003e\u003c/a\u003e build: update repository locations for bazel rules (\u003ca href=\"https://redirect.github.com/angular/components/issues/32911\"\u003e#32911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/439cd8848b7d31ceadbd2d2190f0dccab8402dd4\"\u003e\u003ccode\u003e439cd88\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular/components/issues/32910\"\u003e#32910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/19.2.19...v21.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003cimg src=\"https://img.shields.io/badge/abbd8797bb-fix-green\" alt=\"fix - abbd8797bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003cimg src=\"https://img.shields.io/badge/d1dcd16c5b-fix-green\" alt=\"fix - d1dcd16c5b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.3\u003c/h2\u003e\n\u003cp\u003eThis release contains internal refactorings only.\u003c/p\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e\u003cimg src=\"https://img.shields.io/badge/62a97f7e4b-fix-green\" alt=\"fix - 62a97f7e4b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003cimg src=\"https://img.shields.io/badge/21b1c3b2ee-fix-green\" alt=\"fix - 21b1c3b2ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einclude signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003cimg src=\"https://img.shields.io/badge/224e60ecb1-fix-green\" alt=\"fix - 224e60ecb1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(extension): bundle TypeScript 5.9 internally (\u003ca href=\"https://github.com/angular/angular/commit/da57d1af732292823b1ea187b6e9cd9f6b4eca39\"\u003eda57d1af73\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/common\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e334ae10168\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e23ea431c4e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e26c43d14ba\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e67e0ba7e03\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e1890c3008b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003ebf948be4c2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e076d41c3f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003ee19150d2b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.20 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5be912eb55fe88e8621e2ce82470d51b7d950ceb\"\u003e5be912eb55\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b89b0a83a4d21bbb6f8534bbf56aece12af24595\"\u003eb89b0a83a4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/621c7071adffbe5dd45a5c954b6b6138e0870844\"\u003e621c7071ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.18 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/02fbf08890ec6ac2efb6c2ec4f17e56497cb81d2\"\u003e02fbf08890\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/adda6c5c106815c727c1b820634614a045b42e9a\"\u003e\u003ccode\u003eadda6c5\u003c/code\u003e\u003c/a\u003e build: update \u003ccode\u003easpect_rules_js\u003c/code\u003e to \u003ccode\u003e3.0.2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/93c6dc6395d681dacd1dbbc46b95773038b6c32f\"\u003e\u003ccode\u003e93c6dc6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(http): Improves base64 encoding/decoding with feature detect...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/76431ed3e3bd8bf90ac2fb481152a33587187037\"\u003e\u003ccode\u003e76431ed\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003ccode\u003e277ade9\u003c/code\u003e\u003c/a\u003e fix(http): correctly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/aeb9b819d2cda782de85338dc9a5457c11e51bfe\"\u003e\u003ccode\u003eaeb9b81\u003c/code\u003e\u003c/a\u003e refactor(http): Improves base64 encoding/decoding with feature detection (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/common/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ecf0bb466875d17e0823f2d793491c6f354d6c34\"\u003e\u003ccode\u003eecf0bb4\u003c/code\u003e\u003c/a\u003e test(http): refactors HTTP client tests to use TestBed and providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003ccode\u003ee2e9a9a\u003c/code\u003e\u003c/a\u003e fix(core): adds transfer cache to httpResource to fix hydration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/70e4c7fbabb45277cf76ee138c0be275beec7919\"\u003e\u003ccode\u003e70e4c7f\u003c/code\u003e\u003c/a\u003e refactor(common): log a warning when a KeyValuePipe receives a signal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2eeeabb7606900ad4fe8e3370d73f6add985f35d\"\u003e\u003ccode\u003e2eeeabb\u003c/code\u003e\u003c/a\u003e fix(common): fix LCP image detection with duplicate URLs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/3c4deaa52bb42130f90126f55786331aa8b4f7dc\"\u003e\u003ccode\u003e3c4deaa\u003c/code\u003e\u003c/a\u003e refactor(common): log a warning when a JsonPipe receives a signal\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.5/packages/common\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/compiler` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003cimg src=\"https://img.shields.io/badge/abbd8797bb-fix-green\" alt=\"fix - abbd8797bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003cimg src=\"https://img.shields.io/badge/d1dcd16c5b-fix-green\" alt=\"fix - d1dcd16c5b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.3\u003c/h2\u003e\n\u003cp\u003eThis release contains internal refactorings only.\u003c/p\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e\u003cimg src=\"https://img.shields.io/badge/62a97f7e4b-fix-green\" alt=\"fix - 62a97f7e4b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003cimg src=\"https://img.shields.io/badge/21b1c3b2ee-fix-green\" alt=\"fix - 21b1c3b2ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einclude signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003cimg src=\"https://img.shields.io/badge/224e60ecb1-fix-green\" alt=\"fix - 224e60ecb1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(extension): bundle TypeScript 5.9 internally (\u003ca href=\"https://github.com/angular/angular/commit/da57d1af732292823b1ea187b6e9cd9f6b4eca39\"\u003eda57d1af73\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/compiler\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e334ae10168\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e23ea431c4e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e26c43d14ba\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e67e0ba7e03\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e1890c3008b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003ebf948be4c2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e076d41c3f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003ee19150d2b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.20 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5be912eb55fe88e8621e2ce82470d51b7d950ceb\"\u003e5be912eb55\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b89b0a83a4d21bbb6f8534bbf56aece12af24595\"\u003eb89b0a83a4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/621c7071adffbe5dd45a5c954b6b6138e0870844\"\u003e621c7071ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.18 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/02fbf08890ec6ac2efb6c2ec4f17e56497cb81d2\"\u003e02fbf08890\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003ccode\u003e23ea431\u003c/code\u003e\u003c/a\u003e fix(compiler): parse named HTML entities containing digits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003ccode\u003eed2d324\u003c/code\u003e\u003c/a\u003e fix(compiler): disallow translations of iframe src\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003ccode\u003e1df1697\u003c/code\u003e\u003c/a\u003e fix(compiler): prevent mutation of children array in RecursiveVisitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/95b3f37d4a7d9a38f616d56df746dfcda3c2139b\"\u003e\u003ccode\u003e95b3f37\u003c/code\u003e\u003c/a\u003e feat(compiler): Exhaustive checks for switch blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9c5658adb1146b24ebf31fef534c4bbae1ced548\"\u003e\u003ccode\u003e9c5658a\u003c/code\u003e\u003c/a\u003e refactor(compiler): clean up pipeline compatibility distinction\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6e0d783e5b5a256c0aa2fb1d3e008677c0603382\"\u003e\u003ccode\u003e6e0d783\u003c/code\u003e\u003c/a\u003e refactor(compiler): Add info about unclosed element.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/06d94ac0caacce20d5afbdb1e940911bdc500d78\"\u003e\u003ccode\u003e06d94ac\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(compiler): Add info about unclosed element.\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/097208454bb0d5ebaad701a991125d2a33d1f79b\"\u003e\u003ccode\u003e0972084\u003c/code\u003e\u003c/a\u003e refactor(compiler): Add info about unclosed element.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b386f95bd05c6e9efdc00050b1e9ac28421e5f44\"\u003e\u003ccode\u003eb386f95\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(compiler): Add info about unclosed element.\u0026quot;\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.5/packages/compiler\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/core` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003e\u003cimg src=\"https://img.shields.io/badge/e19150d2b5-fix-green\" alt=\"fix - e19150d2b5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.4\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003e\u003cimg src=\"https://img.shields.io/badge/ed2d324f9c-fix-green\" alt=\"fix - ed2d324f9c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003cimg src=\"https://img.shields.io/badge/abbd8797bb-fix-green\" alt=\"fix - abbd8797bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003cimg src=\"https://img.shields.io/badge/d1dcd16c5b-fix-green\" alt=\"fix - d1dcd16c5b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.3\u003c/h2\u003e\n\u003cp\u003eThis release contains internal refactorings only.\u003c/p\u003e\n\u003ch2\u003e21.2.3\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e\u003cimg src=\"https://img.shields.io/badge/62a97f7e4b-fix-green\" alt=\"fix - 62a97f7e4b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003cimg src=\"https://img.shields.io/badge/21b1c3b2ee-fix-green\" alt=\"fix - 21b1c3b2ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003einclude signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003cimg src=\"https://img.shields.io/badge/224e60ecb1-fix-green\" alt=\"fix - 224e60ecb1\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(extension): bundle TypeScript 5.9 internally (\u003ca href=\"https://github.com/angular/angular/commit/da57d1af732292823b1ea187b6e9cd9f6b4eca39\"\u003eda57d1af73\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/core\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.5 (2026-03-18)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e334ae10168\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e23ea431c4e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e26c43d14ba\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e67e0ba7e03\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e1890c3008b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003ebf948be4c2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e076d41c3f6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e19150d2b596e87c69bee61f478c3e9c7cbc8f67\"\u003ee19150d2b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve redirect policy on reconstructed asset requests\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e19.2.20 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5be912eb55fe88e8621e2ce82470d51b7d950ceb\"\u003e5be912eb55\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b89b0a83a4d21bbb6f8534bbf56aece12af24595\"\u003eb89b0a83a4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated attribute bindings with interpolations\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/621c7071adffbe5dd45a5c954b6b6138e0870844\"\u003e621c7071ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esanitize translated form attributes\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e20.3.18 (2026-03-12)\u003c/h1\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/02fbf08890ec6ac2efb6c2ec4f17e56497cb81d2\"\u003e02fbf08890\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow translations of iframe src\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eType\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/851ef77318541580d186d7f1c02061cc615450da\"\u003e\u003ccode\u003e851ef77\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;refactor(core): Ensure determineLongestAnimation is run synchronously...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003ccode\u003e076d41c\u003c/code\u003e\u003c/a\u003e fix(migrations): prevent trailing comma syntax errors after removing NgStyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a8f80c1f995dd7bab6ee1d42f033ebc3d101e9bd\"\u003e\u003ccode\u003ea8f80c1\u003c/code\u003e\u003c/a\u003e refactor(core): declare explicit reactive node prototypes types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003ccode\u003ebf948be\u003c/code\u003e\u003c/a\u003e fix(core): run linked signal equality check without reactive consumer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003ccode\u003e1890c30\u003c/code\u003e\u003c/a\u003e fix(core): clean up dehydrated views during HMR component replacement\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f39896da995f346a26e3508215beb03be26c606e\"\u003e\u003ccode\u003ef39896d\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e5ed276f27c75da192099ed2814a96f52084a589\"\u003e\u003ccode\u003ee5ed276\u003c/code\u003e\u003c/a\u003e refactor(core): Ensure determineLongestAnimation is run synchronously after s...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003ccode\u003e334ae10\u003c/code\u003e\u003c/a\u003e fix(compiler): ensure generated code compiles\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6f41efc6894147c5f7fac25fa1ebb4bba968d4b7\"\u003e\u003ccode\u003e6f41efc\u003c/code\u003e\u003c/a\u003e refactor(core): Update determineLongestAnimation to account for playback rate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/5d755be01cfbc58a5b4b721fac4fccde76645fb7\"\u003e\u003ccode\u003e5d755be\u003c/code\u003e\u003c/a\u003e refactor: ensure modules with 'declare global' are correctly handled by Rollup\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.5/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/forms` from 19.2.18 to 21.2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/angular/angular/releases\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.5\u003c/h2\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/334ae10168fdad15cd1390180e2994b4eb65349b\"\u003e\u003cimg src=\"https://img.shields.io/badge/334ae10168-fix-green\" alt=\"fix - 334ae10168\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eensure generated code compiles\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/23ea431c4ec45cbb4a7db9839969e7cb23b07f58\"\u003e\u003cimg src=\"https://img.shields.io/badge/23ea431c4e-fix-green\" alt=\"fix - 23ea431c4e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eparse named HTML entities containing digits\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/26c43d14baad1a6b3629a77825e702a97a4f8482\"\u003e\u003cimg src=\"https://img.shields.io/badge/26c43d14ba-fix-green\" alt=\"fix - 26c43d14ba\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eescape template literal in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/67e0ba7e03bb940639f0eafb3af45015e9727eac\"\u003e\u003cimg src=\"https://img.shields.io/badge/67e0ba7e03-fix-green\" alt=\"fix - 67e0ba7e03\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003egeneric types not filled out correctly in type check block\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/1890c3008bbb41b7143b7ede09bed1f7704744fb\"\u003e\u003cimg src=\"https://img.shields.io/badge/1890c3008b-fix-green\" alt=\"fix - 1890c3008b\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eclean up dehydrated views during HMR component replacement\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/bf948be4c2c88c604e428cba35e3b9e532bfe5b0\"\u003e\u003cimg src=\"https://img.shields.io/badge/bf948be4c2-fix-green\" alt=\"fix - bf948be4c2\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erun linked signal equality check without reactive consumer\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003emigrations\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/076d41c3f6496eb6c6f84b54e2d2ca85c1b35e64\"\u003e\u003cimg src=\"https://img.shields.io/badge/076d41c3f6-fix-green\" alt=\"fix - 076d41c3f6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent trailing comma syntax errors after removing NgStyle\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003eservice-worker\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://g...\n\n_Description has been truncated_","html_url":"https://github.com/thejuran/seedsync/pull/156","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thejuran%2Fseedsync/issues/156","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/156/packages"}}]}