{"id":3822,"name":"@angular-eslint/schematics","ecosystem":"npm","repository_url":"https://github.com/angular-eslint/angular-eslint","issues_count":697,"created_at":"2025-06-06T16:30:15.496Z","updated_at":"2025-06-06T16:30:15.496Z","purl":"pkg:npm/@angular-eslint/schematics","metadata":{"id":810463,"name":"@angular-eslint/schematics","ecosystem":"npm","description":"Angular Schematics for angular-eslint","homepage":"https://github.com/angular-eslint/angular-eslint","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/angular-eslint/angular-eslint","keywords_array":[],"namespace":"angular-eslint","versions_count":804,"first_release_published_at":"2020-03-20T20:36:33.313Z","latest_release_published_at":"2024-12-10T08:03:42.369Z","latest_release_number":"19.0.2","last_synced_at":"2025-01-13T15:53:25.221Z","created_at":"2022-04-07T13:32:30.463Z","updated_at":"2025-01-13T23:29:06.445Z","registry_url":"https://www.npmjs.com/package/@angular-eslint/schematics","install_command":"npm install @angular-eslint/schematics","documentation_url":null,"metadata":{"funding":null,"dist-tags":{"tmp":"4.2.0-tmp.0","patch":"4.3.1","next":"17.0.0-alpha.0","rc-v18":"18.0.0-alpha.16","previous":"17.5.3","prerelease-v19":"19.0.0-alpha.6","canary":"19.0.3-alpha.0","latest":"19.0.2"}},"repo_metadata":{"id":37678096,"uuid":"199344833","full_name":"angular-eslint/angular-eslint","owner":"angular-eslint","description":":sparkles: Monorepo for all the tooling related to using ESLint with Angular","archived":false,"fork":false,"pushed_at":"2024-10-28T22:48:07.000Z","size":12364,"stargazers_count":1634,"open_issues_count":89,"forks_count":223,"subscribers_count":28,"default_branch":"main","last_synced_at":"2024-10-29T14:55:50.192Z","etag":null,"topics":["angular","eslint","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/angular-eslint.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://buymeacoffee.com/jameshenry"]}},"created_at":"2019-07-28T22:51:06.000Z","updated_at":"2024-10-25T13:53:09.000Z","dependencies_parsed_at":"2023-12-07T10:30:16.275Z","dependency_job_id":"959cb408-49e6-4386-ab43-ebad25694dc0","html_url":"https://github.com/angular-eslint/angular-eslint","commit_stats":{"total_commits":1427,"total_committers":98,"mean_commits":"14.561224489795919","dds":0.5760336370007008,"last_synced_commit":"c0e9b9168944d57c3c7b97560deda856d84e73ac"},"previous_names":[],"tags_count":189,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angular-eslint","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233819584,"owners_count":18735302,"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":"angular-eslint","name":"angular-eslint","uuid":"53234240","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/53234240?v=4","repositories_count":1,"last_synced_at":"2024-05-21T06:37:29.551Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/angular-eslint","funding_links":[],"total_stars":1560,"followers":22,"following":0,"created_at":"2022-11-02T16:23:40.475Z","updated_at":"2024-05-21T06:37:30.800Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angular-eslint","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angular-eslint/repositories"},"tags":[{"name":"v19.0.0","sha":"af5386760858602db8a70f70ee06fc5991850c6f","kind":"tag","published_at":"2024-11-29T20:52:17.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v19.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v19.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v19.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v19.0.0/manifests"},{"name":"v18.4.3","sha":"5c46a94d012ee83107a2bf804991d5434b08de4c","kind":"tag","published_at":"2024-11-29T18:19:45.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.4.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.4.3/manifests"},{"name":"v18.4.2","sha":"8d0c6f31fbfc6b001b6a274ccf3cd87e93698e04","kind":"tag","published_at":"2024-11-23T13:07:09.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.4.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.4.2/manifests"},{"name":"v18.4.1","sha":"3e05a844e87edb1779f2c186b4fcd6013f7109b6","kind":"tag","published_at":"2024-11-18T21:37:34.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.4.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.4.1/manifests"},{"name":"v18.4.0","sha":"1796bd78fba1958fd74d133d7c893734eff2aa7a","kind":"tag","published_at":"2024-10-21T11:54:53.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.4.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.4.0/manifests"},{"name":"v18.3.1","sha":"decce7c74d28db9f2ca6e582448054f2641a89b5","kind":"tag","published_at":"2024-09-11T11:48:05.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.3.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.3.1/manifests"},{"name":"v17.5.3","sha":"16eadfb17c595f15db8aaa8a4b025fab463fc468","kind":"tag","published_at":"2024-09-04T10:42:14.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.5.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.5.3/manifests"},{"name":"v18.3.0","sha":"2f278370f588fa742eda26d693573f16ac493722","kind":"tag","published_at":"2024-08-13T14:00:07.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.3.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.3.0/manifests"},{"name":"v18.2.0","sha":"fea2384fb565dcdaa6cf964f4654dda146118f49","kind":"tag","published_at":"2024-07-31T21:57:01.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.2.0/manifests"},{"name":"v18.1.0","sha":"796e657c7bf21e0d6b59323eb4019a72342627e6","kind":"tag","published_at":"2024-07-01T11:49:42.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.1.0/manifests"},{"name":"v18.0.1","sha":"f36d0272d526fe7497f52ab0d7f445cf08b4489b","kind":"tag","published_at":"2024-05-30T09:18:51.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.0.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.0.1/manifests"},{"name":"v18.0.0","sha":"c8dff2faf86e3cbfcf9003888c306f020a3937f0","kind":"tag","published_at":"2024-05-29T16:31:06.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v18.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v18.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v18.0.0/manifests"},{"name":"v17.5.2","sha":"05e8cf9893c1d491d28ed99d4f4f54970820408c","kind":"tag","published_at":"2024-05-28T15:15:18.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.5.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.5.2/manifests"},{"name":"v17.5.1","sha":"82b1b7cf9175299d25ed882a2d0125883ff71177","kind":"tag","published_at":"2024-05-23T12:57:53.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.5.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.5.1/manifests"},{"name":"v17.5.0","sha":"4efe5e941f42d8b116def22256f5d564738e7545","kind":"tag","published_at":"2024-05-22T12:06:00.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.5.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.5.0/manifests"},{"name":"v17.4.1","sha":"5b7f1f3862bc5906997405b5b0dd3a81513393e6","kind":"tag","published_at":"2024-05-15T10:26:13.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.4.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.4.1/manifests"},{"name":"v17.4.0","sha":"350b2da90e25ccd0073e39d6c097e255404cf0a1","kind":"tag","published_at":"2024-05-07T12:35:10.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.4.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.4.0/manifests"},{"name":"v17.3.0","sha":"529e03533a73d850ca082a72f69c04bcd3a1d1d5","kind":"tag","published_at":"2024-03-15T21:43:00.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.3.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.3.0/manifests"},{"name":"v17.2.1","sha":"93c66cba7952bde8c3c81918536aea5d2de3fca4","kind":"tag","published_at":"2024-01-20T19:49:19.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.2.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.2.1/manifests"},{"name":"v17.2.0","sha":"564e009e74e2d3bdffeae58e995642700df7face","kind":"tag","published_at":"2024-01-06T20:33:46.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.2.0/manifests"},{"name":"v17.1.1","sha":"a1a2bd727a4e08caf72eda12760aceca4c64ec83","kind":"tag","published_at":"2023-11-30T15:06:48.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.1.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.1.1/manifests"},{"name":"v17.1.0","sha":"d339890fedcc9b1db2536a110ae2cc91a112a871","kind":"tag","published_at":"2023-11-15T18:48:04.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.1.0/manifests"},{"name":"v17.0.1","sha":"19967e7724c64143aa5a2c77f73006e7541c1fea","kind":"tag","published_at":"2023-11-09T09:30:59.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.0.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.0.1/manifests"},{"name":"v17.0.0","sha":"7121d78c95eefc01c306503b22cc9c7526c50633","kind":"tag","published_at":"2023-11-08T15:23:25.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.0.0/manifests"},{"name":"v16.3.1","sha":"d1dadeba8553c1b6e6b182656bfce5cff97e3035","kind":"tag","published_at":"2023-11-08T14:52:06.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.3.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.3.1/manifests"},{"name":"v16.3.0","sha":"2c48f226cfff00fca234b70f51cf6491f422cbf1","kind":"tag","published_at":"2023-11-08T14:50:38.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.3.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.3.0/manifests"},{"name":"v17.0.0-alpha.0","sha":"e0478be1ae5b9010ad1d74eac4d06511250bf13f","kind":"tag","published_at":"2023-11-06T21:03:06.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v17.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v17.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v17.0.0-alpha.0/manifests"},{"name":"v16.2.0","sha":"038422b3f939f2649375975a95e1417171f38ce0","kind":"tag","published_at":"2023-09-17T11:21:24.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.2.0/manifests"},{"name":"v16.1.2","sha":"2e4af4d7e60c4ceb7a65a5fa5ed8fde102291c01","kind":"tag","published_at":"2023-09-04T13:44:57.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.1.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.1.2/manifests"},{"name":"v16.1.1","sha":"99c5463a69289874c5cac1e47ac38cdf98f2b156","kind":"tag","published_at":"2023-08-20T16:46:38.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.1.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.1.1/manifests"},{"name":"v16.1.0","sha":"dce6381cafcbe2de109d0a53b4c9c3e3bf1ae569","kind":"tag","published_at":"2023-07-12T14:52:24.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.1.0/manifests"},{"name":"v16.0.3","sha":"246c158912e3b67291ffb992f5826e5067442c22","kind":"tag","published_at":"2023-05-29T16:55:19.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.0.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.3/manifests"},{"name":"v16.0.2","sha":"352f53ceb3fb4f4b7771c26f90afd580be489f8e","kind":"tag","published_at":"2023-05-17T15:53:23.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.0.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.2/manifests"},{"name":"v16.0.1","sha":"22e3c95a5d63a8dbda1c3c1fdb39ceddee66d912","kind":"tag","published_at":"2023-05-03T20:37:18.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.0.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.1/manifests"},{"name":"v16.0.0","sha":"245317c7bd83a94000e704060186098cadcf0195","kind":"tag","published_at":"2023-05-03T18:19:46.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.0/manifests"},{"name":"v16.0.0-alpha.1","sha":"ffcbae10749bc12760a9d442d4293179c6c19042","kind":"tag","published_at":"2023-05-03T11:04:32.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.0.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.0-alpha.1/manifests"},{"name":"v16.0.0-alpha.0","sha":"4bb6da6362f6625bffe7430d5117bbfb66e38d2b","kind":"tag","published_at":"2023-05-02T21:03:25.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v16.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v16.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v16.0.0-alpha.0/manifests"},{"name":"v15.2.1","sha":"9ecf4acc786d8529c6110db8842303286df80103","kind":"tag","published_at":"2023-02-10T12:48:14.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.2.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.2.1/manifests"},{"name":"v15.2.0","sha":"e48f172aea96f6e4c6b80d8ff06e8c004caf7775","kind":"tag","published_at":"2023-01-14T16:24:00.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.2.0/manifests"},{"name":"v15.1.0","sha":"ff9c1bcec7cf940adffa051ca58eda5ba6cd7978","kind":"tag","published_at":"2022-11-24T11:19:23.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.1.0/manifests"},{"name":"v15.0.0","sha":"465fabe0fc843065673543a2a25cbaaf60c229fd","kind":"tag","published_at":"2022-11-20T12:43:30.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0/manifests"},{"name":"v15.0.0-alpha.5","sha":"fed36400d7e0e754d241ded51ab54adacf226592","kind":"tag","published_at":"2022-11-20T12:00:31.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.0.0-alpha.5","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.0.0-alpha.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.5/manifests"},{"name":"v15.0.0-alpha.4","sha":"df25423194e1893f49d4f15f9773691f02a51e3d","kind":"tag","published_at":"2022-11-20T11:51:20.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.0.0-alpha.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.0.0-alpha.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.4/manifests"},{"name":"v14.4.0","sha":"2541da9e7b785720f1eba180cc6a9154212c3e5f","kind":"tag","published_at":"2022-11-20T11:34:31.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.4.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.4.0/manifests"},{"name":"v15.0.0-alpha.3","sha":"76e5c723f6c03106c6f2c5839d820a8deb96040c","kind":"tag","published_at":"2022-11-20T10:38:29.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.0.0-alpha.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.0.0-alpha.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.3/manifests"},{"name":"v14.3.1","sha":"02736497031b36736bffc8e1993d580dfe3f3c39","kind":"tag","published_at":"2022-11-20T10:06:59.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.3.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.3.1/manifests"},{"name":"v15.0.0-alpha.2","sha":"ad7d7eaded8cffc89105dde9fc3a4c70020de4a7","kind":"tag","published_at":"2022-11-20T09:31:49.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.0.0-alpha.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.0.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.2/manifests"},{"name":"v15.0.0-alpha.1","sha":"58e6105c2375550f2b786406f25e304b0d59095b","kind":"tag","published_at":"2022-11-19T14:18:24.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.0.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.1/manifests"},{"name":"v15.0.0-alpha.0","sha":"333fe1b4c189a5f4ecee216bd5360f428853f50d","kind":"tag","published_at":"2022-11-17T13:41:42.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v15.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v15.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v15.0.0-alpha.0/manifests"},{"name":"v14.3.0","sha":"f71f23652a74ebd2f650baeb3a91051db554c5d9","kind":"tag","published_at":"2022-11-17T10:13:33.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.3.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.3.0/manifests"},{"name":"v14.2.0","sha":"b7424db6b5b7a3c164f865e0922179426311920d","kind":"tag","published_at":"2022-11-15T10:52:00.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.2.0/manifests"},{"name":"v14.1.2","sha":"d3df93596ac128c7028a051780f43d8e8adb6e6f","kind":"tag","published_at":"2022-09-21T18:59:12.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.1.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.1.2/manifests"},{"name":"v14.1.1","sha":"6c39138db7799d9f8a455e1623f2d7ea6fa61b86","kind":"tag","published_at":"2022-09-18T11:33:23.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.1.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.1.1/manifests"},{"name":"v14.1.0","sha":"e25ef92c8c59a9c47b727f8e491dfb608cb71530","kind":"tag","published_at":"2022-09-18T07:47:22.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.1.0/manifests"},{"name":"v14.0.4","sha":"95a06756d2118ae548798f56d3f759bf157b4933","kind":"tag","published_at":"2022-09-08T13:33:26.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.4/manifests"},{"name":"v14.0.3","sha":"89459be35a922ba5f6146636b02cee508ac88ffb","kind":"tag","published_at":"2022-08-23T08:36:50.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.3/manifests"},{"name":"v14.0.2","sha":"56a345032bdbd6dc03cdbe4d219156dda73c1e6b","kind":"tag","published_at":"2022-07-09T09:59:17.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.2/manifests"},{"name":"v14.0.1","sha":"d22e28e6a0135ca724cafdff29fd3491291344b5","kind":"tag","published_at":"2022-07-08T15:41:14.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.1/manifests"},{"name":"v14.0.0","sha":"676699f28a4ecaf41f8c65418d0bdc9c973714aa","kind":"tag","published_at":"2022-06-23T18:00:40.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0/manifests"},{"name":"v14.0.0-alpha.4","sha":"c3f4612ab5834c934fc6f7b1c230eb30c049992a","kind":"tag","published_at":"2022-06-23T17:42:51.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.0-alpha.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.0-alpha.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.4/manifests"},{"name":"v14.0.0-alpha.3","sha":"f29d389822b4a0ab2693771b5494073b883c8946","kind":"tag","published_at":"2022-06-13T13:34:36.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.0-alpha.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.0-alpha.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.3/manifests"},{"name":"v14.0.0-alpha.2","sha":"67044dd79280a779a0d5614350f5fa0308399148","kind":"tag","published_at":"2022-06-12T11:06:57.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.0-alpha.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.2/manifests"},{"name":"v13.5.0","sha":"6552d6c62f99f3c1c135d7309ee613caae394dbb","kind":"tag","published_at":"2022-06-12T11:01:21.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.5.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.5.0/manifests"},{"name":"v14.0.0-alpha.1","sha":"7ea26af6975cd4d4295114e761dee161522c752a","kind":"tag","published_at":"2022-06-11T13:48:08.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.1/manifests"},{"name":"v13.4.0","sha":"0bda2bbb78bed2caba42fd307f7c7cd182cb113c","kind":"tag","published_at":"2022-06-11T13:37:21.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.4.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.4.0/manifests"},{"name":"v13.3.0","sha":"85b0aab13b79242baec51adaaad188f6f390e875","kind":"tag","published_at":"2022-06-10T09:51:25.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.3.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.3.0/manifests"},{"name":"v14.0.0-alpha.0","sha":"bb37c65bd1d8689848d98ae30c0a95ea3ce50675","kind":"tag","published_at":"2022-05-31T15:27:59.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v14.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v14.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v14.0.0-alpha.0/manifests"},{"name":"v13.2.1","sha":"120c20a2e0811879b35e062e0ce6e74b6d4b9ff2","kind":"tag","published_at":"2022-04-14T12:03:34.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.2.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.2.1/manifests"},{"name":"v13.2.0","sha":"0be6f08baad4f9e1392a48d6e99233f51202b266","kind":"tag","published_at":"2022-04-03T17:48:02.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.2.0/manifests"},{"name":"v13.1.0","sha":"4c11177e66cb54ba8d548ad7068990679c0c7e93","kind":"tag","published_at":"2022-02-13T19:26:57.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.1.0/manifests"},{"name":"v13.0.1","sha":"e2006e5e9c99e5a943d1a999e0efa5247d29ec24","kind":"tag","published_at":"2021-11-19T00:02:37.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.0.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.0.1/manifests"},{"name":"v13.0.0","sha":"3c3f54614742941d39e2dae941febdee05525ff1","kind":"tag","published_at":"2021-11-18T22:13:50.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.0.0/manifests"},{"name":"v13.0.0-alpha.1","sha":"33496da91dbcb83f6d8eb45bec3b342e8a107943","kind":"tag","published_at":"2021-11-18T21:58:03.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.0.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.0.0-alpha.1/manifests"},{"name":"v4.3.1","sha":"3c3e9e87199a229429edfe863117ba4e8f37f424","kind":"tag","published_at":"2021-11-18T21:34:58.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.3.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.3.1/manifests"},{"name":"v12.7.0","sha":"f1e7704b7c0f57d7743fef8cd7500bc3103b9b5b","kind":"tag","published_at":"2021-11-18T21:20:24.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.7.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.7.0/manifests"},{"name":"v13.0.0-alpha.0","sha":"3e9ea918032ff4f03d44cccfa873df36c370f7b9","kind":"tag","published_at":"2021-11-03T08:51:47.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v13.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v13.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v13.0.0-alpha.0/manifests"},{"name":"v12.6.1","sha":"f6bc27a1f35d4dcd39f9fc029d0397f454c5a2be","kind":"tag","published_at":"2021-10-26T15:58:40.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.6.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.6.1/manifests"},{"name":"v12.6.0","sha":"4e478ea0259ea7b57ee6e9f44ab943ad8cfef101","kind":"tag","published_at":"2021-10-25T10:31:45.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.6.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.6.0/manifests"},{"name":"v12.5.0","sha":"959ad2824d7d511e2d8c67ca03a6b5b71698f268","kind":"tag","published_at":"2021-09-20T15:03:04.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.5.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.5.0/manifests"},{"name":"v12.4.1","sha":"b38d82894ed39358a48c4689dd79749ad9216dc1","kind":"tag","published_at":"2021-09-09T12:33:41.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.4.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.4.1/manifests"},{"name":"v12.4.0","sha":"34e5523aa8e074122a2fff318f08f95b8634053c","kind":"tag","published_at":"2021-09-09T11:45:50.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.4.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.4.0/manifests"},{"name":"v12.3.1","sha":"9919aa840c82ba796129ebd4d94fff27b1e41181","kind":"tag","published_at":"2021-07-15T13:32:35.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.3.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.3.1/manifests"},{"name":"v12.3.0","sha":"3392ccc0e32d57d00badf125c65b271aa12919a7","kind":"tag","published_at":"2021-07-13T08:29:04.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.3.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.3.0/manifests"},{"name":"v12.2.2","sha":"e82c68780c3e162de270fe5e2e220ccf96f43105","kind":"tag","published_at":"2021-07-10T15:28:25.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.2.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.2.2/manifests"},{"name":"v12.2.1","sha":"f8fc893265b1afaf36ade5188f01896c2300ec2f","kind":"tag","published_at":"2021-07-10T11:21:46.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.2.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.2.1/manifests"},{"name":"v12.2.0","sha":"6f5d5b23583da26e5de4432317b0b1abb0f45527","kind":"tag","published_at":"2021-06-20T12:26:52.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.2.0/manifests"},{"name":"v12.1.0","sha":"9743b7b4bb92a0aad7e7cdd23112d53dcdfcfae7","kind":"tag","published_at":"2021-05-30T11:39:21.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.1.0/manifests"},{"name":"v12.0.0","sha":"303d5550dabf63b2728ac2f552bc6666a30d5abc","kind":"tag","published_at":"2021-05-13T17:31:06.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0/manifests"},{"name":"v12.0.0-alpha.5","sha":"d1d0e9f61f6a864d14507aa09c4b08c085309e7d","kind":"tag","published_at":"2021-05-13T17:10:54.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.0.0-alpha.5","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.0.0-alpha.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.5/manifests"},{"name":"v12.0.0-alpha.4","sha":"5a2b46daeb65442f6e71697bad863b90f611921b","kind":"tag","published_at":"2021-05-13T10:31:54.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.0.0-alpha.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.0.0-alpha.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.4/manifests"},{"name":"v12.0.0-alpha.3","sha":"a8f71cd9c67a4a3584ed9bff9be4a57b6eaa483d","kind":"tag","published_at":"2021-05-13T10:27:38.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.0.0-alpha.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.0.0-alpha.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.3/manifests"},{"name":"v12.0.0-alpha.2","sha":"5f45f17163e69f9c19c24ea91d09782d5c3f3344","kind":"tag","published_at":"2021-05-13T10:00:22.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.0.0-alpha.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.0.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.2/manifests"},{"name":"v12.0.0-alpha.1","sha":"60b536abce6e73be11969c8640afb525274030bb","kind":"tag","published_at":"2021-05-13T09:51:41.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.0.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.1/manifests"},{"name":"v4.3.0","sha":"5f4e4a8904de2b2be8db55c4fbc6f3946bfe9185","kind":"tag","published_at":"2021-05-12T14:47:36.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.3.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.3.0/manifests"},{"name":"v4.2.1","sha":"15395649712625567c5dd4157f88a7cf6a3ea6ce","kind":"tag","published_at":"2021-05-12T09:32:21.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.2.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.2.1/manifests"},{"name":"v12.0.0-alpha.0","sha":"b2a4c866c173b01b194853c2ef6c6fd80261f30a","kind":"tag","published_at":"2021-05-10T16:19:45.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v12.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v12.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v12.0.0-alpha.0/manifests"},{"name":"v4.2.0","sha":"e1af184da7fbb88902635cd539223ecdaa88c0b8","kind":"tag","published_at":"2021-04-28T15:32:54.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.2.0/manifests"},{"name":"v4.1.0","sha":"2c7e4668156308227ee112b2383b7871c8c6f09e","kind":"tag","published_at":"2021-04-28T11:02:50.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.1.0/manifests"},{"name":"v4.0.0","sha":"589df30dafbbef90ab3d65d73928b4ea0f899cc2","kind":"tag","published_at":"2021-04-18T13:13:06.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0/manifests"},{"name":"v4.0.0-alpha.4","sha":"87b7076caa3f60444eb6a53e5a3b70728b3d6e72","kind":"tag","published_at":"2021-04-18T12:55:58.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.0.0-alpha.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.0.0-alpha.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.4/manifests"},{"name":"v4.0.0-alpha.3","sha":"e69a6b00613084b68ee0c7b8f5026266c1f6f368","kind":"tag","published_at":"2021-04-18T12:49:17.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.0.0-alpha.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.0.0-alpha.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.3/manifests"},{"name":"v4.0.0-alpha.2","sha":"1548b79451c85941a9debac007aa4e5d36c6f425","kind":"tag","published_at":"2021-04-18T12:40:06.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.0.0-alpha.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.0.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.2/manifests"},{"name":"v4.0.0-alpha.1","sha":"210b7edca46ac780b4ccf1b32ce0252bdab28579","kind":"tag","published_at":"2021-04-18T12:37:12.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.0.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.1/manifests"},{"name":"v4.0.0-alpha.0","sha":"38f92bb8cc5bef18444436b2949cdcd938c306a9","kind":"tag","published_at":"2021-04-18T11:30:12.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v4.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v4.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v4.0.0-alpha.0/manifests"},{"name":"v3.0.1","sha":"26ded8968a7660aa10219da7addcac40a677f465","kind":"tag","published_at":"2021-04-18T10:39:03.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v3.0.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v3.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.1/manifests"},{"name":"v3.0.0","sha":"35df8f388d16f3188609ed0415a8194fb81cf506","kind":"tag","published_at":"2021-04-17T13:37:01.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v3.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.0/manifests"},{"name":"v2.1.1","sha":"bcefb9f59488f1dbfcbee30ef591547cf631169e","kind":"tag","published_at":"2021-04-17T12:46:07.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.1.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"7870d1e5eb9040d7286c0579306c6b6ec1a67a83","kind":"tag","published_at":"2021-04-11T15:07:40.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.1.0/manifests"},{"name":"v3.0.0-alpha.2","sha":"64f7a3209562a479b64ff2c9f3ef8f8b4d3cc238","kind":"tag","published_at":"2021-03-29T16:11:47.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v3.0.0-alpha.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v3.0.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.0-alpha.2/manifests"},{"name":"v3.0.0-alpha.1","sha":"71f401f573934cfe5698440319a692391bece86a","kind":"tag","published_at":"2021-03-29T09:04:21.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v3.0.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v3.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.0-alpha.1/manifests"},{"name":"v3.0.0-alpha.0","sha":"19d7cd36a08dcb28c33dec0f2f5ca260407567b5","kind":"tag","published_at":"2021-03-29T07:47:16.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v3.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v3.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v3.0.0-alpha.0/manifests"},{"name":"v2.0.2","sha":"e78d6df0e451efb93ec0b498fa5172db63725a60","kind":"tag","published_at":"2021-03-16T13:12:15.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.2/manifests"},{"name":"v2.0.1","sha":"de8ab5fd4cce540559217709f7ace4a5328c416c","kind":"tag","published_at":"2021-03-14T10:49:56.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.1/manifests"},{"name":"v2.0.0","sha":"33abddc7062b35f5148f5a0e822ec8b11ecd385a","kind":"tag","published_at":"2021-03-13T13:53:36.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0/manifests"},{"name":"v2.0.0-alpha.10","sha":"743a7420ef0e34aecbd5dd7a6bcd92a56a2f6dd1","kind":"tag","published_at":"2021-03-13T10:11:08.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.10","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.10/manifests"},{"name":"v2.0.0-alpha.9","sha":"c271da0cb7f0ef6bb0c9784fbaa87b6fbfbda771","kind":"tag","published_at":"2021-03-13T09:31:54.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.9","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.9/manifests"},{"name":"v2.0.0-alpha.8","sha":"84e11529ca2e2050fb7d7550cb0e53ae290b6a77","kind":"tag","published_at":"2021-03-13T09:06:07.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.8","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.8/manifests"},{"name":"v2.0.0-alpha.7","sha":"c118f5def3e8a2b0cbd84d30f50fcdbff86fb0af","kind":"tag","published_at":"2021-03-13T08:51:26.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.7","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.7/manifests"},{"name":"v2.0.0-alpha.6","sha":"bece3fac3dd65e1fc2aec15d0cf36aa164589852","kind":"tag","published_at":"2021-03-13T08:18:50.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.6","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.6/manifests"},{"name":"v2.0.0-alpha.5","sha":"428aea5a9701b5f228bd40feabc977f2d945052c","kind":"tag","published_at":"2021-03-13T08:08:19.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.5","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.5/manifests"},{"name":"v2.0.0-alpha.4","sha":"767fef1557f8d0d0a18fc6692b93f3964dcadeff","kind":"tag","published_at":"2021-03-08T10:13:00.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.4/manifests"},{"name":"v2.0.0-alpha.3","sha":"8389aca91ad55280c4892ba64d5f49b514c040d9","kind":"tag","published_at":"2021-03-08T08:51:22.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.3/manifests"},{"name":"v2.0.0-alpha.2","sha":"e5d58a3f47e2d5508bbf9c08139d0be73c5525dc","kind":"tag","published_at":"2021-03-07T18:03:46.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.2/manifests"},{"name":"v2.0.0-alpha.1","sha":"0927792da19ff859fda2922862eda2190486dfae","kind":"tag","published_at":"2021-03-07T14:24:16.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.1/manifests"},{"name":"v2.0.0-alpha.0","sha":"792653251bc2d75ec1aa77592b16c87b4ea0700a","kind":"tag","published_at":"2021-03-06T15:32:16.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v2.0.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v2.0.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v2.0.0-alpha.0/manifests"},{"name":"v1.2.0","sha":"c7deee67f98d9b699eb5f624b3bb929069858e7e","kind":"tag","published_at":"2021-02-06T19:42:41.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v1.2.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"e1057dd2c39b2b7af16280233b478743b0df02ff","kind":"tag","published_at":"2021-01-14T15:41:23.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v1.1.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.1.0/manifests"},{"name":"v1.0.0","sha":"b06f6e77a0c6aba3309a4f0fa4e041d078cf2140","kind":"tag","published_at":"2021-01-01T13:17:34.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v1.0.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.0.0/manifests"},{"name":"v1.0.0-beta.3","sha":"fa8fd12bf82a7d54ff9341d4225f5646474626c7","kind":"tag","published_at":"2021-01-01T12:19:57.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v1.0.0-beta.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v1.0.0-beta.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.0.0-beta.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.0.0-beta.3/manifests"},{"name":"v1.0.0-beta.2","sha":"f8c5452a99a24a59cf0ee072a98f1cb523b10e3b","kind":"tag","published_at":"2021-01-01T07:18:00.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v1.0.0-beta.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v1.0.0-beta.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.0.0-beta.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.0.0-beta.2/manifests"},{"name":"v1.0.0-beta.1","sha":"d4cca47abd0d3e73345694fad2e35194db575fef","kind":"tag","published_at":"2021-01-01T06:34:24.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v1.0.0-beta.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v1.0.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.0.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v1.0.0-beta.1/manifests"},{"name":"v0.8.0-beta.7","sha":"ed9facc2f2558a8d50c6908d89872b88e74710b4","kind":"tag","published_at":"2020-12-22T17:20:32.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.8.0-beta.7","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.8.0-beta.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.7/manifests"},{"name":"v0.8.0-beta.6","sha":"232dd8dab38df80f6b996902013440a9cc2154b5","kind":"tag","published_at":"2020-12-16T07:55:41.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.8.0-beta.6","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.8.0-beta.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.6/manifests"},{"name":"v0.8.0-beta.5","sha":"c8fa3d610d7438b430d5e90cd894dc090a92afb2","kind":"tag","published_at":"2020-12-09T11:08:03.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.8.0-beta.5","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.8.0-beta.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.5/manifests"},{"name":"v0.8.0-beta.4","sha":"1fefc1803e636cbd76b952a7224f6ff53f25f024","kind":"tag","published_at":"2020-12-09T08:48:05.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.8.0-beta.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.8.0-beta.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.4/manifests"},{"name":"v0.8.0-beta.3","sha":"cab61492aa29ef2a111ddcaa0435102c66733c90","kind":"tag","published_at":"2020-11-28T11:01:13.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.8.0-beta.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.8.0-beta.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.3/manifests"},{"name":"v0.8.0-beta.2","sha":"69303fa600e471abe5e719216179b1bdbb9662da","kind":"tag","published_at":"2020-11-22T13:59:56.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.8.0-beta.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.8.0-beta.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.2/manifests"},{"name":"v0.8.0-beta.1","sha":"b98f9dcdf0528ff074c90ae2d46fd8b31bb869f2","kind":"tag","published_at":"2020-11-17T17:11:11.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.8.0-beta.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.8.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.1/manifests"},{"name":"v0.8.0-beta.0","sha":"50b244751e940fc25c98bbcbec8cafca4e7a8b3d","kind":"tag","published_at":"2020-11-14T17:02:43.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.8.0-beta.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.8.0-beta.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.8.0-beta.0/manifests"},{"name":"v0.7.0-beta.1","sha":"f90d7174425c67b6071ada2458a0e2579365b71a","kind":"tag","published_at":"2020-11-13T23:16:32.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-beta.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-beta.1/manifests"},{"name":"v0.7.0-beta.0","sha":"322643e5ff776d080023e05ed676b2398c04d81f","kind":"tag","published_at":"2020-11-13T21:27:11.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-beta.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-beta.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-beta.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-beta.0/manifests"},{"name":"v0.7.0-alpha.14","sha":"7e49c9e9c4f76da1733f21be4f245d0cf4e401d0","kind":"tag","published_at":"2020-11-13T19:07:16.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.14","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.14/manifests"},{"name":"v0.7.0-alpha.13","sha":"2ac70abbdf9b9de3207d1aa926ba4df5f78b0e77","kind":"tag","published_at":"2020-11-13T13:54:28.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.13","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.13/manifests"},{"name":"v0.7.0-alpha.12","sha":"e26e471cd5876d7d5fcba8540e756406630759b1","kind":"tag","published_at":"2020-11-11T17:42:23.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.12","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.12/manifests"},{"name":"v0.7.0-alpha.11","sha":"1580edcd2b4aa3d7c7adb82a7fe77e3731303b3c","kind":"tag","published_at":"2020-11-08T14:48:57.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.11","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.11/manifests"},{"name":"v0.7.0-alpha.10","sha":"ea51b882882edfc5e1a740fa81a7da34cffe0f84","kind":"tag","published_at":"2020-11-08T14:20:17.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.10","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.10/manifests"},{"name":"v0.7.0-alpha.9","sha":"635ed52da0cd8c50545e7513c2bfc78421e298e7","kind":"tag","published_at":"2020-11-05T18:59:38.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.9","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.9/manifests"},{"name":"v0.7.0-alpha.8","sha":"ddb3d105d98400442ba6934846e636ba5e34b090","kind":"tag","published_at":"2020-11-05T18:17:45.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.8","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.8/manifests"},{"name":"v0.7.0-alpha.7","sha":"338ac75fcb935b4b03650ce1faae65d7a143cd8d","kind":"tag","published_at":"2020-11-05T17:45:45.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.7","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.7/manifests"},{"name":"v0.7.0-alpha.6","sha":"05428de98e6e81344cbdd15eec8891e4b97e5f5d","kind":"tag","published_at":"2020-11-05T15:57:19.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.6","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.6/manifests"},{"name":"v0.7.0-alpha.5","sha":"bc98d54fb578048cd2acbf0cdb9424eb6ad00f11","kind":"tag","published_at":"2020-11-05T11:59:12.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.5","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.5/manifests"},{"name":"v0.7.0-alpha.4","sha":"afa2a392e603a9746f12a539c39ed640049d0ddb","kind":"tag","published_at":"2020-11-05T11:41:05.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.4/manifests"},{"name":"v0.7.0-alpha.3","sha":"96246fe208a5849f6804df72708490ffbfffd9e1","kind":"tag","published_at":"2020-11-05T10:41:44.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.3/manifests"},{"name":"v0.7.0-alpha.2","sha":"72674123c07137babd71f4ea39c2b34bc5fbf782","kind":"tag","published_at":"2020-11-05T10:25:59.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.2/manifests"},{"name":"v0.7.0-alpha.1","sha":"e9a3bec325bbe713037cf9dd8c22d1a70532b03d","kind":"tag","published_at":"2020-11-05T10:02:19.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.1/manifests"},{"name":"v0.7.0-alpha.0","sha":"7a92faa8c58964e966abfae38ca049ae9cb3e78a","kind":"tag","published_at":"2020-11-05T09:20:49.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.7.0-alpha.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.7.0-alpha.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.7.0-alpha.0/manifests"},{"name":"v0.6.0-beta.0","sha":"ae6e11a78b338f57039df335205471a2cd491138","kind":"tag","published_at":"2020-10-28T09:04:42.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.6.0-beta.0","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.6.0-beta.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.6.0-beta.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.6.0-beta.0/manifests"},{"name":"v0.5.0-beta.5","sha":"22849e17beee48a349cd87fb3ab02e8149e316c0","kind":"tag","published_at":"2020-10-22T15:22:55.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.5.0-beta.5","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.5.0-beta.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.5/manifests"},{"name":"v0.5.0-beta.4","sha":"7081a7f7044dadf35b7d53107cffbb5f7cd2ae2b","kind":"tag","published_at":"2020-10-14T11:15:24.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.5.0-beta.4","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.5.0-beta.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.4/manifests"},{"name":"v0.5.0-beta.3","sha":"b33a81ff1ec99736417cae843924db683ad8f586","kind":"tag","published_at":"2020-10-07T14:35:19.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.5.0-beta.3","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.5.0-beta.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.3/manifests"},{"name":"v0.5.0-beta.2","sha":"b30fd0e9c8fe35b7cda8117131c2f836a5bcace0","kind":"tag","published_at":"2020-10-02T17:10:17.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.5.0-beta.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.5.0-beta.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.2/manifests"},{"name":"v0.5.0-beta.1","sha":"a60ae990df38c6506e96ff03399dbbaeb3866d8d","kind":"tag","published_at":"2020-10-02T12:44:08.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.5.0-beta.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.5.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.5.0-beta.1/manifests"},{"name":"v0.4.0-beta.2","sha":"97ac0f18fb9ed65750dbe7d8c79fae900d98d04e","kind":"tag","published_at":"2020-09-22T13:24:26.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.4.0-beta.2","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.4.0-beta.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.4.0-beta.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.4.0-beta.2/manifests"},{"name":"v0.4.0-beta.1","sha":"9c8eea47c2943ebdcfa7b2f08447f62daa900e09","kind":"tag","published_at":"2020-09-19T17:28:44.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.4.0-beta.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.4.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.4.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.4.0-beta.1/manifests"},{"name":"v0.3.0-beta.1","sha":"9d5b5e624be680503aaf7337e9acb5dc3ac66d63","kind":"tag","published_at":"2020-09-03T13:52:07.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.3.0-beta.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.3.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.3.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.3.0-beta.1/manifests"},{"name":"v0.2.0-beta.1","sha":"1e96dd4097580bfc5517f5e5b8c60b23f80442fb","kind":"tag","published_at":"2020-08-27T12:13:58.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.2.0-beta.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.2.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.2.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.2.0-beta.1/manifests"},{"name":"v0.1.0-beta.1","sha":"6f0c87729812e4f81b9d8b856c5de9eea34f6d43","kind":"tag","published_at":"2020-08-18T18:12:35.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.1.0-beta.1","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.1.0-beta.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.1.0-beta.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.1.0-beta.1/manifests"},{"name":"v0.0.1-alpha.33","sha":"dc6fb3ea654a993614b3669b1ca2f17050bf7015","kind":"tag","published_at":"2020-08-14T12:17:28.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.33","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.33","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.33","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.33/manifests"},{"name":"v0.0.1-alpha.32","sha":"44392627ecd2e2cd332f1a9f47c0fec8dfaa5e59","kind":"tag","published_at":"2020-05-08T20:23:40.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.32","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.32","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.32","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.32/manifests"},{"name":"v0.0.1-alpha.31","sha":"c040f7961599e6da193cd2f0241f995eba2cf957","kind":"tag","published_at":"2020-05-08T16:30:12.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.31","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.31","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.31","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.31/manifests"},{"name":"v0.0.1-alpha.30","sha":"03d1841f493b7322b4dc50703df02eff2e9dbfbb","kind":"tag","published_at":"2020-05-08T16:06:51.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.30","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.30","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.30","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.30/manifests"},{"name":"v0.0.1-alpha.29","sha":"c685f64bc8eda992bf90db2418b835a14e0de808","kind":"tag","published_at":"2020-04-22T10:48:03.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.29","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.29","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.29","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.29/manifests"},{"name":"v0.0.1-alpha.28","sha":"d7e2961a22905c291c83af56f1647256f22c8444","kind":"tag","published_at":"2020-04-17T15:46:47.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.28","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.28","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.28","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.28/manifests"},{"name":"v0.0.1-alpha.27","sha":"59b10e390149d62aae77eae8ae14316caadc71e5","kind":"tag","published_at":"2020-03-20T21:44:18.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.27","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.27","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.27","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.27/manifests"},{"name":"v0.0.1-alpha.26","sha":"b21808a14fda1a803d3af8a79d0055aac1e335f6","kind":"tag","published_at":"2020-03-20T21:17:43.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.26","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.26","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.26","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.26/manifests"},{"name":"v0.0.1-alpha.25","sha":"420f474654f5bf0f67b88450f21f9aa62baa709a","kind":"tag","published_at":"2020-03-20T21:02:24.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.25","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.25","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.25","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.25/manifests"},{"name":"v0.0.1-alpha.24","sha":"8cf7fd67b1d17152b85843677bd4171ac6658e0c","kind":"tag","published_at":"2020-03-20T20:35:37.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.24","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.24","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.24","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.24/manifests"},{"name":"v0.0.1-alpha.23","sha":"97d8aff24a187ac1f72997391f7bc90fe4d20818","kind":"tag","published_at":"2020-03-16T20:02:17.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.23","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.23","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.23","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.23/manifests"},{"name":"v0.0.1-alpha.22","sha":"f63bdf01e10859edaa2de11c8e877638a5103255","kind":"tag","published_at":"2020-03-14T22:43:27.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.22","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.22","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.22","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.22/manifests"},{"name":"v0.0.1-alpha.21","sha":"f8a877eb786c766fa7cd189fbcd1d72860359aaf","kind":"tag","published_at":"2020-03-14T18:42:52.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.21","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.21/manifests"},{"name":"v0.0.1-alpha.20","sha":"3dc94bb4e3ccdd8b0a24c3d312b21ae2348f9a3b","kind":"tag","published_at":"2020-03-02T18:33:23.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.20","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.20/manifests"},{"name":"v0.0.1-alpha.19","sha":"94ce0202f8135cb91cd20f1668fffe760741925a","kind":"tag","published_at":"2020-02-22T14:28:42.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.19","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.19/manifests"},{"name":"v0.0.1-alpha.18","sha":"261b05d547e23a17a3193f67cbe5cde90dbf51ec","kind":"tag","published_at":"2020-01-04T15:05:06.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.18","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.18/manifests"},{"name":"v0.0.1-alpha.17","sha":"55bbbdccd1898551fffe75dee14278defb823941","kind":"tag","published_at":"2019-07-31T02:05:16.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.17","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.17/manifests"},{"name":"v0.0.1-alpha.16","sha":"114f417638171bfb11062b26e53601fc5230903a","kind":"tag","published_at":"2019-07-29T19:06:14.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.16","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.16/manifests"},{"name":"v0.0.1-alpha.15","sha":"43ca445291baf9dc94d7dea4743ab7bcd78a550b","kind":"tag","published_at":"2019-07-29T02:47:14.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.15","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.15/manifests"},{"name":"v0.0.1-alpha.14","sha":"8ba75952fc4f8f83ffef60eaf00360812c8d7726","kind":"tag","published_at":"2019-07-29T02:43:16.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.14","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.14/manifests"},{"name":"v0.0.1-alpha.13","sha":"2294dcddcad3be2826a2f8aa865dcbba7a07e48a","kind":"tag","published_at":"2019-07-29T02:41:24.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.13","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.13/manifests"},{"name":"v0.0.1-alpha.12","sha":"1dd9eca846ba8e00f7c04cbb41f4c37f9f937915","kind":"commit","published_at":"2019-07-29T02:11:53.000Z","download_url":"https://codeload.github.com/angular-eslint/angular-eslint/tar.gz/v0.0.1-alpha.12","html_url":"https://github.com/angular-eslint/angular-eslint/releases/tag/v0.0.1-alpha.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-eslint%2Fangular-eslint/tags/v0.0.1-alpha.12/manifests"}]},"repo_metadata_updated_at":"2025-01-13T23:29:06.445Z","dependent_packages_count":689,"downloads":3400105,"downloads_period":"last-month","dependent_repos_count":9636,"rankings":{"downloads":0.1548345403489728,"dependent_repos_count":0.26764009852375353,"dependent_packages_count":0.15265731537592656,"stargazers_count":2.201030773724239,"forks_count":2.424397959805361,"docker_downloads_count":0.22095400614968527,"average":0.903585782321323},"purl":"pkg:npm/%40angular-eslint/schematics","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/npm/@angular-eslint/schematics","docker_dependents_count":71,"docker_downloads_count":33662580,"usage_url":"https://repos.ecosyste.ms/usage/npm/@angular-eslint/schematics","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/npm/@angular-eslint/schematics/dependencies","status":null,"funding_links":["https://buymeacoffee.com/jameshenry"],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@angular-eslint%2Fschematics/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@angular-eslint%2Fschematics/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@angular-eslint%2Fschematics/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/packages/@angular-eslint%2Fschematics/related_packages","maintainers":[{"uuid":"jameshenry","login":"jameshenry","name":null,"email":"james@henry.sc","url":null,"packages_count":254,"html_url":"https://www.npmjs.com/~jameshenry","role":null,"created_at":"2022-11-14T15:12:56.166Z","updated_at":"2022-11-14T15:12:56.166Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/npmjs.org/maintainers/jameshenry/packages"}],"registry":{"name":"npmjs.org","url":"https://registry.npmjs.org","ecosystem":"npm","default":true,"packages_count":5006545,"maintainers_count":1012936,"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":167,"unique_repositories_count_past_30_days":3,"recent_issues":[{"uuid":"4539401124","node_id":"PR_kwDOInCflM7gLeDA","number":778,"state":"open","title":"Bump the all-dependencies group in /app-components with 17 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-28T09:45:30.000Z","updated_at":"2026-05-31T09:01:12.930Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":17,"packages":[{"name":"@angular/animations","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.9","new_version":"21.2.13","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/elements","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular-eslint/builder","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.59.2","new_version":"8.60.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@typescript-eslint/parser","old_version":"8.59.2","new_version":"8.60.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":"/app-components","ecosystem":"npm"},"body":"Bumps the all-dependencies group in /app-components with 17 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.11` | `21.2.14` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.9` | `21.2.13` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.11` | `21.2.14` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.11` | `21.2.14` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.11` | `21.2.14` |\n| [@angular/elements](https://github.com/angular/angular/tree/HEAD/packages/elements) | `21.2.11` | `21.2.14` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.11` | `21.2.14` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.11` | `21.2.14` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.11` | `21.2.14` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.11` | `21.2.14` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.1` | `21.4.0` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.59.2` | `8.60.0` |\n| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.59.2` | `8.60.0` |\n\nUpdates `@angular/animations` from 21.2.11 to 21.2.14\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.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/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.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e0b7192f441\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.14/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.2.9 to 21.2.13\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.13\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.12\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/da87be76464d76ec11ae922abd5f4c72c5b4ea3e\"\u003e\u003cimg src=\"https://img.shields.io/badge/da87be7646-fix-green\" alt=\"fix - da87be7646\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e ensure dates don't overflow on a small screen (\u003ca href=\"https://redirect.github.com/angular/components/issues/33281\"\u003e#33281\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\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\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/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.13 \u0026quot;21-2-13\u0026quot; (2026-05-27)\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-rc.1 \u0026quot;metal-monkey\u0026quot; (2026-05-20)\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/ce1d9a7286b66e2c9511183586fceabf2a925c02\"\u003ece1d9a7286\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e allow menu item role override (\u003ca href=\"https://redirect.github.com/angular/components/pull/33264\"\u003e#33264\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/196b7064db336830ee9c43244c00631935dd2c55\"\u003e196b7064db\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e defer menu item focus in case menus in cdk overlay (\u003ca href=\"https://redirect.github.com/angular/components/pull/33258\"\u003e#33258\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6443b79f9a629c67766675ebd740722eb65b2926\"\u003e6443b79f9a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e unable to set softDisabled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33265\"\u003e#33265\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/4c298970ed67abfa7b9980e219bbbafe3c71ddc5\"\u003e4c298970ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003escrolling:\u003c/strong\u003e make it easier to provide custom scrollable (\u003ca href=\"https://redirect.github.com/angular/components/pull/33269\"\u003e#33269\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/f2f62675e19020fb6443f1477b4b1d93015a5927\"\u003ef2f62675e1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e ensure dates don't overflow on a small screen (\u003ca href=\"https://redirect.github.com/angular/components/pull/33281\"\u003e#33281\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/f1a435508ada291b580e20e628464f552288690d\"\u003ef1a435508a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e handle mixed sidenav and drawer (\u003ca href=\"https://redirect.github.com/angular/components/pull/33274\"\u003e#33274\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a4d92c5fcb7d163ec8dd180815175bbaa0a38491\"\u003ea4d92c5fcb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e more robust reset logic for inert attribute (\u003ca href=\"https://redirect.github.com/angular/components/pull/33257\"\u003e#33257\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.12 \u0026quot;plastic-moose\u0026quot; (2026-05-20)\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/da87be76464d76ec11ae922abd5f4c72c5b4ea3e\"\u003eda87be7646\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e ensure dates don't overflow on a small screen (\u003ca href=\"https://redirect.github.com/angular/components/pull/33281\"\u003e#33281\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-rc.0 \u0026quot;crystal lotion\u0026quot; (2026-05-13)\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/c3161985279bf49f9aae55b732fdd3b2872e1f7e\"\u003ec316198527\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e mark content as inert while open\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c2f1c5b035795079b155b9e60a290abe4d4c9537\"\u003ec2f1c5b035\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e query not resolving\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/84f2afd24933c8742662ee6d12a6f3f98f5dea9e\"\u003e84f2afd249\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove developer preview tag from aria (\u003ca href=\"https://redirect.github.com/angular/components/pull/33232\"\u003e#33232\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\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/7828452e964b62f058f83f0d97cf9daedf875b57\"\u003e\u003ccode\u003e7828452\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.13 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e43b7aacd86fb00e34e894d9093a8255e4201ec8\"\u003e\u003ccode\u003ee43b7aa\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.12 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/da87be76464d76ec11ae922abd5f4c72c5b4ea3e\"\u003e\u003ccode\u003eda87be7\u003c/code\u003e\u003c/a\u003e fix(material/datepicker): ensure dates don't overflow on a small screen (\u003ca href=\"https://redirect.github.com/angular/components/issues/33281\"\u003e#33281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e101874701ed790345f2af292cee81fff573a46e\"\u003e\u003ccode\u003ee101874\u003c/code\u003e\u003c/a\u003e docs(material/tooltip): fix tooltip-position-at-origin example overflow (\u003ca href=\"https://redirect.github.com/angular/components/issues/33218\"\u003e#33218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/1238d1573e706cbf0a2cabcc97e59d28a9499ecb\"\u003e\u003ccode\u003e1238d15\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.11 release\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.9...v21.2.13\"\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.2.11 to 21.2.14\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.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/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.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e0b7192f441\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.14/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.2.11 to 21.2.14\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.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/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.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e0b7192f441\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003ccode\u003e68282df\u003c/code\u003e\u003c/a\u003e fix(compiler): strip namespaced SVG script elements during template compilation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6652ec0115b20a6f8721137769afac30cd70f9a6\"\u003e\u003ccode\u003e6652ec0\u003c/code\u003e\u003c/a\u003e refactor(core): align namespaced attribute validation and security schema con...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/baf92da96ed73a0f4748edf05d3c0702cab219da\"\u003e\u003ccode\u003ebaf92da\u003c/code\u003e\u003c/a\u003e test: remove invalid css that was causing issues with the postcss parser\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003ccode\u003e1c6553e\u003c/code\u003e\u003c/a\u003e fix(core): disallow event attribute bindings in host bindings unconditionally\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.14/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.2.11 to 21.2.14\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/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/blob/main/CHANGELOG.md\"\u003e@​angular/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e0b7192f441\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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/1d6e71dd788ebda5d9bb9d3c560cc27bb503f44b\"\u003e\u003ccode\u003e1d6e71d\u003c/code\u003e\u003c/a\u003e docs: clarify ngDoCheck invocation behavior with OnPush strategy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003ccode\u003e49113ac\u003c/code\u003e\u003c/a\u003e fix(core): visit ICU expressions in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003ccode\u003e68282df\u003c/code\u003e\u003c/a\u003e fix(compiler): strip namespaced SVG script elements during template compilation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003ccode\u003ec0f5227\u003c/code\u003e\u003c/a\u003e fix(core): do not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003ccode\u003e0fb2724\u003c/code\u003e\u003c/a\u003e fix(core): reject script element as a dynamic component host\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6652ec0115b20a6f8721137769afac30cd70f9a6\"\u003e\u003ccode\u003e6652ec0\u003c/code\u003e\u003c/a\u003e refactor(core): align namespaced attribute validation and security schema con...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003ccode\u003e938a7f3\u003c/code\u003e\u003c/a\u003e fix(core): makes resource URL sanitizer lookup case-insensitive\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003ccode\u003e1c6553e\u003c/code\u003e\u003c/a\u003e fix(core): disallow event attribute bindings in host bindings unconditionally\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003ccode\u003e9e38ed7\u003c/code\u003e\u003c/a\u003e fix(core): sanitizer typings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003ccode\u003e3430251\u003c/code\u003e\u003c/a\u003e fix(core): i18n flags leaking on errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.14/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/elements` from 21.2.11 to 21.2.14\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/elements's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/blob/main/CHANGELOG.md\"\u003e@​angular/elements's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/t...\n\n_Description has been truncated_\n\n\u003c!-- CURSOR_SUMMARY --\u003e\n---\n\n\u003e [!NOTE]\n\u003e **Medium Risk**\n\u003e Patch-level Angular updates can change runtime security and template/host binding behavior; verify build, tests, and lint even though no app source changed.\n\u003e \n\u003e **Overview**\n\u003e This PR **only updates dependencies** in `app-components` (`package.json` and `package-lock.json`); there are **no application source changes**.\n\u003e \n\u003e **Runtime Angular** packages move from **21.2.11 → 21.2.14** (and `@angular/cdk` **21.2.9 → 21.2.13**), covering animations, common, compiler, core, elements, forms, platform-browser, platform-browser-dynamic, and router.\n\u003e \n\u003e **Tooling** bumps include `@angular-eslint/*` **21.3.1 → 21.4.0** and `@typescript-eslint/eslint-plugin` **8.59.2 → 8.60.0**; the lockfile also refreshes related transitive versions (e.g. Rollup, msgpackr, more `@typescript-eslint/*` at 8.60.0).\n\u003e \n\u003e Several devDependency pins in `package.json` are **unchanged** in this diff (e.g. `@angular/compiler-cli`, `@angular/cli`, `@angular-eslint/template-parser`, `@typescript-eslint/parser`), so the tree may still mix patch levels until a follow-up align.\n\u003e \n\u003e **Review focus:** run `npm ci`, `ng build`, `ng test`, and `ng lint` in `app-components`; upstream 21.2.x patches include security and binding/sanitizer fixes that can affect behavior without local code edits.\n\u003e \n\u003e \u003csup\u003eReviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 87753c54359befd1ea741db176e029e1dc1bd869. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).\u003c/sup\u003e\n\u003c!-- /CURSOR_SUMMARY --\u003e","html_url":"https://github.com/trimble-oss/modus-icons/pull/778","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/trimble-oss%2Fmodus-icons/issues/778","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/778/packages"},{"uuid":"4510660393","node_id":"PR_kwDOGe8x_M7evEoz","number":1297,"state":"open","title":"chore(deps-dev)(deps-dev): bump the development-dependencies group across 1 directory with 12 updates","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-05-24T05:57:47.000Z","updated_at":"2026-05-24T05:57:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)(deps-dev): bump","group_name":"development-dependencies","update_count":12,"packages":[{"name":"eslint-plugin-jest","old_version":"29.15.1","new_version":"29.15.2","repository_url":"https://github.com/jest-community/eslint-plugin-jest"},{"name":"jest","old_version":"30.3.0","new_version":"30.4.2","repository_url":"https://github.com/jestjs/jest"},{"name":"ts-jest","old_version":"29.4.6","new_version":"29.4.9","repository_url":"https://github.com/kulshekhar/ts-jest"},{"name":"@angular-devkit/architect","old_version":"0.2102.5","new_version":"0.2102.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/core","old_version":"21.2.5","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.5","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/language-service","old_version":"21.2.6","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"}],"path":null,"ecosystem":"npm"},"body":"Bumps the development-dependencies group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) | `29.15.1` | `29.15.2` |\n| [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) | `30.3.0` | `30.4.2` |\n| [ts-jest](https://github.com/kulshekhar/ts-jest) | `29.4.6` | `29.4.9` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.5` | `0.2102.11` |\n| [@angular-devkit/core](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.11` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.11` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.1` | `21.4.0` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.6` | `21.2.13` |\n\n\nUpdates `eslint-plugin-jest` from 29.15.1 to 29.15.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/releases\"\u003eeslint-plugin-jest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev29.15.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/compare/v29.15.1...v29.15.2\"\u003e29.15.2\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evalid-mock-module-path:\u003c/strong\u003e don't report virtual mocks (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1946\"\u003e#1946\u003c/a\u003e) (\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/a1916d16350344c1693384af34900055ec465e1c\"\u003ea1916d1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md\"\u003eeslint-plugin-jest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/compare/v29.15.1...v29.15.2\"\u003e29.15.2\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evalid-mock-module-path:\u003c/strong\u003e don't report virtual mocks (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1946\"\u003e#1946\u003c/a\u003e) (\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/a1916d16350344c1693384af34900055ec465e1c\"\u003ea1916d1\u003c/a\u003e)\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/jest-community/eslint-plugin-jest/commit/f14a941887e2b598053f757f91c10a5910ffffca\"\u003e\u003ccode\u003ef14a941\u003c/code\u003e\u003c/a\u003e chore(release): 29.15.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/a1916d16350344c1693384af34900055ec465e1c\"\u003e\u003ccode\u003ea1916d1\u003c/code\u003e\u003c/a\u003e fix(valid-mock-module-path): don't report virtual mocks (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1946\"\u003e#1946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/4a5278787449592d473ff4507170f6ff50b1b47f\"\u003e\u003ccode\u003e4a52787\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1958\"\u003e#1958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/285c6f6a665ffb77facb0e4db77a3e2c4c986070\"\u003e\u003ccode\u003e285c6f6\u003c/code\u003e\u003c/a\u003e ci: don't run smoketest on \u003ccode\u003etannerlinsley/react-table\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1959\"\u003e#1959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/1da0928392313ffa89339ed454aa31d1712f6875\"\u003e\u003ccode\u003e1da0928\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1956\"\u003e#1956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/8532d0e53abce0e80f092940e4575ed46ae6660a\"\u003e\u003ccode\u003e8532d0e\u003c/code\u003e\u003c/a\u003e docs(valid-expect): use valid alert syntax (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1954\"\u003e#1954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/03405ae827212348ab880929231d899300f659c2\"\u003e\u003ccode\u003e03405ae\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​schemastore/package\u003c/code\u003e to v1 (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1942\"\u003e#1942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/de0e154bd2d5966c3f2f15b4b3c8f0cd93b171ed\"\u003e\u003ccode\u003ede0e154\u003c/code\u003e\u003c/a\u003e chore(deps): update codecov/codecov-action action to v6 (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1952\"\u003e#1952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/d50f50c81af62caa4c73888939e20f4b874fdbe9\"\u003e\u003ccode\u003ed50f50c\u003c/code\u003e\u003c/a\u003e chore: add node v25 to CI (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1950\"\u003e#1950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/compare/v29.15.1...v29.15.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jest` from 30.3.0 to 30.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jestjs/jest/releases\"\u003ejest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev30.4.2\u003c/h2\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Fix named imports from CJS modules whose \u003ccode\u003emodule.exports\u003c/code\u003e is a function with own-property exports (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16150\"\u003e#16150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jestjs/jest/compare/v30.4.1...v30.4.2\"\u003ehttps://github.com/jestjs/jest/compare/v30.4.1...v30.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev30.4.1\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-runner, jest-schemas, jest-types]\u003c/code\u003e Allow custom runner configuration options via tuple format \u003ccode\u003e['runner-path', {options}]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Align CJS-from-ESM default export with Node: \u003ccode\u003emodule.exports\u003c/code\u003e is always the ESM default, \u003ccode\u003e__esModule\u003c/code\u003e unwrapping is no longer applied (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jestjs/jest/compare/v30.4.0...v30.4.1\"\u003ehttps://github.com/jestjs/jest/compare/v30.4.0...v30.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev30.4.0\u003c/h2\u003e\n\u003cp\u003eBig release! 😀\u003c/p\u003e\n\u003cp\u003eMain feature is a rewrite of our custom runtime in preparation for stabilisation of native support of ESM. As part of that work \u003ccode\u003erequire(esm)\u003c/code\u003e module is now supported on Node 24.9+ (still requires \u003ccode\u003e--experimental-vm-modules\u003c/code\u003e like before).\u003c/p\u003e\n\u003cp\u003eIn addition we now support fake timers for the recently released \u003ccode\u003eTemporal\u003c/code\u003e API in Node v26.\u003c/p\u003e\n\u003cp\u003eReact 19 is also supported properly in \u003ccode\u003epretty-format\u003c/code\u003e, meaning snapshots of React components now work like they should.\u003c/p\u003e\n\u003cp\u003eDue to all the changes, there might be regressions that snuck in. Please report them!\u003c/p\u003e\n\u003cp\u003eFull list of changes below\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[babel-jest]\u003c/code\u003e Support collecting coverage from \u003ccode\u003e.mts\u003c/code\u003e, \u003ccode\u003e.cts\u003c/code\u003e (and other) files (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15994\"\u003e#15994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2, jest-types]\u003c/code\u003e Add \u003ccode\u003e--collect-tests\u003c/code\u003e flag to discover and list tests without executing them (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16006\"\u003e#16006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-runner, jest-worker]\u003c/code\u003e Add \u003ccode\u003eworkerGracefulExitTimeout\u003c/code\u003e config option to control how long workers are given to exit before being force-killed (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15984\"\u003e#15984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Add support for \u003ccode\u003ejest.config.mts\u003c/code\u003e as a valid configuration file (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16005\"\u003e#16005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-reporters, jest-runner]\u003c/code\u003e \u003ccode\u003everbose\u003c/code\u003e and \u003ccode\u003esilent\u003c/code\u003e can now be set per-project; the project-level value overrides the global value for that project's tests (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16133\"\u003e#16133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept \u003ccode\u003eTemporal.Duration\u003c/code\u003e in \u003ccode\u003ejest.advanceTimersByTime()\u003c/code\u003e and \u003ccode\u003ejest.advanceTimersByTimeAsync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept \u003ccode\u003eTemporal.Instant\u003c/code\u003e and \u003ccode\u003eTemporal.ZonedDateTime\u003c/code\u003e in \u003ccode\u003ejest.setSystemTime()\u003c/code\u003e and \u003ccode\u003euseFakeTimers({now})\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Support faking \u003ccode\u003eTemporal.Now.*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16131\"\u003e#16131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-mock]\u003c/code\u003e Add \u003ccode\u003eclearMocksOnScope(scope)\u003c/code\u003e on \u003ccode\u003eModuleMocker\u003c/code\u003e for clearing every mock function exposed on a scope object (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16088\"\u003e#16088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-resolve]\u003c/code\u003e Add \u003ccode\u003ecanResolveSync()\u003c/code\u003e on \u003ccode\u003eResolver\u003c/code\u003e so callers can detect when a user-configured resolver only exports an \u003ccode\u003easync\u003c/code\u003e hook (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16064\"\u003e#16064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Use synchronous \u003ccode\u003eevaluate()\u003c/code\u003e for ES modules without top-level \u003ccode\u003eawait\u003c/code\u003e on Node versions that support it (v24.9+), and prefer the synchronous transform path when a sync transformer is configured (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Support \u003ccode\u003erequire()\u003c/code\u003e of ES modules on Node v24.9+ (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16074\"\u003e#16074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Validate TC39 import attributes (\u003ccode\u003ewith { type: 'json' }\u003c/code\u003e) on ESM imports (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16127\"\u003e#16127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/transform]\u003c/code\u003e Add \u003ccode\u003ecanTransformSync(filename)\u003c/code\u003e on \u003ccode\u003eScriptTransformer\u003c/code\u003e so callers can pick the sync vs async transform path (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-util]\u003c/code\u003e Add \u003ccode\u003eisError\u003c/code\u003e helper (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16076\"\u003e#16076\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/jestjs/jest/blob/main/CHANGELOG.md\"\u003ejest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e30.4.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Fix named imports from CJS modules whose \u003ccode\u003emodule.exports\u003c/code\u003e is a function with own-property exports (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16150\"\u003e#16150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e30.4.1\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-runner, jest-schemas, jest-types]\u003c/code\u003e Allow custom runner configuration options via tuple format \u003ccode\u003e['runner-path', {options}]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Align CJS-from-ESM default export with Node: \u003ccode\u003emodule.exports\u003c/code\u003e is always the ESM default, \u003ccode\u003e__esModule\u003c/code\u003e unwrapping is no longer applied (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e30.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[babel-jest]\u003c/code\u003e Support collecting coverage from \u003ccode\u003e.mts\u003c/code\u003e, \u003ccode\u003e.cts\u003c/code\u003e (and other) files (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15994\"\u003e#15994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2, jest-types]\u003c/code\u003e Add \u003ccode\u003e--collect-tests\u003c/code\u003e flag to discover and list tests without executing them (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16006\"\u003e#16006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-runner, jest-worker]\u003c/code\u003e Add \u003ccode\u003eworkerGracefulExitTimeout\u003c/code\u003e config option to control how long workers are given to exit before being force-killed (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15984\"\u003e#15984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Add support for \u003ccode\u003ejest.config.mts\u003c/code\u003e as a valid configuration file (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16005\"\u003e#16005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-reporters, jest-runner]\u003c/code\u003e \u003ccode\u003everbose\u003c/code\u003e and \u003ccode\u003esilent\u003c/code\u003e can now be set per-project; the project-level value overrides the global value for that project's tests (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16133\"\u003e#16133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept \u003ccode\u003eTemporal.Duration\u003c/code\u003e in \u003ccode\u003ejest.advanceTimersByTime()\u003c/code\u003e and \u003ccode\u003ejest.advanceTimersByTimeAsync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept \u003ccode\u003eTemporal.Instant\u003c/code\u003e and \u003ccode\u003eTemporal.ZonedDateTime\u003c/code\u003e in \u003ccode\u003ejest.setSystemTime()\u003c/code\u003e and \u003ccode\u003euseFakeTimers({now})\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Support faking \u003ccode\u003eTemporal.Now.*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16131\"\u003e#16131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-mock]\u003c/code\u003e Add \u003ccode\u003eclearMocksOnScope(scope)\u003c/code\u003e on \u003ccode\u003eModuleMocker\u003c/code\u003e for clearing every mock function exposed on a scope object (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16088\"\u003e#16088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-resolve]\u003c/code\u003e Add \u003ccode\u003ecanResolveSync()\u003c/code\u003e on \u003ccode\u003eResolver\u003c/code\u003e so callers can detect when a user-configured resolver only exports an \u003ccode\u003easync\u003c/code\u003e hook (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16064\"\u003e#16064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Use synchronous \u003ccode\u003eevaluate()\u003c/code\u003e for ES modules without top-level \u003ccode\u003eawait\u003c/code\u003e on Node versions that support it (v24.9+), and prefer the synchronous transform path when a sync transformer is configured (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Support \u003ccode\u003erequire()\u003c/code\u003e of ES modules on Node v24.9+ (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16074\"\u003e#16074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Validate TC39 import attributes (\u003ccode\u003ewith { type: 'json' }\u003c/code\u003e) on ESM imports (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16127\"\u003e#16127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/transform]\u003c/code\u003e Add \u003ccode\u003ecanTransformSync(filename)\u003c/code\u003e on \u003ccode\u003eScriptTransformer\u003c/code\u003e so callers can pick the sync vs async transform path (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-util]\u003c/code\u003e Add \u003ccode\u003eisError\u003c/code\u003e helper (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16076\"\u003e#16076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[pretty-format]\u003c/code\u003e Support React 19 (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16123\"\u003e#16123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[expect-utils]\u003c/code\u003e Fix \u003ccode\u003etoStrictEqual\u003c/code\u003e failing on \u003ccode\u003estructuredClone\u003c/code\u003e results due to cross-realm constructor mismatch (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15959\"\u003e#15959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/expect-utils]\u003c/code\u003e Prevent \u003ccode\u003etoMatchObject\u003c/code\u003e/subset matching from throwing when encountering exotic iterables (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15952\"\u003e#15952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[fake-timers]\u003c/code\u003e Convert \u003ccode\u003eDate\u003c/code\u003e to milliseconds before passing to \u003ccode\u003e@sinonjs/fake-timers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16029\"\u003e#16029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest]\u003c/code\u003e Export \u003ccode\u003eGlobalConfig\u003c/code\u003e and \u003ccode\u003eProjectConfig\u003c/code\u003e TypeScript types (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus]\u003c/code\u003e Prevent crash when \u003ccode\u003easyncError\u003c/code\u003e is undefined for non-Error throws (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16003\"\u003e#16003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-jasmine2]\u003c/code\u003e Include \u003ccode\u003eError.cause\u003c/code\u003e in JSON \u003ccode\u003efailureMessages\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15967\"\u003e#15967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Fix preset path resolution on Windows when the preset uses subpath \u003ccode\u003eexports\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15961\"\u003e#15961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Allow \u003ccode\u003ecollectCoverage\u003c/code\u003e and \u003ccode\u003ecoverageProvider\u003c/code\u003e in project config without a validation warning (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Project config validator now emits \u0026quot;is not supported in an individual project configuration\u0026quot; instead of \u0026quot;probably a typing mistake\u0026quot; for known global-only options (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-environment-node]\u003c/code\u003e Fix \u003ccode\u003e--localstorage-file\u003c/code\u003e warning on Node 25+ (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16086\"\u003e#16086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-reporters]\u003c/code\u003e Apply global coverage threshold to unmatched pattern files in addition to glob/path thresholds (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16137\"\u003e#16137\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jestjs/jest/commit/746f2a0f57c56e3bba555280f0587d40f3db95c0\"\u003e\u003ccode\u003e746f2a0\u003c/code\u003e\u003c/a\u003e v30.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jestjs/jest/commit/b3b4a09ed3005369dacc7466d1d2122797283785\"\u003e\u003ccode\u003eb3b4a09\u003c/code\u003e\u003c/a\u003e v30.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jestjs/jest/commit/5cbb21e0b3037edb42e503ec1a1ce80efad40c20\"\u003e\u003ccode\u003e5cbb21e\u003c/code\u003e\u003c/a\u003e v30.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jestjs/jest/commit/db7141a93cc85fab81cf9c25368e1f2b2c312286\"\u003e\u003ccode\u003edb7141a\u003c/code\u003e\u003c/a\u003e fix: allow \u003ccode\u003ecollectCoverage\u003c/code\u003e and \u003ccode\u003ecoverageProvider\u003c/code\u003e in project config (\u003ca href=\"https://github.com/jestjs/jest/tree/HEAD/packages/jest/issues/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jestjs/jest/commits/v30.4.2/packages/jest\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ts-jest` from 29.4.6 to 29.4.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kulshekhar/ts-jest/releases\"\u003ets-jest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev29.4.9\u003c/h2\u003e\n\u003cp\u003ePlease refer to \u003ca href=\"https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003ev29.4.8\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev29.4.7\u003c/h2\u003e\n\u003cp\u003ePlease refer to \u003ca href=\"https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\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/kulshekhar/ts-jest/blob/main/CHANGELOG.md\"\u003ets-jest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/compare/v29.4.8...v29.4.9\"\u003e29.4.9\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euse correct registry for npm OIDC trusted publishing (\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/f8a9cc9892\"\u003ef8a9cc9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/compare/v29.4.7...v29.4.8\"\u003e29.4.8\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ewrong published assets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/compare/v29.4.6...v29.4.7\"\u003e29.4.7\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esupport TypeScript v6 (\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/eda517d226389317d99572887d3c1aa93c81be87\"\u003eeda517d\u003c/a\u003e)\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/kulshekhar/ts-jest/commit/bac2e77231418c35cb9b9946d7d871c0ee2322a1\"\u003e\u003ccode\u003ebac2e77\u003c/code\u003e\u003c/a\u003e chore(release): bump version to 29.4.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/f8a9cc98924bd1846aac96d6c544e6626f031f81\"\u003e\u003ccode\u003ef8a9cc9\u003c/code\u003e\u003c/a\u003e fix: use correct registry for npm OIDC trusted publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/e2eec26aa127e284719b4754937d17bd57b13518\"\u003e\u003ccode\u003ee2eec26\u003c/code\u003e\u003c/a\u003e fix: npm permissions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/263f2ac73e4a0c4163f8766c3ba9d0a13ca78812\"\u003e\u003ccode\u003e263f2ac\u003c/code\u003e\u003c/a\u003e chore: remove npm auth token\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/5df0e45f409994b34cae7d22db60946a8158d975\"\u003e\u003ccode\u003e5df0e45\u003c/code\u003e\u003c/a\u003e OIDC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/f82c1444d4af0d9f27883510acc8178c18ee8f8a\"\u003e\u003ccode\u003ef82c144\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kulshekhar/ts-jest/issues/5250\"\u003e#5250\u003c/a\u003e from kulshekhar/copilot/bump-patch-version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/e6ec5aed410a803c2f972b3287cf233ce4c998f9\"\u003e\u003ccode\u003ee6ec5ae\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/62c3199a355d3ba483f0e976c868ddc6f20d53fe\"\u003e\u003ccode\u003e62c3199\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/052e751f124d059e1363b827f1709ed7607daded\"\u003e\u003ccode\u003e052e751\u003c/code\u003e\u003c/a\u003e Bump patch version to 29.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/f79e77b64f4a807605e277b1ea05f10abe9c94f0\"\u003e\u003ccode\u003ef79e77b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kulshekhar/ts-jest/issues/5249\"\u003e#5249\u003c/a\u003e from ext/feature/ts6-peer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kulshekhar/ts-jest/compare/v29.4.6...v29.4.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca href=\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new releaser for ts-jest since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-devkit/architect` from 0.2102.5 to 0.2102.11\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular-cli/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-devkit/core` from 21.2.5 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-cli/releases\"\u003e@​angular-devkit/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\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/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbd63b7a5-fix-green\" alt=\"fix - bbd63b7a5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erobustly parse npm manifest from array\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/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/eafe1a719-fix-green\" alt=\"fix - eafe1a719\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a116a80d-fix-green\" alt=\"fix - 7a116a80d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove stateful flag from URL_PARAMETER_REGEXP\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\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\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/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-05-13)\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/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003ebbd63b7a5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erobustly parse npm manifest from array\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/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003eeafe1a719\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e7a116a80d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove stateful flag from URL_PARAMETER_REGEXP\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.26 (2026-05-13)\u003c/h1\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/7cc1871ee50d123853ddf6bd89857b354d647462\"\u003e7cc1871ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\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.26 (2026-05-13)\u003c/h1\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/842fee0291b787b63fdabcaaac5680b05d395075\"\u003e842fee029\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\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.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\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/00e366320108b39e60e67d28d45e5bcc6a044546\"\u003e\u003ccode\u003e00e3663\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003e\u003ccode\u003eeafe1a7\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): allow all hosts in common engine rendering options to prev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e\u003ccode\u003e7a116a8\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): remove stateful flag from URL_PARAMETER_REGEXP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7705fb96a27965b20365b04c79f0e2f386dfd95\"\u003e\u003ccode\u003ea7705fb\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/453ed5b6bf8a18b37cfa099955f37b234ded6003\"\u003e\u003ccode\u003e453ed5b\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f0f9b2dad6d47d958bf98b52452bd8c944355951\"\u003e\u003ccode\u003ef0f9b2d\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): add validation and logging to npm manifest parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003e\u003ccode\u003ebbd63b7\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): robustly parse npm manifest from array\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.5...v21.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-devkit/schematics` from 21.2.5 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-cli/releases\"\u003e@​angular-devkit/schematics's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\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/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbd63b7a5-fix-green\" alt=\"fix - bbd63b7a5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erobustly parse npm manifest from array\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/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/eafe1a719-fix-green\" alt=\"fix - eafe1a719\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a116a80d-fix-green\" alt=\"fix - 7a116a80d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove stateful flag from URL_PARAMETER_REGEXP\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\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\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/schematics's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-05-13)\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/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003ebbd63b7a5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erobustly parse npm manifest from array\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/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003eeafe1a719\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e7a116a80d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove stateful flag from URL_PARAMETER_REGEXP\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.26 (2026-05-13)\u003c/h1\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/7cc1871ee50d123853ddf6bd89857b354d647462\"\u003e7cc1871ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\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.26 (2026-05-13)\u003c/h1\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/842fee0291b787b63fdabcaaac5680b05d395075\"\u003e842fee029\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\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.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\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/00e366320108b39e60e67d28d45e5bcc6a044546\"\u003e\u003ccode\u003e00e3663\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003e\u003ccode\u003eeafe1a7\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): allow all hosts in common engine rendering options to prev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e\u003ccode\u003e7a116a8\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): remove stateful flag from URL_PARAMETER_REGEXP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7705fb96a27965b20365b04c79f0e2f386dfd95\"\u003e\u003ccode\u003ea7705fb\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/453ed5b6bf8a18b37cfa099955f37b234ded6003\"\u003e\u003ccode\u003e453ed5b\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f0f9b2dad6d47d958bf98b52452bd8c944355951\"\u003e\u003ccode\u003ef0f9b2d\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): add validation and logging to npm manifest parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003e\u003ccode\u003ebbd63b7\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): robustly parse npm manifest from array\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.5...v21.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/builder` from 21.3.1 to 21.4.0\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\"\u003e@​angular-eslint/builder's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.4.0\u003c/h2\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.57.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.8 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2996\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.58.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2984\"\u003e#2984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2999\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.9 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.59.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.11 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3019\"\u003e#3019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.3.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq]  could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema with upstream \u003ccode\u003e@​schematics/angular\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3027\"\u003e#3027\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\u003eFinn Bayer\u003c/li\u003e\n\u003cli\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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\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-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md\"\u003e@​angular-eslint/builder's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFinn Bayer\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-eslint/angular-eslint/commit/0a774c724574c3c35acf9ba432f60269e7418938\"\u003e\u003ccode\u003e0a774c7\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/cea1779a056ce7e16b80b017630b625e375e6ba6\"\u003e\u003ccode\u003ecea1779\u003c/code\u003e\u003c/a\u003e feat(builder): add apply-suppressions option (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/28434e76fde2d26e3c009749dd4cc20a9604fa15\"\u003e\u003ccode\u003e28434e7\u003c/code\u003e\u003c/a\u003e chore: update swc monorepo (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2987\"\u003e#2987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.4.0/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 21.3.1 to 21.4.0\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\"\u003e@​angular-eslint/eslint-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.4.0\u003c/h2\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.57.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.8 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2996\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.58.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2984\"\u003e#2984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2999\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.9 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.59.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.11 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3019\"\u003e#3019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.3.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq]  could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema with upstream \u003ccode\u003e@​schematics/angular\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3027\"\u003e#3027\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\u003eFinn Bayer\u003c/li\u003e\n\u003cli\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e@​angular-eslint/eslint-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\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\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-eslint/angular-eslint/commit/0a774c724574c3c35acf9ba432f60269e7418938\"\u003e\u003ccode\u003e0a774c7\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/ad2b76e4059c9d1e1ddbcf7f40c120f918d8ee59\"\u003e\u003ccode\u003ead2b76e\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): append fixes in prefer-on-push-change-detection, use-inje...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.4.0/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 21.3.1 to 21.4.0\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\"\u003e@​angular-eslint/eslint-plugin-template's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.4.0\u003c/h2\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.57.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.8 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2996\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.58.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2984\"\u003e#2984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2999\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.9 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.59.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.11 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3019\"\u003e#3019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.3.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq]  could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema with upstream \u003ccode\u003e@​schematics/angular\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3027\"\u003e#3027\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\u003eFinn Bayer\u003c/li\u003e\n\u003cli\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md\"\u003e@​angular-eslint/eslint-plugin-template's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq] could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\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\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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-eslint/angular-eslint/commit/0a774c724574c3c35acf9ba432f60269e7418938\"\u003e\u003ccode\u003e0a774c7\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bfd04b2426611e2acab48e776d99a6546d00cf42\"\u003e\u003ccode\u003ebfd04b2\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [prefer-template-literal] do not check inline templates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/d8a063c15cf7db8c1c4a2f19e689805a9c80e0be\"\u003e\u003ccode\u003ed8a063c\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [eqeqeq]  could not destructure null (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/24373da714b8392cbb4d1c7af0dde78735e42604\"\u003e\u003ccode\u003e24373da\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [no-non-null-assertion] report nested arrays (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bf94ba7cf1fca8465053d05d72322cc1440e0d38\"\u003e\u003ccode\u003ebf94ba7\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin-template): [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (#...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.4.0/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 21.3.1 to 21.4.0\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\"\u003e@​angular-eslint/schematics's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.4.0\u003c/h2\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.57.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.8 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2996\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.58.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2984\"\u003e#2984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2999\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.9 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.59.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.11 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3019\"\u003e#3019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.3.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq]  could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema with upstream \u003ccode\u003e@​schematics/angular\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3027\"\u003e#3027\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\u003eFinn Bayer\u003c/li\u003e\n\u003cli\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e@​angular-eslint/schematics's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema ...\n\n_Description has been truncated_","html_url":"https://github.com/b310-digital/teammapper/pull/1297","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/b310-digital%2Fteammapper/issues/1297","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1297/packages"},{"uuid":"4390390477","node_id":"PR_kwDOSVbML87Ytwed","number":8,"state":"open","title":"mgr/dashboard: bump @angular-eslint/schematics from 18.4.0 to 21.3.1 in /src/pybind/mgr/dashboard/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-06T09:52:39.000Z","updated_at":"2026-05-06T09:52:40.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"mgr/dashboard","packages":[{"name":"@angular-eslint/schematics","old_version":"18.4.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":"/src/pybind/mgr/dashboard/frontend","ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 18.4.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\"\u003e@​angular-eslint/schematics'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/schematics/CHANGELOG.md\"\u003e@​angular-eslint/schematics'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 schematics 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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca href=\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=18.4.0\u0026new-version=21.3.1)](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/sunbines/tentacle/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunbines%2Ftentacle/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"},{"uuid":"4304070484","node_id":"PR_kwDOHn-f-c7UX2t2","number":2922,"state":"closed","title":"Bump picomatch, @angular-eslint/builder and @angular-eslint/schematics in /alcs-frontend","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-01T20:39:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-21T16:47:45.000Z","updated_at":"2026-05-01T20:39:49.000Z","time_to_close":877923,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"picomatch, @angular-eslint/builder"},{"name":"@angular-eslint/schematics","repository_url":"https://github.com/angular-eslint/angular-eslint","old_version":"18.4.3","new_version":"21.3.1"}],"path":"/alcs-frontend","ecosystem":"npm"},"body":"Bumps [picomatch](https://github.com/micromatch/picomatch) to 4.0.4 and updates ancestor dependencies [picomatch](https://github.com/micromatch/picomatch), [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) and [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics). These dependencies need to be updated together.\n\nUpdates `picomatch` from 4.0.2 to 4.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/micromatch/picomatch/releases\"\u003epicomatch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.4\u003c/h2\u003e\n\u003cp\u003eThis is a security release fixing several security relevant issues.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/micromatch/picomatch/security/advisories/GHSA-c2c7-rcm5-vvqj\"\u003eCVE-2026-33671\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/micromatch/picomatch/security/advisories/GHSA-3v7f-55p6-f55p\"\u003eCVE-2026-33672\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4\"\u003ehttps://github.com/micromatch/picomatch/compare/4.0.3...4.0.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: exception when glob pattern contains \u003ccode\u003econstructor\u003c/code\u003e by \u003ca href=\"https://github.com/Jason3S\"\u003e\u003ccode\u003e@​Jason3S\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/micromatch/picomatch/pull/144\"\u003emicromatch/picomatch#144\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Jason3S\"\u003e\u003ccode\u003e@​Jason3S\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/micromatch/picomatch/pull/144\"\u003emicromatch/picomatch#144\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/micromatch/picomatch/compare/4.0.2...4.0.3\"\u003ehttps://github.com/micromatch/picomatch/compare/4.0.2...4.0.3\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/micromatch/picomatch/commit/e5474fc1a4d7991870058170407dda8a42be5334\"\u003e\u003ccode\u003ee5474fc\u003c/code\u003e\u003c/a\u003e Publish 4.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/4516eb521f13a46b2fe1a1d2c9ef6b20ddc0e903\"\u003e\u003ccode\u003e4516eb5\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/5eceecd27543b8e056b9307d69e105ea03618a7d\"\u003e\u003ccode\u003e5eceecd\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/0db7dd70651ca7c8265601c0442a996ed32e3238\"\u003e\u003ccode\u003e0db7dd7\u003c/code\u003e\u003c/a\u003e Run benchmark again against latest minimatch version (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/95003777eb1c60dec09495a8231fa2ba4054d76a\"\u003e\u003ccode\u003e9500377\u003c/code\u003e\u003c/a\u003e docs: clarify what brace expansion syntax is and isn't supported (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/2661f23eca86c8b4a2b14815b9b2b3b74bd5a171\"\u003e\u003ccode\u003e2661f23\u003c/code\u003e\u003c/a\u003e fix typo in globstars.js test name (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/138\"\u003e#138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/1798b07e9df59500b9cf567294d44d559032f4c7\"\u003e\u003ccode\u003e1798b07\u003c/code\u003e\u003c/a\u003e docs: fix \u003ccode\u003emakeRe\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/9d76bc57a03b7f57cc4ca516c8071daf632bafd8\"\u003e\u003ccode\u003e9d76bc5\u003c/code\u003e\u003c/a\u003e chore: undocument removed options (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/146\"\u003e#146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/e4d718bbfb47e4f030ab2612b5b04a9297fe272d\"\u003e\u003ccode\u003ee4d718b\u003c/code\u003e\u003c/a\u003e Remove unused time-require (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/38dffeb16221cc8eb8981524fb6895dd2aaaba76\"\u003e\u003ccode\u003e38dffeb\u003c/code\u003e\u003c/a\u003e chore(deps): pin dependencies (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/micromatch/picomatch/compare/4.0.2...4.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/builder` from 18.4.3 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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ \u003cstrong\u003ebuilder:\u003c/strong\u003e align formatter invocation with eslint CLI by always passing all files, even if quiet (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bceaa80e\"\u003ebceaa80e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ \u003cstrong\u003ebuilder:\u003c/strong\u003e align formatter invocation with eslint CLI by always passing all files, even if quiet (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bceaa80e\"\u003ebceaa80e\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\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/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\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/5c214854f897cb698563f53db6b9bddfb23e4d8e\"\u003e\u003ccode\u003e5c21485\u003c/code\u003e\u003c/a\u003e chore(builder): change builder tests to be cross-platform (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2905\"\u003e#2905\u003c/a\u003e)\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/builder/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca href=\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new releaser for \u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 18.4.3 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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca href=\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\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 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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/bcgov/alcs/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/bcgov/alcs/pull/2922","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Falcs/issues/2922","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2922/packages"},{"uuid":"4244668409","node_id":"PR_kwDOBiCNks7RqnMk","number":1411,"state":"open","title":"Bump the angular group with 19 updates","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-11T13:26:12.000Z","updated_at":"2026-04-11T13:27:16.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"angular","update_count":19,"packages":[{"name":"@angular/animations","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular-eslint/builder","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"21.2.5","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular group with 19 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.6` | `21.2.8` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.4` | `21.2.6` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.6` | `21.2.8` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.6` | `21.2.8` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.6` | `21.2.8` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.6` | `21.2.8` |\n| [@angular/material](https://github.com/angular/components) | `21.2.4` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.6` | `21.2.8` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.6` | `21.2.8` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.6` | `21.2.8` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `20.1.1` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.7` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.6` | `21.2.8` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.6` | `21.2.8` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n\nUpdates `@angular/animations` from 21.2.6 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\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/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\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.2.4 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\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/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\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/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.2.4...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.2.6 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\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/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\u003eSee full diff 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.2.6 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\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/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\u003eSee full diff 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.2.6 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\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/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.2.6 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\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/forms/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/forms/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/forms/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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/forms\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/b0dc2fbfcb909c558c7dcff89c2fe47c89878991\"\u003e\u003ccode\u003eb0dc2fb\u003c/code\u003e\u003c/a\u003e docs(forms): clarify disabled FormArray value behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/895c576d494111f819e8a790d3a0695b6b9f8b4b\"\u003e\u003ccode\u003e895c576\u003c/code\u003e\u003c/a\u003e refactor(forms): use strict equality for pending status getter\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/material` from 21.2.4 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/compon...\n\n_Description has been truncated_","html_url":"https://github.com/SubJunk/TimelineTools/pull/1411","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SubJunk%2FTimelineTools/issues/1411","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1411/packages"},{"uuid":"4214435100","node_id":"PR_kwDOC9Jy-M7QVdyF","number":703,"state":"open","title":"build(deps-dev): bump @angular-eslint/schematics from 21.2.0 to 21.3.1","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-06T22:42:38.000Z","updated_at":"2026-04-06T22:43:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"@angular-eslint/schematics","old_version":"21.2.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 21.2.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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\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-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/schematics/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\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=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=21.2.0\u0026new-version=21.3.1)](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/703","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site/issues/703","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/703/packages"},{"uuid":"4208575827","node_id":"PR_kwDORAWCRc7QFAtQ","number":109,"state":"open","title":"chore(deps): Bump the angular group in /src/portal with 17 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-05T21:06:26.000Z","updated_at":"2026-04-07T22:02:26.839Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"angular","update_count":17,"packages":[{"name":"@angular/animations","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/common","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/localize","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular-devkit/build-angular","old_version":"16.2.16","new_version":"21.2.6","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"16.2.16","new_version":"21.2.6","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"}],"path":"/src/portal","ecosystem":"npm"},"body":"Bumps the angular group in /src/portal with 17 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `16.2.12` | `21.2.7` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `16.2.12` | `21.2.7` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `16.2.12` | `21.2.7` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `16.2.12` | `21.2.7` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `16.2.12` | `21.2.7` |\n| [@angular/localize](https://github.com/angular/angular) | `16.2.12` | `21.2.7` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `16.2.12` | `21.2.7` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `16.2.12` | `21.2.7` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `16.2.12` | `21.2.7` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `16.2.16` | `21.2.6` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `16.1.2` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `16.1.2` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `16.1.2` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `16.1.2` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `16.1.2` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `16.2.16` | `21.2.6` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `16.2.12` | `21.2.7` |\n\nUpdates `@angular/animations` from 16.2.12 to 21.2.7\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.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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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.7/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 16.2.12 to 21.2.7\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.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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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 16.2.12 to 21.2.7\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.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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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 16.2.12 to 21.2.7\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.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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003ccode\u003eb682c62\u003c/code\u003e\u003c/a\u003e fix(core): treat \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/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/core/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003ccode\u003e8fd896e\u003c/code\u003e\u003c/a\u003e fix(core): resolve component import by exact specifier in route lazy-loading ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4b2008d0f2455cab7503b3a0349feecbff3b3b5a\"\u003e\u003ccode\u003e4b2008d\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/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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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 16.2.12 to 21.2.7\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.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/forms/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/forms/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/forms/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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/angular/commit/895c576d494111f819e8a790d3a0695b6b9f8b4b\"\u003e\u003ccode\u003e895c576\u003c/code\u003e\u003c/a\u003e refactor(forms): use strict equality for pending status getter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b658accf1f99a240de19090350bd6d3a9620735a\"\u003e\u003ccode\u003eb658acc\u003c/code\u003e\u003c/a\u003e docs: fix js doc of signal forms ignoreValidators option.\u003c/li\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/4a9b715b3abd3e51184937f764376883d6bb98a1\"\u003e\u003ccode\u003e4a9b715\u003c/code\u003e\u003c/a\u003e test(forms): cover transformedValue without FormField context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003ccode\u003e670d166\u003c/code\u003e\u003c/a\u003e feat(forms): add 'blur' option to debounce rule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23cb9a4291dc7ee0db3a78416b5ca2b51cfad1ac\"\u003e\u003ccode\u003e23cb9a4\u003c/code\u003e\u003c/a\u003e refactor(forms): address feedback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0a863ba03f5eb83f383f647b7015bc3640072a1d\"\u003e\u003ccode\u003e0a863ba\u003c/code\u003e\u003c/a\u003e refactor(forms): hide adapter in public options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe7b26e403febfe2662828945d41bc4567cbcc8b\"\u003e\u003ccode\u003efe7b26e\u003c/code\u003e\u003c/a\u003e docs(forms): transformedValue parse error wiring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/bdfb60f3e33065e047183dc1890c36e527e2b304\"\u003e\u003ccode\u003ebdfb60f\u003c/code\u003e\u003c/a\u003e fix(forms): use consistent error format returned from parse\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/631f60d1f9be72cb68330308a6ff18cc195babb8\"\u003e\u003ccode\u003e631f60d\u003c/code\u003e\u003c/a\u003e fix(forms): preserve parse errors when parse returns value\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/localize` from 16.2.12 to 21.2.7\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/localize\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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://redirect.github.com/angular/angular/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/...\n\n_Description has been truncated_","html_url":"https://github.com/container-registry/harbor-next/pull/109","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/container-registry%2Fharbor-next/issues/109","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/109/packages"},{"uuid":"4204937837","node_id":"PR_kwDOBiCNks7P9TT8","number":1404,"state":"open","title":"Bump the angular group across 1 directory with 20 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-04T13:26:34.000Z","updated_at":"2026-04-04T13:28:20.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"angular","update_count":20,"packages":[{"name":"@angular/animations","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.4","new_version":"21.2.5","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.2.4","new_version":"21.2.5","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular-devkit/build-angular","old_version":"21.2.5","new_version":"21.2.6","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"21.2.5","new_version":"21.2.6","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular group with 20 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.6` | `21.2.7` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.4` | `21.2.5` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.6` | `21.2.7` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.6` | `21.2.7` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.6` | `21.2.7` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.6` | `21.2.7` |\n| [@angular/material](https://github.com/angular/components) | `21.2.4` | `21.2.5` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.6` | `21.2.7` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.6` | `21.2.7` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.6` | `21.2.7` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.6` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `20.1.1` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.6` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.6` | `21.2.7` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.6` | `21.2.7` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n\n\nUpdates `@angular/animations` from 21.2.6 to 21.2.7\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.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\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/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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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.2.4 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/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.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\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/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.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\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/b3f60001228f8c92c96256ed5025acef828cb2dc\"\u003e\u003ccode\u003eb3f6000\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33015\"\u003e#33015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003ccode\u003e8a5ed09\u003c/code\u003e\u003c/a\u003e fix(material/tooltip): allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/7f04529c759f9e43fffb59d8daa8b1cb5a0a1e51\"\u003e\u003ccode\u003e7f04529\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32990\"\u003e#32990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ec90218b8fd2720bcf0baa79e6bf6d1473d5a053\"\u003e\u003ccode\u003eec90218\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32989\"\u003e#32989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003ccode\u003e895908a\u003c/code\u003e\u003c/a\u003e fix(material/sidenav): not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33\"\u003e#33\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003ccode\u003e475a8aa\u003c/code\u003e\u003c/a\u003e fix(material/slider): not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003ccode\u003e42e1055\u003c/code\u003e\u003c/a\u003e fix(cdk/stepper): linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e444cc41a069f66581fcb2f7dcc728fc59ef2892\"\u003e\u003ccode\u003ee444cc4\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32998\"\u003e#32998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.4...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/common` from 21.2.6 to 21.2.7\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.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\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/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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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.2.6 to 21.2.7\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.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\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/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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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.2.6 to 21.2.7\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.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\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/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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003ccode\u003eb682c62\u003c/code\u003e\u003c/a\u003e fix(core): treat \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/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/core/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003ccode\u003e8fd896e\u003c/code\u003e\u003c/a\u003e fix(core): resolve component import by exact specifier in route lazy-loading ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4b2008d0f2455cab7503b3a0349feecbff3b3b5a\"\u003e\u003ccode\u003e4b2008d\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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.2.6 to 21.2.7\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.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/forms/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/forms/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/forms/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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/angular/commit/895c576d494111f819e8a790d3a0695b6b9f8b4b\"\u003e\u003ccode\u003e895c576\u003c/code\u003e\u003c/a\u003e refactor(forms): use strict equality for pending status getter\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/material` from 21.2.4 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/components/releases\"\u003e\u003ccode\u003e@​angular/material\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\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\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/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/material\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/b3f60001228f8c92c96256ed5025acef828cb2dc\"\u003e\u003ccode\u003eb3f6000\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33015\"\u003e#33015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003ccode\u003e8a5ed09\u003c/code\u003e\u003c/a\u003e fix(material/tooltip): allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/7f04529c759f9e43fffb59d8daa8b1cb5a0a1e51\"\u003e\u003ccode\u003e7f04529\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32990\"\u003e#32990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ec90218b8fd2720bcf0baa79e6bf6d1473d5a053\"\u003e\u003ccode\u003eec90218\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32989\"\u003e#32989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003ccode\u003e895908a\u003c/code\u003e\u003c/a\u003e fix(material/sidenav): not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33\"\u003e#33\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003ccode\u003e475a8aa\u003c/code\u003e\u003c/a\u003e fix(material/slider): not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003ccode\u003e42e1055\u003c/code\u003e\u003c/a\u003e fix(cdk/stepper): linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e444cc41a069f66581fcb2f7dcc728fc59ef2892\"\u003e\u003ccode\u003ee444cc4\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32998\"\u003e#32998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.4...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/platform-browser` from 21.2.6 to 21.2.7\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/platform-browser\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/platform-browser/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/platform-browser/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/platform-browser/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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/platform-browser\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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\u003eDescriptio...\n\n_Description has been truncated_","html_url":"https://github.com/SubJunk/TimelineTools/pull/1404","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SubJunk%2FTimelineTools/issues/1404","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1404/packages"},{"uuid":"4190751338","node_id":"PR_kwDOG1Zs187Paq-R","number":12491,"state":"open","title":"Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["non-trivial","frontend","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-02T00:58:04.000Z","updated_at":"2026-05-02T06:00:24.140Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"frontend-angular-dependencies","update_count":20,"packages":[{"name":"@angular/cdk","old_version":"21.2.2","new_version":"21.2.4","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/localize","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"ngx-cookie-service","old_version":"21.1.0","new_version":"21.3.1","repository_url":"https://github.com/stevermeister/ngx-cookie-service"},{"name":"@angular-devkit/core","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/build","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"}],"path":null,"ecosystem":"npm"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the frontend-angular-dependencies group with 20 updates in the /src-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.2` | `21.2.4` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.6` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.6` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.6` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.6` |\n| [@angular/localize](https://github.com/angular/angular) | `21.2.4` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.6` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.6` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.6` |\n| [ngx-cookie-service](https://github.com/stevermeister/ngx-cookie-service) | `21.1.0` | `21.3.1` |\n| [@angular-devkit/core](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.3` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.3` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.0` | `21.3.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.3` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.3` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.6` |\n\n\nUpdates `@angular/cdk` from 21.2.2 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\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/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.2.2...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.2.4 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\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/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\u003eSee full diff 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.2.4 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\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/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\u003eSee full diff 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.2.4 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\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/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.2.4 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\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/forms\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/b658accf1f99a240de19090350bd6d3a9620735a\"\u003e\u003ccode\u003eb658acc\u003c/code\u003e\u003c/a\u003e docs: fix js doc of signal forms ignoreValidators option.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/localize` from 21.2.4 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/localize\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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/localize\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/d8239c7836638f3e32095ff67b3943f88e5af616\"\u003e\u003ccode\u003ed8239c7\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/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/dbb15ebab2956d14238849384af95d6bd7ca3435\"\u003e\u003ccode\u003edbb15eb\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/commit/a6c49e0ea9c5919828e0ff3e1f01d62dee749fb9\"\u003e\u003ccode\u003ea6c49e0\u003c/code\u003e\u003c/a\u003e refactor(language-service): Export template target from API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c12339ab86243b76a2de24d0c5e9cab648f6fcf\"\u003e\u003ccode\u003e2c12339\u003c/code\u003e\u003c/a\u003e docs(forms): replace \u003ccode\u003erxResource\u003c/code\u003e \u003ccode\u003erequest\u003c/code\u003e w/ \u003ccode\u003eparams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a3048f231cbcca4be6cfa8c94aed5b20a3c6bd71\"\u003e\u003ccode\u003ea3048f2\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/ae2f2497d39a9920aef4ab2ef343007eaa40c1d4\"\u003e\u003ccode\u003eae2f249\u003c/code\u003e\u003c/a\u003e docs: reword allowedHosts security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c7d3b570459131b91949920f0f8765aab1f47ce\"\u003e\u003ccode\u003e2c7d3b5\u003c/code\u003e\u003c/a\u003e build: re-sync file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd21218177d253d54fa388fc024225af09d60f1\"\u003e\u003ccode\u003e6bd2121\u003c/code\u003e\u003c/a\u003e docs: fix incorrect getHarnesses() method to getAllHarnesses and broken link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e8c047bd8df877e2178a4ac027eff2bff93bec75\"\u003e\u003ccode\u003ee8c047b\u003c/code\u003e\u003c/a\u003e docs: update defer section to Markdown and fix absolute URL to relative in adev\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/compare/v21.2.4...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/platform-browser` from 21.2.4 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/platform-browser\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\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12491","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12491","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12491/packages"},{"uuid":"4161953626","node_id":"PR_kwDORtMf787OUrsJ","number":21,"state":"closed","title":"chore(deps): Bump the angular group across 1 directory with 19 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-06T03:36:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-28T23:28:34.000Z","updated_at":"2026-04-06T03:37:01.000Z","time_to_close":706105,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"angular","update_count":19,"packages":[{"name":"@angular/common","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@ngrx/effects","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@ngrx/entity","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@ngrx/router-store","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@ngrx/store","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@ngrx/store-devtools","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@angular-eslint/builder","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"19.2.23","new_version":"21.2.5","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular group with 19 updates in the /frontend/angular directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `19.2.20` | `21.2.6` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `19.2.20` | `21.2.6` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `19.2.20` | `21.2.6` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `19.2.20` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `19.2.20` | `21.2.6` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `19.2.20` | `21.2.6` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `19.2.20` | `21.2.6` |\n| [@ngrx/effects](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@ngrx/entity](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@ngrx/router-store](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@ngrx/store](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@ngrx/store-devtools](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `19.8.1` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `19.2.23` | `21.2.5` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `19.2.20` | `21.2.6` |\n\n\nUpdates `@angular/common` from 19.2.20 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 19.2.20 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 19.2.20 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 19.2.20 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\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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/forms\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/b658accf1f99a240de19090350bd6d3a9620735a\"\u003e\u003ccode\u003eb658acc\u003c/code\u003e\u003c/a\u003e docs: fix js doc of signal forms ignoreValidators option.\u003c/li\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/4a9b715b3abd3e51184937f764376883d6bb98a1\"\u003e\u003ccode\u003e4a9b715\u003c/code\u003e\u003c/a\u003e test(forms): cover transformedValue without FormField context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003ccode\u003e670d166\u003c/code\u003e\u003c/a\u003e feat(forms): add 'blur' option to debounce rule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23cb9a4291dc7ee0db3a78416b5ca2b51cfad1ac\"\u003e\u003ccode\u003e23cb9a4\u003c/code\u003e\u003c/a\u003e refactor(forms): address feedback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0a863ba03f5eb83f383f647b7015bc3640072a1d\"\u003e\u003ccode\u003e0a863ba\u003c/code\u003e\u003c/a\u003e refactor(forms): hide adapter in public options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe7b26e403febfe2662828945d41bc4567cbcc8b\"\u003e\u003ccode\u003efe7b26e\u003c/code\u003e\u003c/a\u003e docs(forms): transformedValue parse error wiring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/bdfb60f3e33065e047183dc1890c36e527e2b304\"\u003e\u003ccode\u003ebdfb60f\u003c/code\u003e\u003c/a\u003e fix(forms): use consistent error format returned from parse\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/631f60d1f9be72cb68330308a6ff18cc195babb8\"\u003e\u003ccode\u003e631f60d\u003c/code\u003e\u003c/a\u003e fix(forms): preserve parse errors when parse returns value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/567f292e8e0f9d2b5ddebadfa1c6d6dd6c456f39\"\u003e\u003ccode\u003e567f292\u003c/code\u003e\u003c/a\u003e fix(forms): support custom controls as host directives\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser` from 19.2.20 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/platform-browser\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/platform-browser\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/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/platform-browser/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/platform-browser/issues/67002\"\u003e#67002\u003c/a\u003e)\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/85122cb12d30141aa3abb997c4b3ee31713ec07b\"\u003e\u003ccode\u003e85122cb\u003c/code\u003e\u003c/a\u003e docs: update \u003ccode\u003ebootstrapApplication\u003c/code\u003e docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f4469ad583a97c39843309270095c55f0a758692\"\u003e\u003ccode\u003ef4469ad\u003c/code\u003e\u003c/a\u003e refactor(core): update error message links to versioned docs (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/platform-browser/issues/66374\"\u003e#66374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/99ad18a4ee82ecc5524106d1d403ccfa9bae2304\"\u003e\u003ccode\u003e99ad18a\u003c/code\u003e\u003c/a\u003e feat(core): Add stability debugging utility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6270bba056cfaadb3fe0b2bf3b17036bdc28b90e\"\u003e\u003ccode\u003e6270bba\u003c/code\u003e\u003c/a\u003e ci: reformat files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2ccdf50fba9536d931988098f6d4f5ebb52588f9\"\u003e\u003ccode\u003e2ccdf50\u003c/code\u003e\u003c/a\u003e refactor(platform-browser): remove unused \u003ccode\u003eplatformIsServer\u003c/code\u003e  flag from renderer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4f584cf42235c94bb8389fa55bc634e23d7b010\"\u003e\u003ccode\u003eb4f584c\u003c/code\u003e\u003c/a\u003e fix(core): return \u003ccode\u003eStaticProvider\u003c/code\u003e for \u003ccode\u003eprovidePlatformInitializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/96b79fc393855777c69e817a5bddbc295af4806b\"\u003e\u003ccode\u003e96b79fc\u003c/code\u003e\u003c/a\u003e refactor(core): correct all \u003ccode\u003etypeof ngDevMode\u003c/code\u003e comparison patterns introduced...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/platform-browser\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser-dynamic` from 19.2.20 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/platform-browser-dynamic\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\u003eensur...\n\n_Description has been truncated_","html_url":"https://github.com/MynorXico/racephotos/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MynorXico%2Fracephotos/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"},{"uuid":"4161895590","node_id":"PR_kwDORtMf787OUhpp","number":15,"state":"open","title":"chore(deps): Bump the angular group in /frontend/angular with 14 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-03-28T22:55:43.000Z","updated_at":"2026-03-28T22:55:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"angular","update_count":14,"packages":[{"name":"@angular/common","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular-eslint/builder","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"19.2.23","new_version":"21.2.5","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"}],"path":"/frontend/angular","ecosystem":"npm"},"body":"Bumps the angular group in /frontend/angular with 14 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `19.2.20` | `21.2.6` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `19.2.20` | `21.2.6` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `19.2.20` | `21.2.6` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `19.2.20` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `19.2.20` | `21.2.6` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `19.2.20` | `21.2.6` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `19.2.20` | `21.2.6` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `19.8.1` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `19.2.23` | `21.2.5` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `19.2.20` | `21.2.6` |\n\nUpdates `@angular/common` from 19.2.20 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 19.2.20 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 19.2.20 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 19.2.20 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\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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/forms\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/b658accf1f99a240de19090350bd6d3a9620735a\"\u003e\u003ccode\u003eb658acc\u003c/code\u003e\u003c/a\u003e docs: fix js doc of signal forms ignoreValidators option.\u003c/li\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/4a9b715b3abd3e51184937f764376883d6bb98a1\"\u003e\u003ccode\u003e4a9b715\u003c/code\u003e\u003c/a\u003e test(forms): cover transformedValue without FormField context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003ccode\u003e670d166\u003c/code\u003e\u003c/a\u003e feat(forms): add 'blur' option to debounce rule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23cb9a4291dc7ee0db3a78416b5ca2b51cfad1ac\"\u003e\u003ccode\u003e23cb9a4\u003c/code\u003e\u003c/a\u003e refactor(forms): address feedback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0a863ba03f5eb83f383f647b7015bc3640072a1d\"\u003e\u003ccode\u003e0a863ba\u003c/code\u003e\u003c/a\u003e refactor(forms): hide adapter in public options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe7b26e403febfe2662828945d41bc4567cbcc8b\"\u003e\u003ccode\u003efe7b26e\u003c/code\u003e\u003c/a\u003e docs(forms): transformedValue parse error wiring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/bdfb60f3e33065e047183dc1890c36e527e2b304\"\u003e\u003ccode\u003ebdfb60f\u003c/code\u003e\u003c/a\u003e fix(forms): use consistent error format returned from parse\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/631f60d1f9be72cb68330308a6ff18cc195babb8\"\u003e\u003ccode\u003e631f60d\u003c/code\u003e\u003c/a\u003e fix(forms): preserve parse errors when parse returns value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/567f292e8e0f9d2b5ddebadfa1c6d6dd6c456f39\"\u003e\u003ccode\u003e567f292\u003c/code\u003e\u003c/a\u003e fix(forms): support custom controls as host directives\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser` from 19.2.20 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/platform-browser\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/platform-browser\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/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/platform-browser/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/platform-browser/issues/67002\"\u003e#67002\u003c/a\u003e)\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/85122cb12d30141aa3abb997c4b3ee31713ec07b\"\u003e\u003ccode\u003e85122cb\u003c/code\u003e\u003c/a\u003e docs: update \u003ccode\u003ebootstrapApplication\u003c/code\u003e docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f4469ad583a97c39843309270095c55f0a758692\"\u003e\u003ccode\u003ef4469ad\u003c/code\u003e\u003c/a\u003e refactor(core): update error message links to versioned docs (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/platform-browser/issues/66374\"\u003e#66374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/99ad18a4ee82ecc5524106d1d403ccfa9bae2304\"\u003e\u003ccode\u003e99ad18a\u003c/code\u003e\u003c/a\u003e feat(core): Add stability debugging utility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6270bba056cfaadb3fe0b2bf3b17036bdc28b90e\"\u003e\u003ccode\u003e6270bba\u003c/code\u003e\u003c/a\u003e ci: reformat files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2ccdf50fba9536d931988098f6d4f5ebb52588f9\"\u003e\u003ccode\u003e2ccdf50\u003c/code\u003e\u003c/a\u003e refactor(platform-browser): remove unused \u003ccode\u003eplatformIsServer\u003c/code\u003e  flag from renderer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4f584cf42235c94bb8389fa55bc634e23d7b010\"\u003e\u003ccode\u003eb4f584c\u003c/code\u003e\u003c/a\u003e fix(core): return \u003ccode\u003eStaticProvider\u003c/code\u003e for \u003ccode\u003eprovidePlatformInitializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/96b79fc393855777c69e817a5bddbc295af4806b\"\u003e\u003ccode\u003e96b79fc\u003c/code\u003e\u003c/a\u003e refactor(core): correct all \u003ccode\u003etypeof ngDevMode\u003c/code\u003e comparison patterns introduced...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/platform-browser\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser-dynamic` from 19.2.20 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/platform-browser-dynamic\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/the...\n\n_Description has been truncated_","html_url":"https://github.com/MynorXico/racephotos/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MynorXico%2Fracephotos/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"4156801050","node_id":"PR_kwDOBiCNks7OMrNC","number":1397,"state":"open","title":"Bump the angular group across 1 directory with 5 updates","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-03-28T01:08:41.000Z","updated_at":"2026-04-04T15:01:09.416Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"angular","update_count":5,"packages":[{"name":"@angular-eslint/builder","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `20.1.1` | `21.3.1` |\n\n\nUpdates `@angular-eslint/builder` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ \u003cstrong\u003ebuilder:\u003c/strong\u003e align formatter invocation with eslint CLI by always passing all files, even if quiet (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bceaa80e\"\u003ebceaa80e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ \u003cstrong\u003ebuilder:\u003c/strong\u003e align formatter invocation with eslint CLI by always passing all files, even if quiet (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bceaa80e\"\u003ebceaa80e\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\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/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\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/5c214854f897cb698563f53db6b9bddfb23e4d8e\"\u003e\u003ccode\u003e5c21485\u003c/code\u003e\u003c/a\u003e chore(builder): change builder tests to be cross-platform (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2905\"\u003e#2905\u003c/a\u003e)\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/builder/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e'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/eslint-plugin/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\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\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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:\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\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\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:\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\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\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-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/1000391b2041c3bae7a4687273291959a9289fd9\"\u003e\u003ccode\u003e1000391\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] properly handle statements with una...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\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/ffcc447713c47e0ebca1886e3a2216222f99966a\"\u003e\u003ccode\u003effcc447\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] detect \u003ccode\u003eSignal\u003c/code\u003e type correctly (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/65f2540c19820548b4e61dbbb9fddedf2e2031be\"\u003e\u003ccode\u003e65f2540\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): [no-uncalled-signals] detect Signal member access (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2848\"\u003e#2848\u003c/a\u003e)\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/eslint-plugin/issues/2903\"\u003e#2903\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/eslint-plugin/issues/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e'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/eslint-plugin-template/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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 support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\u003c/a\u003e)\u003c/li\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\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.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\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\u003cp\u003eThis was a version bump only for eslint-plugin-template to align it with other projects, there were no code changes.\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-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/a3fb6cceddc3a498f59e57a020d76efb78e57968\"\u003e\u003ccode\u003ea3fb6cc\u003c/code\u003e\u003c/a\u003e fix(prefer-self-closing-tags): add selectedcontent nonAriaElements (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2939\"\u003e#2939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/4425fec25a860f2578c64e222e136e729ff8cf17\"\u003e\u003ccode\u003e4425fec\u003c/code\u003e\u003c/a\u003e docs(no-nested-tags): use backticks for HTML tags (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2935\"\u003e#2935\u003c/a\u003e)\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/253da820cb5f263e113024068308ffd55e89bad0\"\u003e\u003ccode\u003e253da82\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [prefer-template-literal] preserve nested non st...\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/eslint-plugin-template/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/eslint-plugin-template/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/template-parser` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e'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/template-parser/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e'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 template-parser 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\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.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\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🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.6.0 (2025-11-09)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.5.2 (2025-11-08)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\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-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/f78af866b48ae63bb437d422d4d29170a55e5611\"\u003e\u003ccode\u003ef78af86\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2915\"\u003e#2915\u003c/a\u003e)\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/template-parser/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/template-parser/issues/2885\"\u003e#2885\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/d49bbe0ba374ab85f521b5f35e90fd3223031984\"\u003e\u003ccode\u003ed49bbe0\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2862\"\u003e#2862\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/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/template-parser\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e since your current version.\u003c/p\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/SubJunk/TimelineTools/pull/1397","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SubJunk%2FTimelineTools/issues/1397","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1397/packages"},{"uuid":"4091735574","node_id":"PR_kwDOFx7JXs7LYFaC","number":2314,"state":"closed","title":"build(deps-dev): bump @angular-eslint/schematics from 21.3.0 to 21.3.1","user":"dependabot[bot]","labels":["dependencies","released","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-18T03:01:29.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-17T23:23:27.000Z","updated_at":"2026-03-20T18:10:04.000Z","time_to_close":13082,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"@angular-eslint/schematics","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\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=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=21.3.0\u0026new-version=21.3.1)](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/device-management-toolkit/ui-toolkit-angular/pull/2314","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/device-management-toolkit%2Fui-toolkit-angular/issues/2314","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2314/packages"},{"uuid":"4087262222","node_id":"PR_kwDODLkAsM7LKVOh","number":164,"state":"closed","title":"Bump the angular-eslint group with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-25T11:39:34.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-17T09:25:20.000Z","updated_at":"2026-03-25T11:39:36.000Z","time_to_close":699254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"angular-eslint","update_count":5,"packages":[{"name":"@angular-eslint/builder","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular-eslint group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.0` | `21.3.1` |\n\nUpdates `@angular-eslint/builder` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\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/1000391b2041c3bae7a4687273291959a9289fd9\"\u003e\u003ccode\u003e1000391\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] properly handle statements with una...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\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/a3fb6cceddc3a498f59e57a020d76efb78e57968\"\u003e\u003ccode\u003ea3fb6cc\u003c/code\u003e\u003c/a\u003e fix(prefer-self-closing-tags): add selectedcontent nonAriaElements (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2939\"\u003e#2939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/4425fec25a860f2578c64e222e136e729ff8cf17\"\u003e\u003ccode\u003e4425fec\u003c/code\u003e\u003c/a\u003e docs(no-nested-tags): use backticks for HTML tags (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2935\"\u003e#2935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/template-parser` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/template-parser/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e'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 template-parser 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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/template-parser\"\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/saschagrunert/release-notes/pull/164","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/saschagrunert%2Frelease-notes/issues/164","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/164/packages"},{"uuid":"4085015760","node_id":"PR_kwDOKDWd9s7LDPDN","number":698,"state":"closed","title":"chore(deps-dev): bump @angular-eslint/schematics from 18.3.1 to 21.3.0 in /edc-policy-playground","user":"dependabot[bot]","labels":["dependencies","npm","stale"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-03-31T02:17:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-16T22:04:09.000Z","updated_at":"2026-03-31T02:18:01.000Z","time_to_close":1224823,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@angular-eslint/schematics","old_version":"18.3.1","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":"/edc-policy-playground","ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 18.3.1 to 21.3.0.\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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.6.0 (2025-11-09)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/fdddff9b3e5d9a36e4dd527d201ed7b48ce2f08f\"\u003e\u003ccode\u003efdddff9\u003c/code\u003e\u003c/a\u003e chore(release): publish 20.7.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=18.3.1\u0026new-version=21.3.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/eclipse-tractusx/tutorial-resources/pull/698","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-tractusx%2Ftutorial-resources/issues/698","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/698/packages"},{"uuid":"4079045566","node_id":"PR_kwDONWdOm87KwIxd","number":236,"state":"open","title":"Bump the js-dependencies group across 1 directory with 24 updates","user":"dependabot[bot]","labels":["frontend","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-15T19:36:20.000Z","updated_at":"2026-03-15T19:36:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"js-dependencies","update_count":24,"packages":[{"name":"@angular/animations","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.1","new_version":"21.2.2","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.2.1","new_version":"21.2.2","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"apexcharts","old_version":"5.10.1","new_version":"5.10.4","repository_url":"https://github.com/apexcharts/apexcharts.js"},{"name":"ng-apexcharts","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/apexcharts/ng-apexcharts"},{"name":"@angular-devkit/build-angular","old_version":"21.2.1","new_version":"21.2.2","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"21.2.1","new_version":"21.2.2","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.56.1","new_version":"8.57.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"eslint","old_version":"9.39.3","new_version":"10.0.3","repository_url":"https://github.com/eslint/eslint"},{"name":"sass","old_version":"1.97.3","new_version":"1.98.0","repository_url":"https://github.com/sass/dart-sass"}],"path":null,"ecosystem":"npm"},"body":"Bumps the js-dependencies group with 22 updates in the /frontend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.1` | `21.2.4` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.1` | `21.2.2` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.1` | `21.2.4` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.1` | `21.2.4` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.1` | `21.2.4` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.1` | `21.2.4` |\n| [@angular/material](https://github.com/angular/components) | `21.2.1` | `21.2.2` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.1` | `21.2.4` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.1` | `21.2.4` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.1` | `21.2.4` |\n| [apexcharts](https://github.com/apexcharts/apexcharts.js) | `5.10.1` | `5.10.4` |\n| [ng-apexcharts](https://github.com/apexcharts/ng-apexcharts) | `2.2.0` | `2.3.0` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `21.2.1` | `21.2.2` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.2.0` | `21.3.0` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.1` | `21.2.2` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.1` | `21.2.4` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.56.1` | `8.57.0` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.3` | `10.0.3` |\n| [sass](https://github.com/sass/dart-sass) | `1.97.3` | `1.98.0` |\n\n\nUpdates `@angular/animations` from 21.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/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.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/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.2.1 to 21.2.2\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.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\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/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.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/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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/91a31a770df573828e805c7f9842f7ff8d4f8954\"\u003e\u003ccode\u003e91a31a7\u003c/code\u003e\u003c/a\u003e refactor(cdk/drag-drop): move tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32898\"\u003e#32898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/efa2f4f898598b0f9e216d93faaf489f17884f68\"\u003e\u003ccode\u003eefa2f4f\u003c/code\u003e\u003c/a\u003e refactor(material/select): move tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32901\"\u003e#32901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2851147187fa9779369a3c552d063c1cbd817a12\"\u003e\u003ccode\u003e2851147\u003c/code\u003e\u003c/a\u003e refactor(material/datepicker): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32903\"\u003e#32903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a330b89e8b2e4694fb9c9cc2764f767ecb2d75c\"\u003e\u003ccode\u003e2a330b8\u003c/code\u003e\u003c/a\u003e refactor(material/menu): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32909\"\u003e#32909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ef607a6271b63c5fe9fb166aed57f091274382fc\"\u003e\u003ccode\u003eef607a6\u003c/code\u003e\u003c/a\u003e ci: add issue labeling and refactor jobs (\u003ca href=\"https://redirect.github.com/angular/components/issues/32890\"\u003e#32890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003ccode\u003e345c543\u003c/code\u003e\u003c/a\u003e fix(aria/grid): unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/93315d5fce1eb76540995ae091e95dc7e3184978\"\u003e\u003ccode\u003e93315d5\u003c/code\u003e\u003c/a\u003e refactor(aria/grid): code clean up (\u003ca href=\"https://redirect.github.com/angular/components/issues/32842\"\u003e#32842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/components/compare/v21.2.1...v21.2.2\"\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.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/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.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/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.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/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.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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/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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/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.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/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.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003ccode\u003ed1dcd16\u003c/code\u003e\u003c/a\u003e fix(core): sanitize translated form attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003ccode\u003eabbd879\u003c/code\u003e\u003c/a\u003e fix(core): reverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/li\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/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003ccode\u003e21b1c3b\u003c/code\u003e\u003c/a\u003e fix(core): include signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6c73aaca30c7122f187dc51ec532a69f2706b335\"\u003e\u003ccode\u003e6c73aac\u003c/code\u003e\u003c/a\u003e refactor(common): Removes unused generic type parameters from \u003ccode\u003eKeyValueDiffers\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c98eab794c791ad08f0c277cde1ed139f9ca378c\"\u003e\u003ccode\u003ec98eab7\u003c/code\u003e\u003c/a\u003e refactor(core): remove old resource params\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/75135586d6235d58c9010ac2208ee20020bac71b\"\u003e\u003ccode\u003e7513558\u003c/code\u003e\u003c/a\u003e docs: combine multiple documentation improvements into one PR\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/575f3023c115f8af8e1a5bdfa6a2f2344546a5d1\"\u003e\u003ccode\u003e575f302\u003c/code\u003e\u003c/a\u003e refactor(core): interface cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003ccode\u003e224e60e\u003c/code\u003e\u003c/a\u003e fix(core): sanitize translated attribute bindings with interpolations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/09638ec7c3f14ce0216281f0c0dba38eb231f345\"\u003e\u003ccode\u003e09638ec\u003c/code\u003e\u003c/a\u003e docs(core): clarify provideZoneChangeDetection usage in v21+\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/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.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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/4a9b715b3abd3e51184937f764376883d6bb98a1\"\u003e\u003ccode\u003e4a9b715\u003c/code\u003e\u003c/a\u003e test(forms): cover transformedValue without FormField context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003ccode\u003e670d166\u003c/code\u003e\u003c/a\u003e feat(forms): add 'blur' option to debounce rule\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/material` from 21.2.1 to 21.2.2\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/material\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/material\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/91a31a770df573828e805c7f9842f7ff8d4f8954\"\u003e\u003ccode\u003e91a31a7\u003c/code\u003e\u003c/a\u003e refactor(cdk/drag-drop): move tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32898\"\u003e#32898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/efa2f4f898598b0f9e216d93faaf489f17884f68\"\u003e\u003ccode\u003eefa2f4f\u003c/code\u003e\u003c/a\u003e refactor(material/select): move tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32901\"\u003e#32901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2851147187fa9779369a3c552d063c1cbd817a12\"\u003e\u003ccode\u003e2851147\u003c/code\u003e\u003c/a\u003e refactor(material/datepicker): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32903\"\u003e#32903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a330b89e8b2e4694fb9c9cc2764f767ecb2d75c\"\u003e\u003ccode\u003e2a330b8\u003c/code\u003e\u003c/a\u003e refactor(material/menu): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32909\"\u003e#32909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ef607a6271b63c5fe9fb166aed57f091274382fc\"\u003e\u003ccode\u003eef607a6\u003c/code\u003e\u003c/a\u003e ci: add issue labeling and refactor jobs (\u003ca href=\"https://redirect.github.com/angular/components/issues/32890\"\u003e#32890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003ccode\u003e345c543\u003c/code\u003e\u003c/a\u003e fix(aria/grid): unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/93315d5fce1eb76540995ae091e95dc7e3184978\"\u003e\u003ccode\u003e93315d5\u003c/code\u003e\u003c/a\u003e refactor(aria/grid): code clean up (\u003ca href=\"https://redirect.github.com/angular/components/issues/32842\"\u003e#32842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/components/compare/v21.2.1...v21.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser` from 21.2.1 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/angular/releases\"\u003e\u003ccode\u003e@​angular/platform-browser\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/platform-browser\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://git...\n\n_Description has been truncated_","html_url":"https://github.com/SAP/STARS/pull/236","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP%2FSTARS/issues/236","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/236/packages"},{"uuid":"4048368174","node_id":"PR_kwDORasD0s7JNzlr","number":17,"state":"open","title":"chore(deps-dev): bump @angular-eslint/schematics from 19.8.1 to 21.3.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-03-09T23:01:33.000Z","updated_at":"2026-03-09T23:01:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@angular-eslint/schematics","old_version":"19.8.1","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":"/frontend","ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 19.8.1 to 21.3.0.\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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.6.0 (2025-11-09)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/fdddff9b3e5d9a36e4dd527d201ed7b48ce2f08f\"\u003e\u003ccode\u003efdddff9\u003c/code\u003e\u003c/a\u003e chore(release): publish 20.7.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=19.8.1\u0026new-version=21.3.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/diegohat/game-library/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/diegohat%2Fgame-library/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"},{"uuid":"4048358076","node_id":"PR_kwDOO5h5F87JNxkA","number":64,"state":"open","title":"build(deps): bump the minor-and-patch group across 1 directory with 47 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-09T22:58:20.000Z","updated_at":"2026-03-09T22:59:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"minor-and-patch","update_count":47,"packages":[{"name":"@angular/animations","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.1.2","new_version":"21.2.1","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.1.2","new_version":"21.2.1","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@capacitor/android","old_version":"8.0.2","new_version":"8.2.0","repository_url":"https://github.com/ionic-team/capacitor"},{"name":"@capacitor/app","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/browser","old_version":"8.0.0","new_version":"8.0.2","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/camera","old_version":"8.0.0","new_version":"8.0.2","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/core","old_version":"8.0.2","new_version":"8.2.0","repository_url":"https://github.com/ionic-team/capacitor"},{"name":"@capacitor/geolocation","old_version":"8.0.0","new_version":"8.1.0","repository_url":"https://github.com/ionic-team/capacitor-geolocation"},{"name":"@capacitor/haptics","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-haptics"},{"name":"@capacitor/ios","old_version":"8.0.2","new_version":"8.2.0","repository_url":"https://github.com/ionic-team/capacitor"},{"name":"@capacitor/keyboard","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-keyboard"},{"name":"@capacitor/local-notifications","old_version":"8.0.0","new_version":"8.0.2","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/network","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/preferences","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/push-notifications","old_version":"8.0.0","new_version":"8.0.2","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/splash-screen","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/status-bar","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@ionic/angular","old_version":"8.7.17","new_version":"8.8.1","repository_url":"https://github.com/ionic-team/ionic-framework"},{"name":"@ionic/pwa-elements","old_version":"3.3.0","new_version":"3.4.0","repository_url":"https://github.com/ionic-team/ionic-pwa-elements"},{"name":"@sentry/angular","old_version":"10.38.0","new_version":"10.42.0","repository_url":"https://github.com/getsentry/sentry-javascript"},{"name":"mapbox-gl","old_version":"3.18.1","new_version":"3.19.1","repository_url":"https://github.com/mapbox/mapbox-gl-js"},{"name":"@types/mapbox-gl","old_version":"3.4.1","new_version":"3.5.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular-devkit/build-angular","old_version":"21.1.2","new_version":"21.2.1","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"21.1.2","new_version":"21.2.1","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@capacitor/cli","old_version":"8.0.2","new_version":"8.2.0","repository_url":"https://github.com/ionic-team/capacitor"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.54.0","new_version":"8.57.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"jsdom","old_version":"28.0.0","new_version":"28.1.0","repository_url":"https://github.com/jsdom/jsdom"}],"path":null,"ecosystem":"npm"},"body":"Bumps the minor-and-patch group with 43 updates in the /histora-care directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.1.2` | `21.2.2` |\n| [@angular/cdk](https://github.com/angular/components) | `21.1.2` | `21.2.1` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.1.2` | `21.2.2` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.1.2` | `21.2.2` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.1.2` | `21.2.2` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.1.2` | `21.2.2` |\n| [@angular/material](https://github.com/angular/components) | `21.1.2` | `21.2.1` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.1.2` | `21.2.2` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.1.2` | `21.2.2` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.1.2` | `21.2.2` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.1.2` | `21.2.2` |\n| [@capacitor/android](https://github.com/ionic-team/capacitor) | `8.0.2` | `8.2.0` |\n| [@capacitor/app](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@capacitor/browser](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.2` |\n| [@capacitor/camera](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.2` |\n| [@capacitor/core](https://github.com/ionic-team/capacitor) | `8.0.2` | `8.2.0` |\n| [@capacitor/geolocation](https://github.com/ionic-team/capacitor-geolocation) | `8.0.0` | `8.1.0` |\n| [@capacitor/haptics](https://github.com/ionic-team/capacitor-haptics) | `8.0.0` | `8.0.1` |\n| [@capacitor/ios](https://github.com/ionic-team/capacitor) | `8.0.2` | `8.2.0` |\n| [@capacitor/keyboard](https://github.com/ionic-team/capacitor-keyboard) | `8.0.0` | `8.0.1` |\n| [@capacitor/local-notifications](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.2` |\n| [@capacitor/network](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@capacitor/preferences](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@capacitor/push-notifications](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.2` |\n| [@capacitor/splash-screen](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@capacitor/status-bar](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@ionic/angular](https://github.com/ionic-team/ionic-framework) | `8.7.17` | `8.8.1` |\n| [@ionic/pwa-elements](https://github.com/ionic-team/ionic-pwa-elements) | `3.3.0` | `3.4.0` |\n| [@sentry/angular](https://github.com/getsentry/sentry-javascript) | `10.38.0` | `10.42.0` |\n| [mapbox-gl](https://github.com/mapbox/mapbox-gl-js) | `3.18.1` | `3.19.1` |\n| [@types/mapbox-gl](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mapbox-gl) | `3.4.1` | `3.5.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.1` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `21.1.2` | `21.2.1` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.2.0` | `21.3.0` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.1.2` | `21.2.1` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.1.2` | `21.2.2` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.1.2` | `21.2.2` |\n| [@capacitor/cli](https://github.com/ionic-team/capacitor) | `8.0.2` | `8.2.0` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.54.0` | `8.57.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `28.0.0` | `28.1.0` |\n\n\nUpdates `@angular/animations` from 21.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(language-service): use lightweight project warmup for Angular analysis (\u003ca href=\"https://github.com/angular/angular/commit/d2137928e8f075527016a3c011dd8efc4d4e1ebd\"\u003ed2137928e8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.1\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/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2e9a9a531-fix-green\" alt=\"fix - e2e9a9a531\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadds transfer cache to httpResource to fix hydration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ec3cc4e4-fix-green\" alt=\"fix - b4ec3cc4e4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent child animation elements from being orphaned\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003cimg src=\"https://img.shields.io/badge/e923d88398-fix-green\" alt=\"fix - e923d88398\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevent removal of elements during drag and drop\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/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003cimg src=\"https://img.shields.io/badge/277ade97ac-fix-green\" alt=\"fix - 277ade97ac\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ecorrectly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(vscode-extension): Highlight function calls with optional chaining (\u003ca href=\"https://github.com/angular/angular/commit/4f8d3995f082929d1ef4163dcb4373d3ef7a67cf\"\u003e4f8d3995f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add linked editing ranges for HTML tag synchronization (\u003ca href=\"https://github.com/angular/angular/commit/8c21866f49ff74344551395ae0a5df1841d54c0d\"\u003e8c21866f49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(vscode-extension): support highlighting for class bindings with brackets (\u003ca href=\"https://github.com/angular/angular/commit/01ed57f297d6713724dfaedc9520f80471f37c10\"\u003e01ed57f297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add JSON schema for angularCompilerOptions (\u003ca href=\"https://github.com/angular/angular/commit/496967e7b13dfe1ebdde69724cd62880914beb60\"\u003e496967e7b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(language-service): Detect local project version on creation (\u003ca href=\"https://github.com/angular/angular/commit/8a7cbd46685874f4500c52629d09c5f7fd309080\"\u003e8a7cbd4668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Support client-side file watching via \u003ccode\u003eonDidChangeWatchedFiles\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/commit/6fb39d9b62cbb634e95ec00fe5ef85d84da3bdbd\"\u003e6fb39d9b62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add completions and hover info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/ebc90c26f5ff1ba1e0ca9b775a44e301ebfb9473\"\u003eebc90c26f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add quick info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/573aadef7eb8b6b5e83b82a16f95d2a556f27c01\"\u003e573aadef7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add folding range support for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/26fd0839c32d2ebeaa5e3ecc10ed70ab9ca17749\"\u003e26fd0839c3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0\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/18003a33bb0d6bb09def8a0e5939fa24069696eb\"\u003e\u003cimg src=\"https://img.shields.io/badge/18003a33bb-feat-blue\" alt=\"feat - 18003a33bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd an 'outlet' injector option for ngTemplateOutlet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8bbe6dc46c9dc13bafa81a60c7613b84b5ca3761\"\u003e\u003cimg src=\"https://img.shields.io/badge/8bbe6dc46c-feat-blue\" alt=\"feat - 8bbe6dc46c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAdd Location strategies to manage trailing slash on write\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\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.2 (2026-03-09)\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e1df1697c6e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003ec822bf8e76\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e05d022d5e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e670d1660c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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 (2026-03-05)\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/72a17afaf32194d42e4b5c090d4f75bad875930b\"\u003e72a17afaf3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/dc4cf649b62fd47e0e1bd255ec954d88585899c4\"\u003edc4cf649b6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/c767d678cff65a89f380b4512590fa732db072c8\"\u003ec767d678cf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7\"\u003ef01901d766\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid generating invalid code in ChangeDetectionStrategy.Eager migration\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 (2026-03-04)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNode.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edata prefixed attribute no-longer bind inputs nor outputs.\u003c/li\u003e\n\u003cli\u003eThe compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ein\u003c/code\u003e variables will throw in template expressions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echange AnimationCallbackEvent.animationComplete signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ehttp\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/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.2/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.1.2 to 21.2.1\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.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\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e21.2.0-next.5\u003c/h2\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\u003eDescription\u003c/th\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/0870786036286c3b0d3485cb31098afdf22c0350\"\u003e\u003cimg src=\"https://img.shields.io/badge/0870786036-fix-green\" alt=\"fix - 0870786036\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix mismatch in clusterer types (\u003ca href=\"https://redirect.github.com/angular/components/issues/32778\"\u003e#32778\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\u003eDescription\u003c/th\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/f5c586925eb9a1cc00a9b2e22860be1f69ef9184\"\u003e\u003cimg src=\"https://img.shields.io/badge/f5c586925e-fix-green\" alt=\"fix - f5c586925e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e disable position locking (\u003ca href=\"https://redirect.github.com/angular/components/issues/32772\"\u003e#32772\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/b15b48df980b1f86885d4d25fdc8ba58b2bac62b\"\u003e\u003cimg src=\"https://img.shields.io/badge/b15b48df98-fix-green\" alt=\"fix - b15b48df98\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e no nodes focusable if data is replaced (\u003ca href=\"https://redirect.github.com/angular/components/issues/32781\"\u003e#32781\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.1 \u0026quot;leather heels\u0026quot; (2026-03-04)\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/c1295c5818c820ab182727b4f85e5f55a05f6385\"\u003ec1295c5818\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/pull/32880\"\u003e#32880\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/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003ecebf303417\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e2abe8e6b73\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/pull/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\"\u003ee2f7308dc4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\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/17c19cc73b4e7e24ae5579c32ae5a784d92c2a12\"\u003e17c19cc73b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eexpand type for restoreFocus (\u003ca href=\"https://redirect.github.com/angular/components/pull/32877\"\u003e#32877\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.0 \u0026quot;plastic-lion\u0026quot; (2026-02-25)\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/31ff7f26b5dd08c1d48dc5ebb8f1a9ba57a2dc9c\"\u003e31ff7f26b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed030725f46\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\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/cd5209e9f59c8bd31de29d03fd743452d8ae3d03\"\u003ecd5209e9f5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/pull/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\"\u003ee397ecbcfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etable:\u003c/strong\u003e remove string-based DI tokens (\u003ca href=\"https://redirect.github.com/angular/components/pull/32677\"\u003e#32677\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/8c4526935ef7e960ed4245a4621d41065ba34e3b\"\u003e8c4526935e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/pull/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\"\u003e7fe3081148\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e drop dependency on NgClass (\u003ca href=\"https://redirect.github.com/angular/components/pull/32810\"\u003e#32810\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.1.6 \u0026quot;plastic-monkey\u0026quot; (2026-02-25)\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/50c34e6ef314177cdd725a5b0c3177b65cc2809a\"\u003e50c34e6ef3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecombobox:\u003c/strong\u003e Adjust AutoComplete examples to properly announce no results text (\u003ca href=\"https://redirect.github.com/angular/components/pull/32786\"\u003e#32786\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.1.5 \u0026quot;chlorine-car\u0026quot; (2026-02-18)\u003c/h1\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/902a1f6c562149fcd52c6f5a76dc5ef4047395f8\"\u003e\u003ccode\u003e902a1f6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/6a8da0890d7cf4495902c767e34fe3e1f2e55a33\"\u003e\u003ccode\u003e6a8da08\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/32844\"\u003e#32844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f35bfe5b3a46cea136b5b0eedd78a89a581825a6\"\u003e\u003ccode\u003ef35bfe5\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32862\"\u003e#32862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5fc772df544c5b1a4b91dd32b030cb8002b3ba72\"\u003e\u003ccode\u003e5fc772d\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.32.5 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32863\"\u003e#32863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2929803fee58984f8983e972b078610b9b585f39\"\u003e\u003ccode\u003e2929803\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.30.3 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32813\"\u003e#32813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c1295c5818c820ab182727b4f85e5f55a05f6385\"\u003e\u003ccode\u003ec1295c5\u003c/code\u003e\u003c/a\u003e fix(aria/menu): itemSelected not emitted when menu is attached to a trigger (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/17c19cc73b4e7e24ae5579c32ae5a784d92c2a12\"\u003e\u003ccode\u003e17c19cc\u003c/code\u003e\u003c/a\u003e fix(multiple): expand type for restoreFocus (\u003ca href=\"https://redirect.github.com/angular/components/issues/32877\"\u003e#32877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/1f66af88e45cd613f73c6974967dbac37f3e034e\"\u003e\u003ccode\u003e1f66af8\u003c/code\u003e\u003c/a\u003e refactor: remove remaining NgClass usages (\u003ca href=\"https://redirect.github.com/angular/components/issues/32873\"\u003e#32873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2abe8e6b7330f5281b560b202ab70bdf593782cc\"\u003e\u003ccode\u003e2abe8e6\u003c/code\u003e\u003c/a\u003e fix(material/menu): render backdrop for context menu if explicitly opted in (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003e\u003ccode\u003ecebf303\u003c/code\u003e\u003c/a\u003e fix(material/checkbox): hide decorative elements from assistive technology\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.1.2...v21.2.1\"\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.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(language-service): use lightweight project warmup for Angular analysis (\u003ca href=\"https://github.com/angular/angular/commit/d2137928e8f075527016a3c011dd8efc4d4e1ebd\"\u003ed2137928e8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.1\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/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2e9a9a531-fix-green\" alt=\"fix - e2e9a9a531\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadds transfer cache to httpResource to fix hydration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ec3cc4e4-fix-green\" alt=\"fix - b4ec3cc4e4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent child animation elements from being orphaned\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003cimg src=\"https://img.shields.io/badge/e923d88398-fix-green\" alt=\"fix - e923d88398\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevent removal of elements during drag and drop\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/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003cimg src=\"https://img.shields.io/badge/277ade97ac-fix-green\" alt=\"fix - 277ade97ac\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ecorrectly 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/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(vscode-extension): Highlight function calls with optional chaining (\u003ca href=\"https://github.com/angular/angular/commit/4f8d3995f082929d1ef4163dcb4373d3ef7a67cf\"\u003e4f8d3995f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add linked editing ranges for HTML tag synchronization (\u003ca href=\"https://github.com/angular/angular/commit/8c21866f49ff74344551395ae0a5df1841d54c0d\"\u003e8c21866f49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(vscode-extension): support highlighting for class bindings with brackets (\u003ca href=\"https://github.com/angular/angular/commit/01ed57f297d6713724dfaedc9520f80471f37c10\"\u003e01ed57f297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add JSON schema for angularCompilerOptions (\u003ca href=\"https://github.com/angular/angular/commit/496967e7b13dfe1ebdde69724cd62880914beb60\"\u003e496967e7b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(language-service): Detect local project version on creation (\u003ca href=\"https://github.com/angular/angular/commit/8a7cbd46685874f4500c52629d09c5f7fd309080\"\u003e8a7cbd4668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Support client-side file watching via \u003ccode\u003eonDidChangeWatchedFiles\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/commit/6fb39d9b62cbb634e95ec00fe5ef85d84da3bdbd\"\u003e6fb39d9b62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add completions and hover info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/ebc90c26f5ff1ba1e0ca9b775a44e301ebfb9473\"\u003eebc90c26f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add quick info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/573aadef7eb8b6b5e83b82a16f95d2a556f27c01\"\u003e573aadef7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add folding range support for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/26fd0839c32d2ebeaa5e3ecc10ed70ab9ca17749\"\u003e26fd0839c3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0\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/18003a33bb0d6bb09def8a0e5939fa24069696eb\"\u003e\u003cimg src=\"https://img.shields.io/badge/18003a33bb-feat-blue\" alt=\"feat - 18003a33bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd an 'outlet' injector option for ngTemplateOutlet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8bbe6dc46c9dc13bafa81a60c7613b84b5ca3761\"\u003e\u003cimg src=\"https://img.shields.io/badge/8bbe6dc46c-feat-blue\" alt=\"feat - 8bbe6dc46c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAdd Location strategies to manage trailing slash on write\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\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.2 (2026-03-09)\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e1df1697c6e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003ec822bf8e76\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e05d022d5e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e670d1660c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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 (2026-03-05)\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/72a17afaf32194d42e4b5c090d4f75bad875930b\"\u003e72a17afaf3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/dc4cf649b62fd47e0e1bd255ec954d88585899c4\"\u003edc4cf649b6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/c767d678cff65a89f380b4512590fa732db072c8\"\u003ec767d678cf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7\"\u003ef01901d766\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid generating invalid code in ChangeDetectionStrategy.Eager migration\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 (2026-03-04)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNode.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edata prefixed attribute no-longer bind inputs nor outputs.\u003c/li\u003e\n\u003cli\u003eThe compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ein\u003c/code\u003e variables will throw in template expressions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echange AnimationCallbackEvent.animationComplete signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ehttp\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/a8aab6480962f18ff0b28b5e46358ff8d43745c9\"\u003e\u003ccode\u003ea8aab64\u003c/code\u003e\u003c/a\u003e refactor(core): remove outdated TODO comments referencing TypeScript 2.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.2/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.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(language-service): use lightweight project warmup for Angular analysis (\u003ca href=\"https://github.com/angular/angular/commit/d2137928e8f075527016a3c011dd8efc4d4e1ebd\"\u003ed2137928e8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.1\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/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2e9a9a531-fix-green\" alt=\"fix - e2e9a9a531\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadds transfer cache to httpResource to fix hydration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ec3cc4e4-fix-green\" alt=\"fix - b4ec3cc4e4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent child animation elements from being orphaned\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003cimg src=\"https://img.shields.io/badge/e923d88398-fix-green\" alt=\"fix - e923d88398\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevent removal of elements during drag and drop\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/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003cimg src=\"https://img.shields.io/badge/277ade97ac-fix-green\" alt=\"fix - 277ade97ac\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ecorrectly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(vscode-extension): Highlight function calls with optional chaining (\u003ca href=\"https://github.com/angular/angular/commit/4f8d3995f082929d1ef4163dcb4373d3ef7a67cf\"\u003e4f8d3995f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add linked editing ranges for HTML tag synchronization (\u003ca href=\"https://github.com/angular/angular/commit/8c21866f49ff74344551395ae0a5df1841d54c0d\"\u003e8c21866f49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(vscode-extension): support highlighting for class bindings with brackets (\u003ca href=\"https://github.com/angular/angular/commit/01ed57f297d6713724dfaedc9520f80471f37c10\"\u003e01ed57f297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add JSON schema for angularCompilerOptions (\u003ca href=\"https://github.com/angular/angular/commit/496967e7b13dfe1ebdde69724cd62880914beb60\"\u003e496967e7b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(language-service): Detect local project version on creation (\u003ca href=\"https://github.com/angular/angular/commit/8a7cbd46685874f4500c52629d09c5f7fd309080\"\u003e8a7cbd4668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Support client-side file watching via \u003ccode\u003eonDidChangeWatchedFiles\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/commit/6fb39d9b62cbb634e95ec00fe5ef85d84da3bdbd\"\u003e6fb39d9b62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add completions and hover info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/ebc90c26f5ff1ba1e0ca9b775a44e301ebfb9473\"\u003eebc90c26f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add quick info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/573aadef7eb8b6b5e83b82a16f95d2a556f27c01\"\u003e573aadef7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add folding range support for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/26fd0839c32d2ebeaa5e3ecc10ed70ab9ca17749\"\u003e26fd0839c3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0\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/18003a33bb0d6bb09def8a0e5939fa24069696eb\"\u003e\u003cimg src=\"https://img.shields.io/badge/18003a33bb-feat-blue\" alt=\"feat - 18003a33bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd an 'outlet' injector option for ngTemplateOutlet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8bbe6dc46c9dc13bafa81a60c7613b84b5ca3761\"\u003e\u003cimg src=\"https://img.shields.io/badge/8bbe6dc46c-feat-blue\" alt=\"feat - 8bbe6dc46c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAdd Location strategies to manage trailing slash on write\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\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.2 (2026-03-09)\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e1df1697c6e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003ec822bf8e76\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e05d022d5e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e670d1660c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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 (2026-03-05)\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/72a17afaf32194d42e4b5c090d4f75bad875930b\"\u003e72a17afaf3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/dc4cf649b62fd47e0e1bd255ec954d88585899c4\"\u003edc4cf649b6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/c767d678cff65a89f380b4512590fa732db072c8\"\u003ec767d678cf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7\"\u003ef01901d766\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid generating invalid code in ChangeDetectionStrategy.Eager migration\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 (2026-03-04)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNode.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edata prefixed attribute no-longer bind inputs nor outputs.\u003c/li\u003e\n\u003cli\u003eThe compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ein\u003c/code\u003e variables will throw in template expressions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echange AnimationCallbackEvent.animationComplete signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ehttp\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/9b69e296032a0c1572356c2b9f7b74fad6290052\"\u003e\u003ccode\u003e9b69e29\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/11834a42745e62830a83a4c14eea9d203baec680\"\u003e\u003ccode\u003e11834a4\u003c/code\u003e\u003c/a\u003e fix(compiler): add geolocation element to schema\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.2/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.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(language-service): use lightweight project warmup for Angular analysis (\u003ca href=\"https://github.com/angular/angular/commit/d2137928e8f075527016a3c011dd8efc4d4e1ebd\"\u003ed2137928e8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.1\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/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2e9a9a531-fix-green\" alt=\"fix - e2e9a9a531\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadds transfer cache to httpResource to fix hydration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ec3cc4e4-fix-green\" alt=\"fix - b4ec3cc4e4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent child animation elements from being orphaned\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003cimg src=\"https://img.shields.io/badge/e923d88398-fix-green\" alt=\"fix - e923d88398\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevent removal of elements during drag and drop\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/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003cimg src=\"https://img.shields.io/badge/277ade97ac-fix-green\" alt=\"fix - 277ade97ac\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ecorrectly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(vscode-extension): Highlight function calls with optional chaining (\u003ca href=\"https://github.com/angular/angular/commit/4f8d3995f082929d1ef4163dcb4373d3ef7a67cf\"\u003e4f8d3995f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add linked editing ranges for HTML tag synchronization (\u003ca href=\"https://github.com/angular/angular/commit/8c21866f49ff74344551395ae0a5df1841d54c0d\"\u003e8c21866f49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(vscode-extension): support highlighting for class bindings with brackets (\u003ca href=\"https://github.com/angular/angular/commit/01ed57f297d6713724dfaedc9520f80471f37c10\"\u003e01ed57f297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add JSON schema for angularCompilerOptions (\u003ca href=\"https://github.com/angular/angular/commit/496967e7b13dfe1ebdde69724cd62880914beb60\"\u003e496967e7b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(language-service): Detect local project version on creation (\u003ca href=\"https://github.com/angular/angular/commit/8a7cbd46685874f4500c52629d09c5f7fd309080\"\u003e8a7cbd4668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Support client-side file watching via \u003ccode\u003eonDidChangeWatchedFiles\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/commit/6fb39d9b62cbb634e95ec00fe5ef85d84da3bdbd\"\u003e6fb39d9b62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add completions and hover info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/ebc90c26f5ff1ba1e0ca9b775a44e301ebfb9473\"\u003eebc90c26f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add quick info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/573aadef7eb8b6b5e83b82a16f95d2a556f27c01\"\u003e573aadef7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add folding range support for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/26fd0839c32d2ebeaa5e3ecc10ed70ab9ca17749\"\u003e26fd0839c3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0\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/18003a33bb0d6bb09def8a0e5939fa24069696eb\"\u003e\u003cimg src=\"https://img.shields.io/badge/18003a33bb-feat-blue\" alt=\"feat - 18003a33bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd an 'outlet' injector option for ngTemplateOutlet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8bbe6dc46c9dc13bafa81a60c7613b84b5ca3761\"\u003e\u003cimg src=\"https://img.shields.io/badge/8bbe6dc46c-feat-blue\" alt=\"feat - 8bbe6dc46c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAdd Location strategies to manage trailing slash on write\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\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.2 (2026-03-09)\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e1df1697c6e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003ec822bf8e76\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e05d022d5e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e670d1660c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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 (2026-03-05)\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/72a17afaf32194d42e4b5c090d4f75bad875930b\"\u003e72a17afaf3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/dc4cf649b62fd47e0e1bd255ec954d88585899c4\"\u003edc4cf649b6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/c767d678cff65a89f380b4512590fa732db072c8\"\u003ec767d678cf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7\"\u003ef01901d766\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid generating invalid code in ChangeDetectionStrategy.Eager migration\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 (2026-03-04)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNode.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edata prefixed attribute no-longer bind inputs nor outputs.\u003c/li\u003e\n\u003cli\u003eThe compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ein\u003c/code\u003e variables will throw in template expressions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echange AnimationCallbackEvent.animationComplete signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ehttp\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/angular/commit/e7d1d8def3ed0c086b879f0485d7e28246568837\"\u003e\u003ccode\u003ee7d1d8d\u003c/code\u003e\u003c/a\u003e refactor(core): add tracing for component creation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4a390b6c7393f1228e0e3031fdf59500e0b787dd\"\u003e\u003ccode\u003e4a390b6\u003c/code\u003e\u003c/a\u003e refactor(core): track the tracing service in the LView environment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6d7446bc6c2914a06b26962ae06ced5d2024ee9a\"\u003e\u003ccode\u003e6d7446b\u003c/code\u003e\u003c/a\u003e refactor(core): account for shadow roots in animations\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/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003ccode\u003eb4ec3cc\u003c/code\u003e\u003c/a\u003e fix(core): prevent child animation elements from being orphaned\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/core/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f5e9a862c20f503e1af3c57e696118c5e68e5988\"\u003e\u003ccode\u003ef5e9a86\u003c/code\u003e\u003c/a\u003e refactor(core): ignore infinite animations in animate api\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a79e8afbadaac3c0dd4acab5aef6d5a6bc64e377\"\u003e\u003ccode\u003ea79e8af\u003c/code\u003e\u003c/a\u003e docs: update doc for \u003ccode\u003eprovideZoneChangeDetection\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003ccode\u003ee923d88\u003c/code\u003e\u003c/a\u003e fix(core): Prevent removal of elements during drag and drop\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.2/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.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f...\n\n_Description has been truncated_","html_url":"https://github.com/rachcampitos/histora/pull/64","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rachcampitos%2Fhistora/issues/64","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/64/packages"},{"uuid":"4043171175","node_id":"PR_kwDOQlxvgc7I8t-9","number":151,"state":"open","title":"deps(web): bump the dev-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","website"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-09T03:51:25.000Z","updated_at":"2026-03-30T04:09:21.055Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(web): bump","group_name":"dev-dependencies","update_count":20,"packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.2.0","new_version":"2.3.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-eslint/builder","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@tailwindcss/postcss","old_version":"4.1.18","new_version":"4.2.1","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"@testing-library/angular","old_version":"18.1.1","new_version":"19.1.0","repository_url":"https://github.com/testing-library/angular-testing-library"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.51.0","new_version":"8.56.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@typescript-eslint/parser","old_version":"8.51.0","new_version":"8.56.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@vitest/coverage-v8","old_version":"4.0.16","new_version":"4.0.18","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"@vitest/ui","old_version":"4.0.16","new_version":"4.0.18","repository_url":"https://github.com/vitest-dev/vitest"},{"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.0.3","repository_url":"https://github.com/eslint/eslint"},{"name":"eslint-plugin-prettier","old_version":"5.5.4","new_version":"5.5.5","repository_url":"https://github.com/prettier/eslint-plugin-prettier"},{"name":"jsdom","old_version":"27.4.0","new_version":"28.1.0","repository_url":"https://github.com/jsdom/jsdom"},{"name":"postcss","old_version":"8.5.6","new_version":"8.5.8","repository_url":"https://github.com/postcss/postcss"},{"name":"prettier","old_version":"3.7.4","new_version":"3.8.1","repository_url":"https://github.com/prettier/prettier"},{"name":"tailwindcss","old_version":"4.1.18","new_version":"4.2.1","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"vitest","old_version":"4.0.16","new_version":"4.0.18","repository_url":"https://github.com/vitest-dev/vitest"}],"path":null,"ecosystem":"npm"},"body":"Bumps the dev-dependencies group with 20 updates in the /web directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.2.0` | `2.3.1` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.1.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.1.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.1.0` | `21.3.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.1.0` | `21.3.0` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.1.0` | `21.3.0` |\n| [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.1.18` | `4.2.1` |\n| [@testing-library/angular](https://github.com/testing-library/angular-testing-library) | `18.1.1` | `19.1.0` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.51.0` | `8.56.1` |\n| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.51.0` | `8.56.1` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.16` | `4.0.18` |\n| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.0.16` | `4.0.18` |\n| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.23` | `10.4.27` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.0.3` |\n| [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) | `5.5.4` | `5.5.5` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `28.1.0` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.6` | `8.5.8` |\n| [prettier](https://github.com/prettier/prettier) | `3.7.4` | `3.8.1` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.1.18` | `4.2.1` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.0.16` | `4.0.18` |\n\n\nUpdates `@analogjs/vite-plugin-angular` from 2.2.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/releases\"\u003e\u003ccode\u003e@​analogjs/vite-plugin-angular\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.0...v2.3.1\"\u003e2.3.1\u003c/a\u003e (2026-03-01)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use single ? for JIT style resolve suffix (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2096\"\u003e#2096\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/76939300492d60a6e4253499e85fa75dad6649d0\"\u003e7693930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.0...v2.3.1-beta.1\"\u003e2.3.1-beta.1\u003c/a\u003e (2026-02-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e hash styleId to prevent filename exceeding max length (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2090\"\u003e#2090\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/2aa211479e16cc106f957d5e373ea3a1386abfc6\"\u003e2aa2114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.2.3...v2.3.0\"\u003e2.3.0\u003c/a\u003e (2026-02-25)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd dependsOn to astro-angular build (\u003ca href=\"https://github.com/analogjs/analog/commit/1a6182d311e6235a6b1d3ae2e6a3dfa37697ee46\"\u003e1a6182d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebuild before publish (\u003ca href=\"https://github.com/analogjs/analog/commit/432ffa6a987c679bb7eea45f5c6fa7eb235dc286\"\u003e432ffa6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebump build (\u003ca href=\"https://github.com/analogjs/analog/commit/1c61fbc289a079a2ef5e3ce65dce9c7e9f2a7fed\"\u003e1c61fbc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epublish from workflow (\u003ca href=\"https://github.com/analogjs/analog/commit/390dd747f2d2e341260ac20d57f2b7d4057e371c\"\u003e390dd74\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove npm token from semantic release (\u003ca href=\"https://github.com/analogjs/analog/commit/ba42f16842772315e61e7ea29608c9df42504c97\"\u003eba42f16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove npm token publishing (\u003ca href=\"https://github.com/analogjs/analog/commit/1c490ad360733095e56abd9be97f59f81322714a\"\u003e1c490ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert back to semantic release (\u003ca href=\"https://github.com/analogjs/analog/commit/ea10b1b7caa573ef65b7796ab81796073fc6183b\"\u003eea10b1b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular): revert \u0026quot;fix(storybook-angular:\u003c/strong\u003e add missing applyDecorators to render annotaions\u0026quot; (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2088\"\u003e#2088\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/86e2a6a4c30aa7ab2d469bd18db32b0ec7daca44\"\u003e86e2a6a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e add missing applyDecorators to render annotaions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2086\"\u003e#2086\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9a141638ad674e4b5356ed6a0120f41d8ac90f18\"\u003e9a14163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e add missing await to storybook-angular preset core (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2081\"\u003e#2081\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/352870a86ca8dd08446b8538e04487e64398d0f4\"\u003e352870a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e resolve experimentalZoneless in Vitest path (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2059\"\u003e#2059\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/447dad2129f8840bb279d1e1eda6e838bca0d8da\"\u003e447dad2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate implicit dependencies for build (\u003ca href=\"https://github.com/analogjs/analog/commit/cfb0abc5b0be91dc498f443778e5fa1bef95a2c3\"\u003ecfb0abc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate node setup in release workflow (\u003ca href=\"https://github.com/analogjs/analog/commit/5bd0923d965dcea4fda160cdde8aab9b61601a76\"\u003e5bd0923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate node version (\u003ca href=\"https://github.com/analogjs/analog/commit/4aaa6bdb79e1909b1b8671a6cda7312a190e9082\"\u003e4aaa6bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add missing tinyglobby dependency (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2069\"\u003e#2069\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/8661cb6ab3754c05ed3b38a268570cd92dfd7147\"\u003e8661cb6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-angular:\u003c/strong\u003e add missing zone.js optional peer dependency (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2071\"\u003e#2071\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/88a1a55825e715842e28d810894fa86986c1b1e4\"\u003e88a1a55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-angular:\u003c/strong\u003e fix setupTestBed's providers option (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2072\"\u003e#2072\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/2e7a02f4f541b8c5a02a0f5e9f7f0b7ad354f087\"\u003e2e7a02f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e support optional catch all routes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2043\"\u003e#2043\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ba9fc09fdd293d338299d949cadbfdc8137677e8\"\u003eba9fc09\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-nitro:\u003c/strong\u003e add option for markdown source output alongside prerendered routes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2082\"\u003e#2082\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c15d20b9887008fda7714437280dbfc1bb66b336\"\u003ec15d20b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-angular:\u003c/strong\u003e add setup schematic and ng-add support (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2056\"\u003e#2056\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/cc26771aa72cb2a38c2fb7ca070840eccf1e7951\"\u003ecc26771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.0-beta.18\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.0-beta.17...v2.3.0-beta.18\"\u003e2.3.0-beta.18\u003c/a\u003e (2026-02-25)\u003c/h1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e\u003ccode\u003e@​analogjs/vite-plugin-angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0-beta.3...v2.4.0-beta.4\"\u003e2.4.0-beta.4\u003c/a\u003e (2026-03-05)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e allow using custom vite plugins for Angular compilation (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2102\"\u003e#2102\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/8bb4fb44c4ccb1a0d9c51dcd6fe8c9ab840f0e4e\"\u003e8bb4fb4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0-beta.2...v2.4.0-beta.3\"\u003e2.4.0-beta.3\u003c/a\u003e (2026-03-01)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use single ? for JIT style resolve suffix (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2096\"\u003e#2096\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/76939300492d60a6e4253499e85fa75dad6649d0\"\u003e7693930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0-beta.1...v2.4.0-beta.2\"\u003e2.4.0-beta.2\u003c/a\u003e (2026-03-01)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e use non-greedy regex for path normalization (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2093\"\u003e#2093\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/fa5dd9b7e6f9e245f5c6379f2f35ee35c7be75e3\"\u003efa5dd9b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.1-beta.1...v2.4.0-beta.1\"\u003e2.4.0-beta.1\u003c/a\u003e (2026-02-27)\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e extract TOC to be property on contentFile (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2091\"\u003e#2091\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/4e870cc99e74c889743503522ae4c6f3be5d9247\"\u003e4e870cc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.0...v2.3.1-beta.1\"\u003e2.3.1-beta.1\u003c/a\u003e (2026-02-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e hash styleId to prevent filename exceeding max length (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2090\"\u003e#2090\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/2aa211479e16cc106f957d5e373ea3a1386abfc6\"\u003e2aa2114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.2.3...v2.3.0\"\u003e2.3.0\u003c/a\u003e (2026-02-25)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd dependsOn to astro-angular build (\u003ca href=\"https://github.com/analogjs/analog/commit/1a6182d311e6235a6b1d3ae2e6a3dfa37697ee46\"\u003e1a6182d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebuild before publish (\u003ca href=\"https://github.com/analogjs/analog/commit/432ffa6a987c679bb7eea45f5c6fa7eb235dc286\"\u003e432ffa6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebump build (\u003ca href=\"https://github.com/analogjs/analog/commit/1c61fbc289a079a2ef5e3ce65dce9c7e9f2a7fed\"\u003e1c61fbc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epublish from workflow (\u003ca href=\"https://github.com/analogjs/analog/commit/390dd747f2d2e341260ac20d57f2b7d4057e371c\"\u003e390dd74\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove npm token from semantic release (\u003ca href=\"https://github.com/analogjs/analog/commit/ba42f16842772315e61e7ea29608c9df42504c97\"\u003eba42f16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove npm token publishing (\u003ca href=\"https://github.com/analogjs/analog/commit/1c490ad360733095e56abd9be97f59f81322714a\"\u003e1c490ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert back to semantic release (\u003ca href=\"https://github.com/analogjs/analog/commit/ea10b1b7caa573ef65b7796ab81796073fc6183b\"\u003eea10b1b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular): revert \u0026quot;fix(storybook-angular:\u003c/strong\u003e add missing applyDecorators to render annotaions\u0026quot; (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2088\"\u003e#2088\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/86e2a6a4c30aa7ab2d469bd18db32b0ec7daca44\"\u003e86e2a6a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e add missing applyDecorators to render annotaions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2086\"\u003e#2086\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9a141638ad674e4b5356ed6a0120f41d8ac90f18\"\u003e9a14163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e add missing await to storybook-angular preset core (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2081\"\u003e#2081\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/352870a86ca8dd08446b8538e04487e64398d0f4\"\u003e352870a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e resolve experimentalZoneless in Vitest path (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2059\"\u003e#2059\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/447dad2129f8840bb279d1e1eda6e838bca0d8da\"\u003e447dad2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate implicit dependencies for build (\u003ca href=\"https://github.com/analogjs/analog/commit/cfb0abc5b0be91dc498f443778e5fa1bef95a2c3\"\u003ecfb0abc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate node setup in release workflow (\u003ca href=\"https://github.com/analogjs/analog/commit/5bd0923d965dcea4fda160cdde8aab9b61601a76\"\u003e5bd0923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate node version (\u003ca href=\"https://github.com/analogjs/analog/commit/4aaa6bdb79e1909b1b8671a6cda7312a190e9082\"\u003e4aaa6bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add missing tinyglobby dependency (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2069\"\u003e#2069\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/8661cb6ab3754c05ed3b38a268570cd92dfd7147\"\u003e8661cb6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-angular:\u003c/strong\u003e add missing zone.js optional peer dependency (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2071\"\u003e#2071\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/88a1a55825e715842e28d810894fa86986c1b1e4\"\u003e88a1a55\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/553790b242b5435a54bb962a002a5b0ea612d934\"\u003e\u003ccode\u003e553790b\u003c/code\u003e\u003c/a\u003e chore: release 2.3.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/76939300492d60a6e4253499e85fa75dad6649d0\"\u003e\u003ccode\u003e7693930\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use single ? for JIT style resolve suffix (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2096\"\u003e#2096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/321e4083ac1695724b6f339b2b1d04a4416827b4\"\u003e\u003ccode\u003e321e408\u003c/code\u003e\u003c/a\u003e chore: release 2.3.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/eb5544e196800dcae77a87ee8dec0a17bbb0fd9e\"\u003e\u003ccode\u003eeb5544e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2089\"\u003e#2089\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/33c2251aada34b066e321f0fbb6f463c7366a199\"\u003e\u003ccode\u003e33c2251\u003c/code\u003e\u003c/a\u003e chore: release 2.3.0-beta.18 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/86e2a6a4c30aa7ab2d469bd18db32b0ec7daca44\"\u003e\u003ccode\u003e86e2a6a\u003c/code\u003e\u003c/a\u003e fix(storybook-angular): revert \u0026quot;fix(storybook-angular): add missing applyDeco...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/260e935bdcece77e30a986def2614f1cc2a74f11\"\u003e\u003ccode\u003e260e935\u003c/code\u003e\u003c/a\u003e docs: sync the contributors to zh-hans (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2085\"\u003e#2085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/63132bdc7b79c12b883a0fc6d01f9819b61fef6d\"\u003e\u003ccode\u003e63132bd\u003c/code\u003e\u003c/a\u003e chore: release 2.3.0-beta.17 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9a141638ad674e4b5356ed6a0120f41d8ac90f18\"\u003e\u003ccode\u003e9a14163\u003c/code\u003e\u003c/a\u003e fix(storybook-angular): add missing applyDecorators to render annotaions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2086\"\u003e#2086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0f7a6ea39f7b421d011653951e1a18825e8db21f\"\u003e\u003ccode\u003e0f7a6ea\u003c/code\u003e\u003c/a\u003e chore: release 2.3.0-beta.16 [skip ci]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.2.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​analogjs/vite-plugin-angular\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/builder` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder 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/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/5c214854f897cb698563f53db6b9bddfb23e4d8e\"\u003e\u003ccode\u003e5c21485\u003c/code\u003e\u003c/a\u003e chore(builder): change builder tests to be cross-platform (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2905\"\u003e#2905\u003c/a\u003e)\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/builder/issues/2903\"\u003e#2903\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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\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\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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:\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\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\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:\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\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-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/ffcc447713c47e0ebca1886e3a2216222f99966a\"\u003e\u003ccode\u003effcc447\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] detect \u003ccode\u003eSignal\u003c/code\u003e type correctly (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/65f2540c19820548b4e61dbbb9fddedf2e2031be\"\u003e\u003ccode\u003e65f2540\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): [no-uncalled-signals] detect Signal member access (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2848\"\u003e#2848\u003c/a\u003e)\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/eslint-plugin/issues/2903\"\u003e#2903\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/eslint-plugin/issues/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6517619cbe929f15c0a2f1eb754c97878d73abfd\"\u003e\u003ccode\u003e6517619\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] add check `InputSignalWithTransform...\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/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/eslint-plugin/issues/2803\"\u003e#2803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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 support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\u003c/a\u003e)\u003c/li\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\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.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\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\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/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/253da820cb5f263e113024068308ffd55e89bad0\"\u003e\u003ccode\u003e253da82\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [prefer-template-literal] preserve nested non st...\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/eslint-plugin-template/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/eslint-plugin-template/issues/2885\"\u003e#2885\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/d49bbe0ba374ab85f521b5f35e90fd3223031984\"\u003e\u003ccode\u003ed49bbe0\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7cf27ebb0aeb6a7c577d0bebb40b02d080cd8c2d\"\u003e\u003ccode\u003e7cf27eb\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin-template): support ignore attributes for prefer-static-str...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/0cdfc51f509ee58cdae26fd9a788497a5c9155dd\"\u003e\u003ccode\u003e0cdfc51\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): allow autofocus on dialog elements for improved ...\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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics 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/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/schematics/issues/2903\"\u003e#2903\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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/template-parser` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/template-parser/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\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🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\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-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/f78af866b48ae63bb437d422d4d29170a55e5611\"\u003e\u003ccode\u003ef78af86\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2915\"\u003e#2915\u003c/a\u003e)\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/template-parser/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/template-parser/issues/2885\"\u003e#2885\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/d49bbe0ba374ab85f521b5f35e90fd3223031984\"\u003e\u003ccode\u003ed49bbe0\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/template-parser\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@tailwindcss/postcss` from 4.1.18 to 4.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/releases\"\u003e\u003ccode\u003e@​tailwindcss/postcss\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow trailing dash in functional utility names for backwards compatibility (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19696\"\u003e#19696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly detect classes containing \u003ccode\u003e.\u003c/code\u003e characters within curly braces in MDX files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19711\"\u003e#19711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd mauve, olive, mist, and taupe color palettes to the default theme (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19627\"\u003e#19627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e package to run Tailwind CSS as a webpack plugin (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19610\"\u003e#19610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epbs-*\u003c/code\u003e and \u003ccode\u003epbe-*\u003c/code\u003e utilities for \u003ccode\u003epadding-block-start\u003c/code\u003e and \u003ccode\u003epadding-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003embs-*\u003c/code\u003e and \u003ccode\u003embe-*\u003c/code\u003e utilities for \u003ccode\u003emargin-block-start\u003c/code\u003e and \u003ccode\u003emargin-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003escroll-pbs-*\u003c/code\u003e and \u003ccode\u003escroll-pbe-*\u003c/code\u003e utilities for \u003ccode\u003escroll-padding-block-start\u003c/code\u003e and \u003ccode\u003escroll-padding-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003escroll-mbs-*\u003c/code\u003e and \u003ccode\u003escroll-mbe-*\u003c/code\u003e utilities for \u003ccode\u003escroll-margin-block-start\u003c/code\u003e and \u003ccode\u003escroll-margin-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder-bs-*\u003c/code\u003e and \u003ccode\u003eborder-be-*\u003c/code\u003e utilities for \u003ccode\u003eborder-block-start\u003c/code\u003e and \u003ccode\u003eborder-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einline-*\u003c/code\u003e, \u003ccode\u003emin-inline-*\u003c/code\u003e, \u003ccode\u003emax-inline-*\u003c/code\u003e utilities for \u003ccode\u003einline-size\u003c/code\u003e, \u003ccode\u003emin-inline-size\u003c/code\u003e, and \u003ccode\u003emax-inline-size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19612\"\u003e#19612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eblock-*\u003c/code\u003e, \u003ccode\u003emin-block-*\u003c/code\u003e, \u003ccode\u003emax-block-*\u003c/code\u003e utilities for \u003ccode\u003eblock-size\u003c/code\u003e, \u003ccode\u003emin-block-size\u003c/code\u003e, and \u003ccode\u003emax-block-size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19612\"\u003e#19612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einset-s-*\u003c/code\u003e, \u003ccode\u003einset-e-*\u003c/code\u003e, \u003ccode\u003einset-bs-*\u003c/code\u003e, \u003ccode\u003einset-be-*\u003c/code\u003e utilities for \u003ccode\u003einset-inline-start\u003c/code\u003e, \u003ccode\u003einset-inline-end\u003c/code\u003e, \u003ccode\u003einset-block-start\u003c/code\u003e, and \u003ccode\u003einset-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19613\"\u003e#19613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efont-features-*\u003c/code\u003e utility for \u003ccode\u003efont-feature-settings\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19623\"\u003e#19623\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent double \u003ccode\u003e@supports\u003c/code\u003e wrapper for \u003ccode\u003ecolor-mix\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19450\"\u003e#19450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow whitespace around \u003ccode\u003e@source inline()\u003c/code\u003e argument (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19461\"\u003e#19461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit comment when source maps are saved to files when using \u003ccode\u003e@tailwindcss/cli\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19447\"\u003e#19447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect utilities containing capital letters followed by numbers (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19465\"\u003e#19465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix class extraction for Rails' strict locals (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19525\"\u003e#19525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlign \u003ccode\u003e@utility\u003c/code\u003e name validation with Oxide scanner rules (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19524\"\u003e#19524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix infinite loop when using \u003ccode\u003e@variant\u003c/code\u003e inside \u003ccode\u003e@custom-variant\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19633\"\u003e#19633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow multiples of \u003ccode\u003e.25\u003c/code\u003e in \u003ccode\u003easpect-*\u003c/code\u003e fractions (e.g. \u003ccode\u003easpect-8.5/11\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19688\"\u003e#19688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure changes to external files listed via \u003ccode\u003e@source\u003c/code\u003e trigger a full page reload when using \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19670\"\u003e#19670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of Oxide scanner in bigger projects by reducing file system walks (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19632\"\u003e#19632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure import aliases in Astro v5 work without crashing when using \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/issues/19677\"\u003e#19677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow escape characters in \u003ccode\u003e@utility\u003c/code\u003e names to improve support with formatters such as Biome (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19626\"\u003e#19626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect canonicalization results when canonicalizing multiple times (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19675\"\u003e#19675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.jj\u003c/code\u003e to default ignored content directories (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19687\"\u003e#19687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate \u003ccode\u003estart-*\u003c/code\u003e and \u003ccode\u003eend-*\u003c/code\u003e utilities in favor of \u003ccode\u003einset-s-*\u003c/code\u003e and \u003ccode\u003einset-e-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19613\"\u003e#19613\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​tailwindcss/postcss\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.2.1] - 2026-02-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow trailing dash in functional utility names for backwards compatibility (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19696\"\u003e#19696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly detect classes containing \u003ccode\u003e.\u003c/code\u003e characters within curly braces in MDX files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19711\"\u003e#19711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.2.0] - 2026-02-18\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd mauve, olive, mist, and taupe color palettes to the default theme (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19627\"\u003e#19627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e package to run Tailwind CSS as a webpack plugin (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19610\"\u003e#19610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epbs-*\u003c/code\u003e and \u003ccode\u003epbe-*\u003c/code\u003e utilities for \u003ccode\u003epadding-block-start\u003c/code\u003e and \u003ccode\u003epadding-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003embs-*\u003c/code\u003e and \u003ccode\u003embe-*\u003c/code\u003e utilities for \u003ccode\u003emargin-block-start\u003c/code\u003e and \u003ccode\u003emargin-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003escroll-pbs-*\u003c/code\u003e and \u003ccode\u003escroll-pbe-*\u003c/code\u003e utilities for \u003ccode\u003escroll-padding-block-start\u003c/code\u003e and \u003ccode\u003escroll-padding-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003escroll-mbs-*\u003c/code\u003e and \u003ccode\u003escroll-mbe-*\u003c/code\u003e utilities for \u003ccode\u003escroll-margin-block-start\u003c/code\u003e and \u003ccode\u003escroll-margin-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder-bs-*\u003c/code\u003e and \u003ccode\u003eborder-be-*\u003c/code\u003e utilities for \u003ccode\u003eborder-block-start\u003c/code\u003e and \u003ccode\u003eborder-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einline-*\u003c/code\u003e, \u003ccode\u003emin-inline-*\u003c/code\u003e, \u003ccode\u003emax-inline-*\u003c/code\u003e utilities for \u003ccode\u003einline-size\u003c/code\u003e, \u003ccode\u003emin-inline-size\u003c/code\u003e, and \u003ccode\u003emax-inline-size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19612\"\u003e#19612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eblock-*\u003c/code\u003e, \u003ccode\u003emin-block-*\u003c/code\u003e, \u003ccode\u003emax-block-*\u003c/code\u003e utilities for \u003ccode\u003eblock-size\u003c/code\u003e, \u003ccode\u003emin-block-size\u003c/code\u003e, and \u003ccode\u003emax-block-size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19612\"\u003e#19612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einset-s-*\u003c/code\u003e, \u003ccode\u003einset-e-*\u003c/code\u003e, \u003ccode\u003einset-bs-*\u003c/code\u003e, \u003ccode\u003einset-be-*\u003c/code\u003e utilities for \u003ccode\u003einset-inline-start\u003c/code\u003e, \u003ccode\u003einset-inline-end\u003c/code\u003e, \u003ccode\u003einset-block-start\u003c/code\u003e, and \u003ccode\u003einset-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19613\"\u003e#19613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efont-features-*\u003c/code\u003e utility for \u003ccode\u003efont-feature-settings\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19623\"\u003e#19623\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent double \u003ccode\u003e@supports\u003c/code\u003e wrapper for \u003ccode\u003ecolor-mix\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19450\"\u003e#19450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow whitespace around \u003ccode\u003e@source inline()\u003c/code\u003e argument (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19461\"\u003e#19461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit comment when source maps are saved to files when using \u003ccode\u003e@tailwindcss/cli\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19447\"\u003e#19447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect utilities containing capital letters followed by numbers (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19465\"\u003e#19465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix class extraction for Rails' strict locals (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19525\"\u003e#19525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlign \u003ccode\u003e@utility\u003c/code\u003e name validation with Oxide scanner rules (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19524\"\u003e#19524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix infinite loop when using \u003ccode\u003e@variant\u003c/code\u003e inside \u003ccode\u003e@custom-variant\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19633\"\u003e#19633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow multiples of \u003ccode\u003e.25\u003c/code\u003e in \u003ccode\u003easpect-*\u003c/code\u003e fractions (e.g. \u003ccode\u003easpect-8.5/11\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19688\"\u003e#19688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure changes to external files listed via \u003ccode\u003e@source\u003c/code\u003e trigger a full page reload when using \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19670\"\u003e#19670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of Oxide scanner in bigger projects by reducing file system walks (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19632\"\u003e#19632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure import aliases in Astro v5 work without crashing when using \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/issues/19677\"\u003e#19677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAll...\n\n_Description has been truncated_","html_url":"https://github.com/pegasusheavy/armature/pull/151","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pegasusheavy%2Farmature/issues/151","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/151/packages"},{"uuid":"4042012968","node_id":"PR_kwDONWdOm87I5FWz","number":227,"state":"open","title":"Bump the js-dependencies group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["frontend","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-08T19:33:56.000Z","updated_at":"2026-03-08T19:34:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"js-dependencies","update_count":8,"packages":[{"name":"apexcharts","old_version":"5.10.1","new_version":"5.10.3","repository_url":"https://github.com/apexcharts/apexcharts.js"},{"name":"ng-apexcharts","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/apexcharts/ng-apexcharts"},{"name":"@angular-eslint/builder","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.3","new_version":"10.0.3","repository_url":"https://github.com/eslint/eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the js-dependencies group with 7 updates in the /frontend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [apexcharts](https://github.com/apexcharts/apexcharts.js) | `5.10.1` | `5.10.3` |\n| [ng-apexcharts](https://github.com/apexcharts/ng-apexcharts) | `2.2.0` | `2.3.0` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.2.0` | `21.3.0` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.3` | `10.0.3` |\n\n\nUpdates `apexcharts` from 5.10.1 to 5.10.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/apexcharts/apexcharts.js/releases\"\u003eapexcharts's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e💎 Version 5.10.3\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSSR: Bar/column charts rendered duplicate elements in \u003ccode\u003erenderToString()\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://github.com/apexcharts/apexcharts.js/commit/1b4bcb1f\"\u003e\u003ccode\u003e1b4bcb1f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eSSRElement.appendChild\u003c/code\u003e and \u003ccode\u003einsertBefore\u003c/code\u003e were unconditionally pushing the\nchild onto the children array without checking whether the child already had a\nparent. Because \u003ccode\u003eBar.js\u003c/code\u003e creates \u003ccode\u003eelDataLabelsWrap\u003c/code\u003e, \u003ccode\u003eelGoalsMarkers\u003c/code\u003e, and\n\u003ccode\u003eelBarShadows\u003c/code\u003e once per series but calls \u003ccode\u003eelSeries.add()\u003c/code\u003e on every data-point\niteration, the SSR virtual DOM accumulated N×N bar paths and datalabel groups\ninstead of N. The fix mirrors standard browser DOM move semantics: if a node\nalready has a parent it is detached from that parent before being appended.\nThis affects both \u003ccode\u003eappendChild\u003c/code\u003e and \u003ccode\u003einsertBefore\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💎 Version 5.10.2\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTree-shaking: ESM entry points were incorrectly eliminated by bundlers\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edist/*.esm.js\u003c/code\u003e and \u003ccode\u003edist/features/*.esm.js\u003c/code\u003e were missing from the\n\u003ccode\u003esideEffects\u003c/code\u003e field in \u003ccode\u003epackage.json\u003c/code\u003e. Bundlers such as Webpack and Rollup\ntreat files not listed as having side effects as safe to drop when they are\nnot explicitly imported, which caused chart type and feature registrations to\nbe silently tree-shaken away in production builds. Adding both glob patterns\nensures the self-registering ESM bundles are always retained.\u003c/p\u003e\n\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/apexcharts/apexcharts.js/commit/dea8e7d8b18749f99668585f101090015ff2626f\"\u003e\u003ccode\u003edea8e7d\u003c/code\u003e\u003c/a\u003e fixes \u003ca href=\"https://redirect.github.com/apexcharts/apexcharts.js/issues/5184\"\u003e#5184\u003c/a\u003e; re-add paper() to typescript definitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apexcharts/apexcharts.js/commit/6c76437a555532f9ab4d0b51d82c0cf6d47f629f\"\u003e\u003ccode\u003e6c76437\u003c/code\u003e\u003c/a\u003e build: 5.10.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apexcharts/apexcharts.js/commit/1b4bcb1f2bbe46f7280c9f332ac00c33e8c04ad3\"\u003e\u003ccode\u003e1b4bcb1\u003c/code\u003e\u003c/a\u003e fix: SSRElement.appendChild now removes child from previous parent before re-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apexcharts/apexcharts.js/commit/7f97cb5465a5541840c44328cfd1134d17477671\"\u003e\u003ccode\u003e7f97cb5\u003c/code\u003e\u003c/a\u003e build: 5.10.2\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/apexcharts/apexcharts.js/compare/v5.10.1...v5.10.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ng-apexcharts` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/apexcharts/ng-apexcharts/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/builder` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\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-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/5c214854f897cb698563f53db6b9bddfb23e4d8e\"\u003e\u003ccode\u003e5c21485\u003c/code\u003e\u003c/a\u003e chore(builder): change builder tests to be cross-platform (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2905\"\u003e#2905\u003c/a\u003e)\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/builder/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\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\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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:\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\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\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/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/ffcc447713c47e0ebca1886e3a2216222f99966a\"\u003e\u003ccode\u003effcc447\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] detect \u003ccode\u003eSignal\u003c/code\u003e type correctly (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/65f2540c19820548b4e61dbbb9fddedf2e2031be\"\u003e\u003ccode\u003e65f2540\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): [no-uncalled-signals] detect Signal member access (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2848\"\u003e#2848\u003c/a\u003e)\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/eslint-plugin/issues/2903\"\u003e#2903\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/eslint-plugin/issues/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6517619cbe929f15c0a2f1eb754c97878d73abfd\"\u003e\u003ccode\u003e6517619\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] add check `InputSignalWithTransform...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\u003eGuillaume DROUARD\u003c/li\u003e\n\u003cli\u003eJason Weinzierl\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-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/253da820cb5f263e113024068308ffd55e89bad0\"\u003e\u003ccode\u003e253da82\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [prefer-template-literal] preserve nested non st...\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/eslint-plugin-template/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/eslint-plugin-template/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\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-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/schematics/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/template-parser` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/template-parser/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume DROUARD\u003c/li\u003e\n\u003cli\u003eJason Weinzierl\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-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/f78af866b48ae63bb437d422d4d29170a55e5611\"\u003e\u003ccode\u003ef78af86\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2915\"\u003e#2915\u003c/a\u003e)\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/template-parser/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/template-parser/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/template-parser\"\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.3 to 10.0.3\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.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\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e8f21040f675753e92df8e04f2dbd03addb92985\"\u003e\u003ccode\u003ee8f2104\u003c/code\u003e\u003c/a\u003e chore: updates for v9.39.4 release (Jenkins)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/5cd1604cea5734bc235155a1a1add9f08ae83370\"\u003e\u003ccode\u003e5cd1604\u003c/code\u003e\u003c/a\u003e refactor: simplify isCombiningCharacter helper (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20524\"\u003e#20524\u003c/a\u003e) (Huáng Jùnliàng)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/70ff1d07a8e7eba9e70b67ea55fcf2e47cdc9b2d\"\u003e\u003ccode\u003e70ff1d0\u003c/code\u003e\u003c/a\u003e chore: eslint-config-eslint require Node \u003ccode\u003e^20.19.0 || ^22.13.0 || \u0026gt;=24\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20586\"\u003e#20586\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e32df71a569d5f4aca13079dedd4ae76ea05168a\"\u003e\u003ccode\u003ee32df71\u003c/code\u003e\u003c/a\u003e chore: update eslint-plugin-eslint-comments, remove legacy-peer-deps (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20576\"\u003e#20576\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/53ca6eeed87262ebddd20636107f486badabcc1f\"\u003e\u003ccode\u003e53ca6ee\u003c/code\u003e\u003c/a\u003e chore: disable \u003ccode\u003eeslint-comments/no-unused-disable\u003c/code\u003e rule (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20578\"\u003e#20578\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e1218957452e223af27ace1f9d031ab421aec08f\"\u003e\u003ccode\u003ee121895\u003c/code\u003e\u003c/a\u003e ci: pin Node.js 25.6.1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20559\"\u003e#20559\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/efc5aef2f9a05f01d5cad53dcb91e7f2c575e295\"\u003e\u003ccode\u003eefc5aef\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003etsconfig.json\u003c/code\u003e in \u003ccode\u003eeslint-config-eslint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20551\"\u003e#20551\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev10.0.2\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/2b723616a4daeacd4605f11b4d087d4a7cae5c74\"\u003e\u003ccode\u003e2b72361\u003c/code\u003e\u003c/a\u003e fix: update \u003ccode\u003eajv\u003c/code\u003e to \u003ccode\u003e6.14.0\u003c/code\u003e to address security vulnerabilities (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20537\"\u003e#20537\u003c/a\u003e) (루밀LuMir)\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/13eeedbbd16218b0da1425b78cb284937fd964ca\"\u003e\u003ccode\u003e13eeedb\u003c/code\u003e\u003c/a\u003e docs: link rule type explanation to CLI option --fix-type (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20548\"\u003e#20548\u003c/a\u003e) (Mike McCready)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/98cbf6ba53a1fb2028d25078c7049a538d0e392c\"\u003e\u003ccode\u003e98cbf6b\u003c/code\u003e\u003c/a\u003e docs: update migration guide per Program range change (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20534\"\u003e#20534\u003c/a\u003e) (Huáng Jùnliàng)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/61a24054411fa56ce74bef554846caa9d8cb01f5\"\u003e\u003ccode\u003e61a2405\u003c/code\u003e\u003c/a\u003e docs: add missing semicolon in vars-on-top rule example (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20533\"\u003e#20533\u003c/a\u003e) (Abilash)\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/951223b29669885643f7854d7c824288ba962d7e\"\u003e\u003ccode\u003e951223b\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/eslintrc\u003c/code\u003e to ^3.3.4 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20553\"\u003e#20553\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/6aa1afe6694f3fd7f82116109a5ef2ad18ece074\"\u003e\u003ccode\u003e6aa1afe\u003c/code\u003e\u003c/a\u003e chore: update dependency eslint-plugin-jsdoc to ^62.7.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20536\"\u003e#20536\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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\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/bfce7eaa0ec5d6591fd247b7ff57b51e45fb88a1\"\u003e\u003ccode\u003ebfce7ea\u003c/code\u003e\u003c/a\u003e 10.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/d44ced84bb00b1df3c616255f28d036089703ed8\"\u003e\u003ccode\u003ed44ced8\u003c/code\u003e\u003c/a\u003e Build: changelog update for 10.0.3\u003c/li\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)\u003c/li\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\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e8f21040f675753e92df8e04f2dbd03addb92985\"\u003e\u003ccode\u003ee8f2104\u003c/code\u003e\u003c/a\u003e chore: updates for v9.39.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/5cd1604cea5734bc235155a1a1add9f08ae83370\"\u003e\u003ccode\u003e5cd1604\u003c/code\u003e\u003c/a\u003e refactor: simplify isCombiningCharacter helper (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20524\"\u003e#20524\u003c/a\u003e)\u003c/li\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\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/70ff1d07a8e7eba9e70b67ea55fcf2e47cdc9b2d\"\u003e\u003ccode\u003e70ff1d0\u003c/code\u003e\u003c/a\u003e chore: eslint-config-eslint require Node \u003ccode\u003e^20.19.0 || ^22.13.0 || \u0026gt;=24\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20586\"\u003e#20586\u003c/a\u003e)\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)\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)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eslint/eslint/compare/v9.39.3...v10.0.3\"\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/SAP/STARS/pull/227","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP%2FSTARS/issues/227","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/227/packages"}],"issue_packages":[{"old_version":"21.3.1","new_version":"21.4.0","update_type":"minor","path":"/app-components","pr_created_at":"2026-05-28T09:45:30.000Z","version_change":"21.3.1 → 21.4.0","issue":{"uuid":"4539401124","node_id":"PR_kwDOInCflM7gLeDA","number":778,"state":"open","title":"Bump the all-dependencies group in /app-components with 17 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-28T09:45:30.000Z","updated_at":"2026-05-31T09:01:12.930Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":17,"packages":[{"name":"@angular/animations","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.9","new_version":"21.2.13","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/elements","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.11","new_version":"21.2.14","repository_url":"https://github.com/angular/angular"},{"name":"@angular-eslint/builder","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.59.2","new_version":"8.60.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@typescript-eslint/parser","old_version":"8.59.2","new_version":"8.60.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"}],"path":"/app-components","ecosystem":"npm"},"body":"Bumps the all-dependencies group in /app-components with 17 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.11` | `21.2.14` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.9` | `21.2.13` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.11` | `21.2.14` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.11` | `21.2.14` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.11` | `21.2.14` |\n| [@angular/elements](https://github.com/angular/angular/tree/HEAD/packages/elements) | `21.2.11` | `21.2.14` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.11` | `21.2.14` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.11` | `21.2.14` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.11` | `21.2.14` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.11` | `21.2.14` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.1` | `21.4.0` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.59.2` | `8.60.0` |\n| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.59.2` | `8.60.0` |\n\nUpdates `@angular/animations` from 21.2.11 to 21.2.14\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.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/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.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e0b7192f441\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.14/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.2.9 to 21.2.13\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.13\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\u003e\n\u003ch2\u003e21.2.12\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/da87be76464d76ec11ae922abd5f4c72c5b4ea3e\"\u003e\u003cimg src=\"https://img.shields.io/badge/da87be7646-fix-green\" alt=\"fix - da87be7646\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e ensure dates don't overflow on a small screen (\u003ca href=\"https://redirect.github.com/angular/components/issues/33281\"\u003e#33281\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.11\u003c/h2\u003e\n\u003cp\u003eNo user facing changes in this release\u003c/p\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\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/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.13 \u0026quot;21-2-13\u0026quot; (2026-05-27)\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-rc.1 \u0026quot;metal-monkey\u0026quot; (2026-05-20)\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/ce1d9a7286b66e2c9511183586fceabf2a925c02\"\u003ece1d9a7286\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e allow menu item role override (\u003ca href=\"https://redirect.github.com/angular/components/pull/33264\"\u003e#33264\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/196b7064db336830ee9c43244c00631935dd2c55\"\u003e196b7064db\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e defer menu item focus in case menus in cdk overlay (\u003ca href=\"https://redirect.github.com/angular/components/pull/33258\"\u003e#33258\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/6443b79f9a629c67766675ebd740722eb65b2926\"\u003e6443b79f9a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003emenu:\u003c/strong\u003e unable to set softDisabled (\u003ca href=\"https://redirect.github.com/angular/components/pull/33265\"\u003e#33265\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/4c298970ed67abfa7b9980e219bbbafe3c71ddc5\"\u003e4c298970ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003escrolling:\u003c/strong\u003e make it easier to provide custom scrollable (\u003ca href=\"https://redirect.github.com/angular/components/pull/33269\"\u003e#33269\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/f2f62675e19020fb6443f1477b4b1d93015a5927\"\u003ef2f62675e1\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e ensure dates don't overflow on a small screen (\u003ca href=\"https://redirect.github.com/angular/components/pull/33281\"\u003e#33281\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/f1a435508ada291b580e20e628464f552288690d\"\u003ef1a435508a\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e handle mixed sidenav and drawer (\u003ca href=\"https://redirect.github.com/angular/components/pull/33274\"\u003e#33274\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/a4d92c5fcb7d163ec8dd180815175bbaa0a38491\"\u003ea4d92c5fcb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e more robust reset logic for inert attribute (\u003ca href=\"https://redirect.github.com/angular/components/pull/33257\"\u003e#33257\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.12 \u0026quot;plastic-moose\u0026quot; (2026-05-20)\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/da87be76464d76ec11ae922abd5f4c72c5b4ea3e\"\u003eda87be7646\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e ensure dates don't overflow on a small screen (\u003ca href=\"https://redirect.github.com/angular/components/pull/33281\"\u003e#33281\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-rc.0 \u0026quot;crystal lotion\u0026quot; (2026-05-13)\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/c3161985279bf49f9aae55b732fdd3b2872e1f7e\"\u003ec316198527\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e mark content as inert while open\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/components/commit/c2f1c5b035795079b155b9e60a290abe4d4c9537\"\u003ec2f1c5b035\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003esidenav:\u003c/strong\u003e query not resolving\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/84f2afd24933c8742662ee6d12a6f3f98f5dea9e\"\u003e84f2afd249\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove developer preview tag from aria (\u003ca href=\"https://redirect.github.com/angular/components/pull/33232\"\u003e#33232\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\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/7828452e964b62f058f83f0d97cf9daedf875b57\"\u003e\u003ccode\u003e7828452\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.13 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e43b7aacd86fb00e34e894d9093a8255e4201ec8\"\u003e\u003ccode\u003ee43b7aa\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.12 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/da87be76464d76ec11ae922abd5f4c72c5b4ea3e\"\u003e\u003ccode\u003eda87be7\u003c/code\u003e\u003c/a\u003e fix(material/datepicker): ensure dates don't overflow on a small screen (\u003ca href=\"https://redirect.github.com/angular/components/issues/33281\"\u003e#33281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e101874701ed790345f2af292cee81fff573a46e\"\u003e\u003ccode\u003ee101874\u003c/code\u003e\u003c/a\u003e docs(material/tooltip): fix tooltip-position-at-origin example overflow (\u003ca href=\"https://redirect.github.com/angular/components/issues/33218\"\u003e#33218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/1238d1573e706cbf0a2cabcc97e59d28a9499ecb\"\u003e\u003ccode\u003e1238d15\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.11 release\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.9...v21.2.13\"\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.2.11 to 21.2.14\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.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/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.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e0b7192f441\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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/30cf85f71c52683016200ecf6d68b4418084ee6e\"\u003e\u003ccode\u003e30cf85f\u003c/code\u003e\u003c/a\u003e refactor(common): update deprecation message\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.14/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.2.11 to 21.2.14\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.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/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.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e0b7192f441\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003ccode\u003e68282df\u003c/code\u003e\u003c/a\u003e fix(compiler): strip namespaced SVG script elements during template compilation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6652ec0115b20a6f8721137769afac30cd70f9a6\"\u003e\u003ccode\u003e6652ec0\u003c/code\u003e\u003c/a\u003e refactor(core): align namespaced attribute validation and security schema con...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/baf92da96ed73a0f4748edf05d3c0702cab219da\"\u003e\u003ccode\u003ebaf92da\u003c/code\u003e\u003c/a\u003e test: remove invalid css that was causing issues with the postcss parser\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003ccode\u003e1c6553e\u003c/code\u003e\u003c/a\u003e fix(core): disallow event attribute bindings in host bindings unconditionally\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.14/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.2.11 to 21.2.14\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/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/blob/main/CHANGELOG.md\"\u003e@​angular/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e0b7192f441\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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/1d6e71dd788ebda5d9bb9d3c560cc27bb503f44b\"\u003e\u003ccode\u003e1d6e71d\u003c/code\u003e\u003c/a\u003e docs: clarify ngDoCheck invocation behavior with OnPush strategy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003ccode\u003e49113ac\u003c/code\u003e\u003c/a\u003e fix(core): visit ICU expressions in signal migration schematics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003ccode\u003e68282df\u003c/code\u003e\u003c/a\u003e fix(compiler): strip namespaced SVG script elements during template compilation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003ccode\u003ec0f5227\u003c/code\u003e\u003c/a\u003e fix(core): do not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003ccode\u003e0fb2724\u003c/code\u003e\u003c/a\u003e fix(core): reject script element as a dynamic component host\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6652ec0115b20a6f8721137769afac30cd70f9a6\"\u003e\u003ccode\u003e6652ec0\u003c/code\u003e\u003c/a\u003e refactor(core): align namespaced attribute validation and security schema con...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003ccode\u003e938a7f3\u003c/code\u003e\u003c/a\u003e fix(core): makes resource URL sanitizer lookup case-insensitive\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003ccode\u003e1c6553e\u003c/code\u003e\u003c/a\u003e fix(core): disallow event attribute bindings in host bindings unconditionally\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/9e38ed7d5773a9193ba07afdba3f7a9f2fe02d18\"\u003e\u003ccode\u003e9e38ed7\u003c/code\u003e\u003c/a\u003e fix(core): sanitizer typings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/3430251fef93f6aec1fa9c7867e85df23f67c9a0\"\u003e\u003ccode\u003e3430251\u003c/code\u003e\u003c/a\u003e fix(core): i18n flags leaking on errors\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.14/packages/core\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/elements` from 21.2.11 to 21.2.14\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/elements's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.14\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e\u003cimg src=\"https://img.shields.io/badge/68282dff9f-fix-green\" alt=\"fix - 68282dff9f\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003e\u003cimg src=\"https://img.shields.io/badge/c0f52272ed-fix-green\" alt=\"fix - c0f52272ed\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e\u003cimg src=\"https://img.shields.io/badge/938a7f3edd-fix-green\" alt=\"fix - 938a7f3edd\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e\u003cimg src=\"https://img.shields.io/badge/0fb2724194-fix-green\" alt=\"fix - 0fb2724194\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e\u003cimg src=\"https://img.shields.io/badge/49113ac0ef-fix-green\" alt=\"fix - 49113ac0ef\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e\u003cimg src=\"https://img.shields.io/badge/099bf577ee-fix-green\" alt=\"fix - 099bf577ee\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003e21.2.13\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e\u003cimg src=\"https://img.shields.io/badge/1c6553e97d-fix-green\" alt=\"fix - 1c6553e97d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e\u003cimg src=\"https://img.shields.io/badge/629905d537-fix-green\" alt=\"fix - 629905d537\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0b7192f4410d055191ac9b15bff57d1d0b9a644f\"\u003e\u003cimg src=\"https://img.shields.io/badge/0b7192f441-fix-green\" alt=\"fix - 0b7192f441\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\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\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/blob/main/CHANGELOG.md\"\u003e@​angular/elements's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.14 (2026-05-20)\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/68282dff9f9ef46540cca4bd38fc1ab739c8a783\"\u003e68282dff9f\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003estrip namespaced SVG script elements during template compilation\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/c0f52272ed337d4776bd4178cbbdc7f32037500f\"\u003ec0f52272ed\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edo not insert todo when migrating void \u003ca href=\"https://github.com/Output\"\u003e\u003ccode\u003e@​Output\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/938a7f3eddda97a39edb9edcc8b4dd970858b3a2\"\u003e938a7f3edd\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003emakes resource URL sanitizer lookup case-insensitive\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/0fb272419407a64a0a47096b03a911f4e7e83d79\"\u003e0fb2724194\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ereject script element as a dynamic component host\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/49113ac0eff852d987b5acb28a9bbda0242842cd\"\u003e49113ac0ef\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003evisit ICU expressions in signal migration schematics\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/099bf577ee8f0bab60593a8fd2a1de7d298e3cd6\"\u003e099bf577ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eskip scroll-to-top on initial navigation when hydrating\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-rc.0 (2026-05-13)\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/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18\"\u003ec7aef8ec5d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eenforce parentheses containing arguments for :host-context\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6\"\u003e8a1533c9ad\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003epreserve leading commas in animation definitions\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a\"\u003e194f723f66\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove dedicated support for legacy shadow DOM selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048\"\u003e4c25a42e98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove deprecated shadow CSS encapsulation polyfills\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7\"\u003e7dc1017e51\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003esimplify handling of colon host with a selector list\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5\"\u003eccb7d427e4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003etype check invalid for loops\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/119a19e604a500f295867fc2cf2e6dbd43a9d807\"\u003e119a19e604\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eforward BEFORE_APP_SERIALIZED errors to ErrorHandler\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.13 (2026-05-13)\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/1c6553e97d9655d8c48fbf625987fae86f9cd947\"\u003e1c6553e97d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003edisallow event attribute bindings in host bindings unconditionally\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/629905d537f59dc3c264c49f6347e3599dea0215\"\u003e629905d537\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eadd \u003ccode\u003eallowedHosts\u003c/code\u003e option to \u003ccode\u003erenderModule\u003c/code\u003e and \u003ccode\u003erenderApplication\u003c/code\u003e\u003c/td\u003e\n\u003c/t...\n\n_Description has been truncated_\n\n\u003c!-- CURSOR_SUMMARY --\u003e\n---\n\n\u003e [!NOTE]\n\u003e **Medium Risk**\n\u003e Patch-level Angular updates can change runtime security and template/host binding behavior; verify build, tests, and lint even though no app source changed.\n\u003e \n\u003e **Overview**\n\u003e This PR **only updates dependencies** in `app-components` (`package.json` and `package-lock.json`); there are **no application source changes**.\n\u003e \n\u003e **Runtime Angular** packages move from **21.2.11 → 21.2.14** (and `@angular/cdk` **21.2.9 → 21.2.13**), covering animations, common, compiler, core, elements, forms, platform-browser, platform-browser-dynamic, and router.\n\u003e \n\u003e **Tooling** bumps include `@angular-eslint/*` **21.3.1 → 21.4.0** and `@typescript-eslint/eslint-plugin` **8.59.2 → 8.60.0**; the lockfile also refreshes related transitive versions (e.g. Rollup, msgpackr, more `@typescript-eslint/*` at 8.60.0).\n\u003e \n\u003e Several devDependency pins in `package.json` are **unchanged** in this diff (e.g. `@angular/compiler-cli`, `@angular/cli`, `@angular-eslint/template-parser`, `@typescript-eslint/parser`), so the tree may still mix patch levels until a follow-up align.\n\u003e \n\u003e **Review focus:** run `npm ci`, `ng build`, `ng test`, and `ng lint` in `app-components`; upstream 21.2.x patches include security and binding/sanitizer fixes that can affect behavior without local code edits.\n\u003e \n\u003e \u003csup\u003eReviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 87753c54359befd1ea741db176e029e1dc1bd869. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).\u003c/sup\u003e\n\u003c!-- /CURSOR_SUMMARY --\u003e","html_url":"https://github.com/trimble-oss/modus-icons/pull/778","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/trimble-oss%2Fmodus-icons/issues/778","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/778/packages"}},{"old_version":"21.3.1","new_version":"21.4.0","update_type":"minor","path":null,"pr_created_at":"2026-05-24T05:57:47.000Z","version_change":"21.3.1 → 21.4.0","issue":{"uuid":"4510660393","node_id":"PR_kwDOGe8x_M7evEoz","number":1297,"state":"open","title":"chore(deps-dev)(deps-dev): bump the development-dependencies group across 1 directory with 12 updates","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-05-24T05:57:47.000Z","updated_at":"2026-05-24T05:57:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)(deps-dev): bump","group_name":"development-dependencies","update_count":12,"packages":[{"name":"eslint-plugin-jest","old_version":"29.15.1","new_version":"29.15.2","repository_url":"https://github.com/jest-community/eslint-plugin-jest"},{"name":"jest","old_version":"30.3.0","new_version":"30.4.2","repository_url":"https://github.com/jestjs/jest"},{"name":"ts-jest","old_version":"29.4.6","new_version":"29.4.9","repository_url":"https://github.com/kulshekhar/ts-jest"},{"name":"@angular-devkit/architect","old_version":"0.2102.5","new_version":"0.2102.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/core","old_version":"21.2.5","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.5","new_version":"21.2.11","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.3.1","new_version":"21.4.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/language-service","old_version":"21.2.6","new_version":"21.2.13","repository_url":"https://github.com/angular/angular"}],"path":null,"ecosystem":"npm"},"body":"Bumps the development-dependencies group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) | `29.15.1` | `29.15.2` |\n| [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) | `30.3.0` | `30.4.2` |\n| [ts-jest](https://github.com/kulshekhar/ts-jest) | `29.4.6` | `29.4.9` |\n| [@angular-devkit/architect](https://github.com/angular/angular-cli) | `0.2102.5` | `0.2102.11` |\n| [@angular-devkit/core](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.11` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.11` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.3.1` | `21.4.0` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.1` | `21.4.0` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.6` | `21.2.13` |\n\n\nUpdates `eslint-plugin-jest` from 29.15.1 to 29.15.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/releases\"\u003eeslint-plugin-jest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev29.15.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/compare/v29.15.1...v29.15.2\"\u003e29.15.2\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evalid-mock-module-path:\u003c/strong\u003e don't report virtual mocks (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1946\"\u003e#1946\u003c/a\u003e) (\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/a1916d16350344c1693384af34900055ec465e1c\"\u003ea1916d1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md\"\u003eeslint-plugin-jest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/compare/v29.15.1...v29.15.2\"\u003e29.15.2\u003c/a\u003e (2026-04-09)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evalid-mock-module-path:\u003c/strong\u003e don't report virtual mocks (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1946\"\u003e#1946\u003c/a\u003e) (\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/a1916d16350344c1693384af34900055ec465e1c\"\u003ea1916d1\u003c/a\u003e)\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/jest-community/eslint-plugin-jest/commit/f14a941887e2b598053f757f91c10a5910ffffca\"\u003e\u003ccode\u003ef14a941\u003c/code\u003e\u003c/a\u003e chore(release): 29.15.2 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/a1916d16350344c1693384af34900055ec465e1c\"\u003e\u003ccode\u003ea1916d1\u003c/code\u003e\u003c/a\u003e fix(valid-mock-module-path): don't report virtual mocks (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1946\"\u003e#1946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/4a5278787449592d473ff4507170f6ff50b1b47f\"\u003e\u003ccode\u003e4a52787\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1958\"\u003e#1958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/285c6f6a665ffb77facb0e4db77a3e2c4c986070\"\u003e\u003ccode\u003e285c6f6\u003c/code\u003e\u003c/a\u003e ci: don't run smoketest on \u003ccode\u003etannerlinsley/react-table\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1959\"\u003e#1959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/1da0928392313ffa89339ed454aa31d1712f6875\"\u003e\u003ccode\u003e1da0928\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1956\"\u003e#1956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/8532d0e53abce0e80f092940e4575ed46ae6660a\"\u003e\u003ccode\u003e8532d0e\u003c/code\u003e\u003c/a\u003e docs(valid-expect): use valid alert syntax (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1954\"\u003e#1954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/03405ae827212348ab880929231d899300f659c2\"\u003e\u003ccode\u003e03405ae\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency \u003ccode\u003e@​schemastore/package\u003c/code\u003e to v1 (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1942\"\u003e#1942\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/de0e154bd2d5966c3f2f15b4b3c8f0cd93b171ed\"\u003e\u003ccode\u003ede0e154\u003c/code\u003e\u003c/a\u003e chore(deps): update codecov/codecov-action action to v6 (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1952\"\u003e#1952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/commit/d50f50c81af62caa4c73888939e20f4b874fdbe9\"\u003e\u003ccode\u003ed50f50c\u003c/code\u003e\u003c/a\u003e chore: add node v25 to CI (\u003ca href=\"https://redirect.github.com/jest-community/eslint-plugin-jest/issues/1950\"\u003e#1950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jest-community/eslint-plugin-jest/compare/v29.15.1...v29.15.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jest` from 30.3.0 to 30.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jestjs/jest/releases\"\u003ejest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev30.4.2\u003c/h2\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Fix named imports from CJS modules whose \u003ccode\u003emodule.exports\u003c/code\u003e is a function with own-property exports (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16150\"\u003e#16150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jestjs/jest/compare/v30.4.1...v30.4.2\"\u003ehttps://github.com/jestjs/jest/compare/v30.4.1...v30.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev30.4.1\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-runner, jest-schemas, jest-types]\u003c/code\u003e Allow custom runner configuration options via tuple format \u003ccode\u003e['runner-path', {options}]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Align CJS-from-ESM default export with Node: \u003ccode\u003emodule.exports\u003c/code\u003e is always the ESM default, \u003ccode\u003e__esModule\u003c/code\u003e unwrapping is no longer applied (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jestjs/jest/compare/v30.4.0...v30.4.1\"\u003ehttps://github.com/jestjs/jest/compare/v30.4.0...v30.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev30.4.0\u003c/h2\u003e\n\u003cp\u003eBig release! 😀\u003c/p\u003e\n\u003cp\u003eMain feature is a rewrite of our custom runtime in preparation for stabilisation of native support of ESM. As part of that work \u003ccode\u003erequire(esm)\u003c/code\u003e module is now supported on Node 24.9+ (still requires \u003ccode\u003e--experimental-vm-modules\u003c/code\u003e like before).\u003c/p\u003e\n\u003cp\u003eIn addition we now support fake timers for the recently released \u003ccode\u003eTemporal\u003c/code\u003e API in Node v26.\u003c/p\u003e\n\u003cp\u003eReact 19 is also supported properly in \u003ccode\u003epretty-format\u003c/code\u003e, meaning snapshots of React components now work like they should.\u003c/p\u003e\n\u003cp\u003eDue to all the changes, there might be regressions that snuck in. Please report them!\u003c/p\u003e\n\u003cp\u003eFull list of changes below\u003c/p\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[babel-jest]\u003c/code\u003e Support collecting coverage from \u003ccode\u003e.mts\u003c/code\u003e, \u003ccode\u003e.cts\u003c/code\u003e (and other) files (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15994\"\u003e#15994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2, jest-types]\u003c/code\u003e Add \u003ccode\u003e--collect-tests\u003c/code\u003e flag to discover and list tests without executing them (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16006\"\u003e#16006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-runner, jest-worker]\u003c/code\u003e Add \u003ccode\u003eworkerGracefulExitTimeout\u003c/code\u003e config option to control how long workers are given to exit before being force-killed (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15984\"\u003e#15984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Add support for \u003ccode\u003ejest.config.mts\u003c/code\u003e as a valid configuration file (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16005\"\u003e#16005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-reporters, jest-runner]\u003c/code\u003e \u003ccode\u003everbose\u003c/code\u003e and \u003ccode\u003esilent\u003c/code\u003e can now be set per-project; the project-level value overrides the global value for that project's tests (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16133\"\u003e#16133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept \u003ccode\u003eTemporal.Duration\u003c/code\u003e in \u003ccode\u003ejest.advanceTimersByTime()\u003c/code\u003e and \u003ccode\u003ejest.advanceTimersByTimeAsync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept \u003ccode\u003eTemporal.Instant\u003c/code\u003e and \u003ccode\u003eTemporal.ZonedDateTime\u003c/code\u003e in \u003ccode\u003ejest.setSystemTime()\u003c/code\u003e and \u003ccode\u003euseFakeTimers({now})\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Support faking \u003ccode\u003eTemporal.Now.*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16131\"\u003e#16131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-mock]\u003c/code\u003e Add \u003ccode\u003eclearMocksOnScope(scope)\u003c/code\u003e on \u003ccode\u003eModuleMocker\u003c/code\u003e for clearing every mock function exposed on a scope object (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16088\"\u003e#16088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-resolve]\u003c/code\u003e Add \u003ccode\u003ecanResolveSync()\u003c/code\u003e on \u003ccode\u003eResolver\u003c/code\u003e so callers can detect when a user-configured resolver only exports an \u003ccode\u003easync\u003c/code\u003e hook (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16064\"\u003e#16064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Use synchronous \u003ccode\u003eevaluate()\u003c/code\u003e for ES modules without top-level \u003ccode\u003eawait\u003c/code\u003e on Node versions that support it (v24.9+), and prefer the synchronous transform path when a sync transformer is configured (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Support \u003ccode\u003erequire()\u003c/code\u003e of ES modules on Node v24.9+ (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16074\"\u003e#16074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Validate TC39 import attributes (\u003ccode\u003ewith { type: 'json' }\u003c/code\u003e) on ESM imports (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16127\"\u003e#16127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/transform]\u003c/code\u003e Add \u003ccode\u003ecanTransformSync(filename)\u003c/code\u003e on \u003ccode\u003eScriptTransformer\u003c/code\u003e so callers can pick the sync vs async transform path (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-util]\u003c/code\u003e Add \u003ccode\u003eisError\u003c/code\u003e helper (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16076\"\u003e#16076\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/jestjs/jest/blob/main/CHANGELOG.md\"\u003ejest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e30.4.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Fix named imports from CJS modules whose \u003ccode\u003emodule.exports\u003c/code\u003e is a function with own-property exports (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16150\"\u003e#16150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e30.4.1\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-runner, jest-schemas, jest-types]\u003c/code\u003e Allow custom runner configuration options via tuple format \u003ccode\u003e['runner-path', {options}]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Align CJS-from-ESM default export with Node: \u003ccode\u003emodule.exports\u003c/code\u003e is always the ESM default, \u003ccode\u003e__esModule\u003c/code\u003e unwrapping is no longer applied (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e30.4.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[babel-jest]\u003c/code\u003e Support collecting coverage from \u003ccode\u003e.mts\u003c/code\u003e, \u003ccode\u003e.cts\u003c/code\u003e (and other) files (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15994\"\u003e#15994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2, jest-types]\u003c/code\u003e Add \u003ccode\u003e--collect-tests\u003c/code\u003e flag to discover and list tests without executing them (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16006\"\u003e#16006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-runner, jest-worker]\u003c/code\u003e Add \u003ccode\u003eworkerGracefulExitTimeout\u003c/code\u003e config option to control how long workers are given to exit before being force-killed (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15984\"\u003e#15984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Add support for \u003ccode\u003ejest.config.mts\u003c/code\u003e as a valid configuration file (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16005\"\u003e#16005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config, jest-core, jest-reporters, jest-runner]\u003c/code\u003e \u003ccode\u003everbose\u003c/code\u003e and \u003ccode\u003esilent\u003c/code\u003e can now be set per-project; the project-level value overrides the global value for that project's tests (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16133\"\u003e#16133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept \u003ccode\u003eTemporal.Duration\u003c/code\u003e in \u003ccode\u003ejest.advanceTimersByTime()\u003c/code\u003e and \u003ccode\u003ejest.advanceTimersByTimeAsync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Accept \u003ccode\u003eTemporal.Instant\u003c/code\u003e and \u003ccode\u003eTemporal.ZonedDateTime\u003c/code\u003e in \u003ccode\u003ejest.setSystemTime()\u003c/code\u003e and \u003ccode\u003euseFakeTimers({now})\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16128\"\u003e#16128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/fake-timers]\u003c/code\u003e Support faking \u003ccode\u003eTemporal.Now.*\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16131\"\u003e#16131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-mock]\u003c/code\u003e Add \u003ccode\u003eclearMocksOnScope(scope)\u003c/code\u003e on \u003ccode\u003eModuleMocker\u003c/code\u003e for clearing every mock function exposed on a scope object (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16088\"\u003e#16088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-resolve]\u003c/code\u003e Add \u003ccode\u003ecanResolveSync()\u003c/code\u003e on \u003ccode\u003eResolver\u003c/code\u003e so callers can detect when a user-configured resolver only exports an \u003ccode\u003easync\u003c/code\u003e hook (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16064\"\u003e#16064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Use synchronous \u003ccode\u003eevaluate()\u003c/code\u003e for ES modules without top-level \u003ccode\u003eawait\u003c/code\u003e on Node versions that support it (v24.9+), and prefer the synchronous transform path when a sync transformer is configured (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Support \u003ccode\u003erequire()\u003c/code\u003e of ES modules on Node v24.9+ (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16074\"\u003e#16074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-runtime]\u003c/code\u003e Validate TC39 import attributes (\u003ccode\u003ewith { type: 'json' }\u003c/code\u003e) on ESM imports (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16127\"\u003e#16127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/transform]\u003c/code\u003e Add \u003ccode\u003ecanTransformSync(filename)\u003c/code\u003e on \u003ccode\u003eScriptTransformer\u003c/code\u003e so callers can pick the sync vs async transform path (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16062\"\u003e#16062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-util]\u003c/code\u003e Add \u003ccode\u003eisError\u003c/code\u003e helper (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16076\"\u003e#16076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[pretty-format]\u003c/code\u003e Support React 19 (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16123\"\u003e#16123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[expect-utils]\u003c/code\u003e Fix \u003ccode\u003etoStrictEqual\u003c/code\u003e failing on \u003ccode\u003estructuredClone\u003c/code\u003e results due to cross-realm constructor mismatch (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15959\"\u003e#15959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[@jest/expect-utils]\u003c/code\u003e Prevent \u003ccode\u003etoMatchObject\u003c/code\u003e/subset matching from throwing when encountering exotic iterables (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15952\"\u003e#15952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[fake-timers]\u003c/code\u003e Convert \u003ccode\u003eDate\u003c/code\u003e to milliseconds before passing to \u003ccode\u003e@sinonjs/fake-timers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16029\"\u003e#16029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest]\u003c/code\u003e Export \u003ccode\u003eGlobalConfig\u003c/code\u003e and \u003ccode\u003eProjectConfig\u003c/code\u003e TypeScript types (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus]\u003c/code\u003e Prevent crash when \u003ccode\u003easyncError\u003c/code\u003e is undefined for non-Error throws (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16003\"\u003e#16003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-circus, jest-jasmine2]\u003c/code\u003e Include \u003ccode\u003eError.cause\u003c/code\u003e in JSON \u003ccode\u003efailureMessages\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15967\"\u003e#15967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Fix preset path resolution on Windows when the preset uses subpath \u003ccode\u003eexports\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/15961\"\u003e#15961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Allow \u003ccode\u003ecollectCoverage\u003c/code\u003e and \u003ccode\u003ecoverageProvider\u003c/code\u003e in project config without a validation warning (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-config]\u003c/code\u003e Project config validator now emits \u0026quot;is not supported in an individual project configuration\u0026quot; instead of \u0026quot;probably a typing mistake\u0026quot; for known global-only options (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-environment-node]\u003c/code\u003e Fix \u003ccode\u003e--localstorage-file\u003c/code\u003e warning on Node 25+ (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16086\"\u003e#16086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[jest-reporters]\u003c/code\u003e Apply global coverage threshold to unmatched pattern files in addition to glob/path thresholds (\u003ca href=\"https://redirect.github.com/jestjs/jest/pull/16137\"\u003e#16137\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jestjs/jest/commit/746f2a0f57c56e3bba555280f0587d40f3db95c0\"\u003e\u003ccode\u003e746f2a0\u003c/code\u003e\u003c/a\u003e v30.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jestjs/jest/commit/b3b4a09ed3005369dacc7466d1d2122797283785\"\u003e\u003ccode\u003eb3b4a09\u003c/code\u003e\u003c/a\u003e v30.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jestjs/jest/commit/5cbb21e0b3037edb42e503ec1a1ce80efad40c20\"\u003e\u003ccode\u003e5cbb21e\u003c/code\u003e\u003c/a\u003e v30.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jestjs/jest/commit/db7141a93cc85fab81cf9c25368e1f2b2c312286\"\u003e\u003ccode\u003edb7141a\u003c/code\u003e\u003c/a\u003e fix: allow \u003ccode\u003ecollectCoverage\u003c/code\u003e and \u003ccode\u003ecoverageProvider\u003c/code\u003e in project config (\u003ca href=\"https://github.com/jestjs/jest/tree/HEAD/packages/jest/issues/16132\"\u003e#16132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jestjs/jest/commits/v30.4.2/packages/jest\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ts-jest` from 29.4.6 to 29.4.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kulshekhar/ts-jest/releases\"\u003ets-jest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev29.4.9\u003c/h2\u003e\n\u003cp\u003ePlease refer to \u003ca href=\"https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch2\u003ev29.4.8\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev29.4.7\u003c/h2\u003e\n\u003cp\u003ePlease refer to \u003ca href=\"https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\u003c/p\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/kulshekhar/ts-jest/blob/main/CHANGELOG.md\"\u003ets-jest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/compare/v29.4.8...v29.4.9\"\u003e29.4.9\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euse correct registry for npm OIDC trusted publishing (\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/f8a9cc9892\"\u003ef8a9cc9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/compare/v29.4.7...v29.4.8\"\u003e29.4.8\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ewrong published assets\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/compare/v29.4.6...v29.4.7\"\u003e29.4.7\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esupport TypeScript v6 (\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/eda517d226389317d99572887d3c1aa93c81be87\"\u003eeda517d\u003c/a\u003e)\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/kulshekhar/ts-jest/commit/bac2e77231418c35cb9b9946d7d871c0ee2322a1\"\u003e\u003ccode\u003ebac2e77\u003c/code\u003e\u003c/a\u003e chore(release): bump version to 29.4.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/f8a9cc98924bd1846aac96d6c544e6626f031f81\"\u003e\u003ccode\u003ef8a9cc9\u003c/code\u003e\u003c/a\u003e fix: use correct registry for npm OIDC trusted publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/e2eec26aa127e284719b4754937d17bd57b13518\"\u003e\u003ccode\u003ee2eec26\u003c/code\u003e\u003c/a\u003e fix: npm permissions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/263f2ac73e4a0c4163f8766c3ba9d0a13ca78812\"\u003e\u003ccode\u003e263f2ac\u003c/code\u003e\u003c/a\u003e chore: remove npm auth token\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/5df0e45f409994b34cae7d22db60946a8158d975\"\u003e\u003ccode\u003e5df0e45\u003c/code\u003e\u003c/a\u003e OIDC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/f82c1444d4af0d9f27883510acc8178c18ee8f8a\"\u003e\u003ccode\u003ef82c144\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kulshekhar/ts-jest/issues/5250\"\u003e#5250\u003c/a\u003e from kulshekhar/copilot/bump-patch-version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/e6ec5aed410a803c2f972b3287cf233ce4c998f9\"\u003e\u003ccode\u003ee6ec5ae\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/62c3199a355d3ba483f0e976c868ddc6f20d53fe\"\u003e\u003ccode\u003e62c3199\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/052e751f124d059e1363b827f1709ed7607daded\"\u003e\u003ccode\u003e052e751\u003c/code\u003e\u003c/a\u003e Bump patch version to 29.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kulshekhar/ts-jest/commit/f79e77b64f4a807605e277b1ea05f10abe9c94f0\"\u003e\u003ccode\u003ef79e77b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kulshekhar/ts-jest/issues/5249\"\u003e#5249\u003c/a\u003e from ext/feature/ts6-peer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kulshekhar/ts-jest/compare/v29.4.6...v29.4.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca href=\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new releaser for ts-jest since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-devkit/architect` from 0.2102.5 to 0.2102.11\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular-cli/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-devkit/core` from 21.2.5 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-cli/releases\"\u003e@​angular-devkit/core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\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/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbd63b7a5-fix-green\" alt=\"fix - bbd63b7a5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erobustly parse npm manifest from array\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/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/eafe1a719-fix-green\" alt=\"fix - eafe1a719\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a116a80d-fix-green\" alt=\"fix - 7a116a80d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove stateful flag from URL_PARAMETER_REGEXP\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\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\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/core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-05-13)\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/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003ebbd63b7a5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erobustly parse npm manifest from array\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/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003eeafe1a719\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e7a116a80d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove stateful flag from URL_PARAMETER_REGEXP\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.26 (2026-05-13)\u003c/h1\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/7cc1871ee50d123853ddf6bd89857b354d647462\"\u003e7cc1871ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\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.26 (2026-05-13)\u003c/h1\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/842fee0291b787b63fdabcaaac5680b05d395075\"\u003e842fee029\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\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.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\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/00e366320108b39e60e67d28d45e5bcc6a044546\"\u003e\u003ccode\u003e00e3663\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003e\u003ccode\u003eeafe1a7\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): allow all hosts in common engine rendering options to prev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e\u003ccode\u003e7a116a8\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): remove stateful flag from URL_PARAMETER_REGEXP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7705fb96a27965b20365b04c79f0e2f386dfd95\"\u003e\u003ccode\u003ea7705fb\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/453ed5b6bf8a18b37cfa099955f37b234ded6003\"\u003e\u003ccode\u003e453ed5b\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f0f9b2dad6d47d958bf98b52452bd8c944355951\"\u003e\u003ccode\u003ef0f9b2d\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): add validation and logging to npm manifest parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003e\u003ccode\u003ebbd63b7\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): robustly parse npm manifest from array\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.5...v21.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-devkit/schematics` from 21.2.5 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-cli/releases\"\u003e@​angular-devkit/schematics's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.2.11\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/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003e\u003cimg src=\"https://img.shields.io/badge/bbd63b7a5-fix-green\" alt=\"fix - bbd63b7a5\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erobustly parse npm manifest from array\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/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003e\u003cimg src=\"https://img.shields.io/badge/eafe1a719-fix-green\" alt=\"fix - eafe1a719\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e\u003cimg src=\"https://img.shields.io/badge/7a116a80d-fix-green\" alt=\"fix - 7a116a80d\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eremove stateful flag from URL_PARAMETER_REGEXP\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\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\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/schematics's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.11 (2026-05-13)\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/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003ebbd63b7a5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erobustly parse npm manifest from array\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/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003eeafe1a719\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e7a116a80d\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eremove stateful flag from URL_PARAMETER_REGEXP\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.26 (2026-05-13)\u003c/h1\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/7cc1871ee50d123853ddf6bd89857b354d647462\"\u003e7cc1871ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\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.26 (2026-05-13)\u003c/h1\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/842fee0291b787b63fdabcaaac5680b05d395075\"\u003e842fee029\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eallow all hosts in common engine rendering options to prevent validation errors\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.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\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/00e366320108b39e60e67d28d45e5bcc6a044546\"\u003e\u003ccode\u003e00e3663\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/eafe1a719fd3fecd5263e0a8371200b4b1ff4bb9\"\u003e\u003ccode\u003eeafe1a7\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): allow all hosts in common engine rendering options to prev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/7a116a80d7e6db341fd003737285d1a9db10ba6c\"\u003e\u003ccode\u003e7a116a8\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/ssr\u003c/code\u003e): remove stateful flag from URL_PARAMETER_REGEXP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/a7705fb96a27965b20365b04c79f0e2f386dfd95\"\u003e\u003ccode\u003ea7705fb\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/453ed5b6bf8a18b37cfa099955f37b234ded6003\"\u003e\u003ccode\u003e453ed5b\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/f0f9b2dad6d47d958bf98b52452bd8c944355951\"\u003e\u003ccode\u003ef0f9b2d\u003c/code\u003e\u003c/a\u003e refactor(\u003ccode\u003e@​angular/cli\u003c/code\u003e): add validation and logging to npm manifest parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular-cli/commit/bbd63b7a5a1049bc56b9ddf6edf6563a1f2d9ace\"\u003e\u003ccode\u003ebbd63b7\u003c/code\u003e\u003c/a\u003e fix(\u003ccode\u003e@​angular/cli\u003c/code\u003e): robustly parse npm manifest from array\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular-cli/compare/v21.2.5...v21.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/builder` from 21.3.1 to 21.4.0\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\"\u003e@​angular-eslint/builder's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.4.0\u003c/h2\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.57.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.8 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2996\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.58.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2984\"\u003e#2984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2999\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.9 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.59.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.11 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3019\"\u003e#3019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.3.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq]  could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema with upstream \u003ccode\u003e@​schematics/angular\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3027\"\u003e#3027\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\u003eFinn Bayer\u003c/li\u003e\n\u003cli\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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\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-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md\"\u003e@​angular-eslint/builder's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFinn Bayer\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-eslint/angular-eslint/commit/0a774c724574c3c35acf9ba432f60269e7418938\"\u003e\u003ccode\u003e0a774c7\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/cea1779a056ce7e16b80b017630b625e375e6ba6\"\u003e\u003ccode\u003ecea1779\u003c/code\u003e\u003c/a\u003e feat(builder): add apply-suppressions option (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/28434e76fde2d26e3c009749dd4cc20a9604fa15\"\u003e\u003ccode\u003e28434e7\u003c/code\u003e\u003c/a\u003e chore: update swc monorepo (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2987\"\u003e#2987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.4.0/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 21.3.1 to 21.4.0\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\"\u003e@​angular-eslint/eslint-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.4.0\u003c/h2\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.57.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.8 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2996\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.58.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2984\"\u003e#2984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2999\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.9 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.59.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.11 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3019\"\u003e#3019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.3.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq]  could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema with upstream \u003ccode\u003e@​schematics/angular\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3027\"\u003e#3027\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\u003eFinn Bayer\u003c/li\u003e\n\u003cli\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e@​angular-eslint/eslint-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\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\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-eslint/angular-eslint/commit/0a774c724574c3c35acf9ba432f60269e7418938\"\u003e\u003ccode\u003e0a774c7\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/ad2b76e4059c9d1e1ddbcf7f40c120f918d8ee59\"\u003e\u003ccode\u003ead2b76e\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): append fixes in prefer-on-push-change-detection, use-inje...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.4.0/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 21.3.1 to 21.4.0\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\"\u003e@​angular-eslint/eslint-plugin-template's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.4.0\u003c/h2\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.57.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.8 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2996\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.58.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2984\"\u003e#2984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2999\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.9 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.59.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.11 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3019\"\u003e#3019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.3.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq]  could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema with upstream \u003ccode\u003e@​schematics/angular\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3027\"\u003e#3027\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\u003eFinn Bayer\u003c/li\u003e\n\u003cli\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md\"\u003e@​angular-eslint/eslint-plugin-template's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq] could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\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\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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-eslint/angular-eslint/commit/0a774c724574c3c35acf9ba432f60269e7418938\"\u003e\u003ccode\u003e0a774c7\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bfd04b2426611e2acab48e776d99a6546d00cf42\"\u003e\u003ccode\u003ebfd04b2\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [prefer-template-literal] do not check inline templates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/d8a063c15cf7db8c1c4a2f19e689805a9c80e0be\"\u003e\u003ccode\u003ed8a063c\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [eqeqeq]  could not destructure null (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/24373da714b8392cbb4d1c7af0dde78735e42604\"\u003e\u003ccode\u003e24373da\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [no-non-null-assertion] report nested arrays (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bf94ba7cf1fca8465053d05d72322cc1440e0d38\"\u003e\u003ccode\u003ebf94ba7\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin-template): [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (#...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.4.0/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 21.3.1 to 21.4.0\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\"\u003e@​angular-eslint/schematics's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev21.4.0\u003c/h2\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ebuilder:\u003c/strong\u003e add apply-suppressions option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [cyclomatic-complexity] add \u003ccode\u003evariant\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2976\"\u003e#2976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.57.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2961\"\u003e#2961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2983\"\u003e#2983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.8 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2996\"\u003e#2996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.58.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2984\"\u003e#2984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2999\"\u003e#2999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.9 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.59.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.11 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3019\"\u003e#3019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v10.3.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3013\"\u003e#3013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e append fixes in prefer-on-push-change-detection, use-injectable-provided-in (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2969\"\u003e#2969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin:\u003c/strong\u003e [prefer-template-literal] do not check inline templates (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2959\"\u003e#2959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [no-non-null-assertion] report nested arrays (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2991\"\u003e#2991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e [eqeqeq]  could not destructure null (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2922\"\u003e#2922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema with upstream \u003ccode\u003e@​schematics/angular\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/3027\"\u003e#3027\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\u003eFinn Bayer\u003c/li\u003e\n\u003cli\u003egithubuser578 \u003ca href=\"https://github.com/githubuser578\"\u003e\u003ccode\u003e@​githubuser578\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGuillaume DROUARD\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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e@​angular-eslint/schematics's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.4.0 (2026-05-13)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e sync application schema ...\n\n_Description has been truncated_","html_url":"https://github.com/b310-digital/teammapper/pull/1297","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/b310-digital%2Fteammapper/issues/1297","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1297/packages"}},{"old_version":"18.4.0","new_version":"21.3.1","update_type":"major","path":"/src/pybind/mgr/dashboard/frontend","pr_created_at":"2026-05-06T09:52:39.000Z","version_change":"18.4.0 → 21.3.1","issue":{"uuid":"4390390477","node_id":"PR_kwDOSVbML87Ytwed","number":8,"state":"open","title":"mgr/dashboard: bump @angular-eslint/schematics from 18.4.0 to 21.3.1 in /src/pybind/mgr/dashboard/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-06T09:52:39.000Z","updated_at":"2026-05-06T09:52:40.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"mgr/dashboard","packages":[{"name":"@angular-eslint/schematics","old_version":"18.4.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":"/src/pybind/mgr/dashboard/frontend","ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 18.4.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\"\u003e@​angular-eslint/schematics'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/schematics/CHANGELOG.md\"\u003e@​angular-eslint/schematics'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 schematics 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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca href=\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=18.4.0\u0026new-version=21.3.1)](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/sunbines/tentacle/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunbines%2Ftentacle/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"}},{"old_version":"18.4.3","new_version":"21.3.1","update_type":"major","path":"/alcs-frontend","pr_created_at":"2026-04-21T16:47:45.000Z","version_change":"18.4.3 → 21.3.1","issue":{"uuid":"4304070484","node_id":"PR_kwDOHn-f-c7UX2t2","number":2922,"state":"closed","title":"Bump picomatch, @angular-eslint/builder and @angular-eslint/schematics in /alcs-frontend","user":"dependabot[bot]","labels":["dependencies","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-01T20:39:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-21T16:47:45.000Z","updated_at":"2026-05-01T20:39:49.000Z","time_to_close":877923,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"picomatch, @angular-eslint/builder"},{"name":"@angular-eslint/schematics","repository_url":"https://github.com/angular-eslint/angular-eslint","old_version":"18.4.3","new_version":"21.3.1"}],"path":"/alcs-frontend","ecosystem":"npm"},"body":"Bumps [picomatch](https://github.com/micromatch/picomatch) to 4.0.4 and updates ancestor dependencies [picomatch](https://github.com/micromatch/picomatch), [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) and [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics). These dependencies need to be updated together.\n\nUpdates `picomatch` from 4.0.2 to 4.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/micromatch/picomatch/releases\"\u003epicomatch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.4\u003c/h2\u003e\n\u003cp\u003eThis is a security release fixing several security relevant issues.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/micromatch/picomatch/security/advisories/GHSA-c2c7-rcm5-vvqj\"\u003eCVE-2026-33671\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/micromatch/picomatch/security/advisories/GHSA-3v7f-55p6-f55p\"\u003eCVE-2026-33672\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4\"\u003ehttps://github.com/micromatch/picomatch/compare/4.0.3...4.0.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: exception when glob pattern contains \u003ccode\u003econstructor\u003c/code\u003e by \u003ca href=\"https://github.com/Jason3S\"\u003e\u003ccode\u003e@​Jason3S\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/micromatch/picomatch/pull/144\"\u003emicromatch/picomatch#144\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Jason3S\"\u003e\u003ccode\u003e@​Jason3S\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/micromatch/picomatch/pull/144\"\u003emicromatch/picomatch#144\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/micromatch/picomatch/compare/4.0.2...4.0.3\"\u003ehttps://github.com/micromatch/picomatch/compare/4.0.2...4.0.3\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/micromatch/picomatch/commit/e5474fc1a4d7991870058170407dda8a42be5334\"\u003e\u003ccode\u003ee5474fc\u003c/code\u003e\u003c/a\u003e Publish 4.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/4516eb521f13a46b2fe1a1d2c9ef6b20ddc0e903\"\u003e\u003ccode\u003e4516eb5\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/5eceecd27543b8e056b9307d69e105ea03618a7d\"\u003e\u003ccode\u003e5eceecd\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/0db7dd70651ca7c8265601c0442a996ed32e3238\"\u003e\u003ccode\u003e0db7dd7\u003c/code\u003e\u003c/a\u003e Run benchmark again against latest minimatch version (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/161\"\u003e#161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/95003777eb1c60dec09495a8231fa2ba4054d76a\"\u003e\u003ccode\u003e9500377\u003c/code\u003e\u003c/a\u003e docs: clarify what brace expansion syntax is and isn't supported (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/134\"\u003e#134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/2661f23eca86c8b4a2b14815b9b2b3b74bd5a171\"\u003e\u003ccode\u003e2661f23\u003c/code\u003e\u003c/a\u003e fix typo in globstars.js test name (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/138\"\u003e#138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/1798b07e9df59500b9cf567294d44d559032f4c7\"\u003e\u003ccode\u003e1798b07\u003c/code\u003e\u003c/a\u003e docs: fix \u003ccode\u003emakeRe\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/9d76bc57a03b7f57cc4ca516c8071daf632bafd8\"\u003e\u003ccode\u003e9d76bc5\u003c/code\u003e\u003c/a\u003e chore: undocument removed options (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/146\"\u003e#146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/e4d718bbfb47e4f030ab2612b5b04a9297fe272d\"\u003e\u003ccode\u003ee4d718b\u003c/code\u003e\u003c/a\u003e Remove unused time-require (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/micromatch/picomatch/commit/38dffeb16221cc8eb8981524fb6895dd2aaaba76\"\u003e\u003ccode\u003e38dffeb\u003c/code\u003e\u003c/a\u003e chore(deps): pin dependencies (\u003ca href=\"https://redirect.github.com/micromatch/picomatch/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/micromatch/picomatch/compare/4.0.2...4.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/builder` from 18.4.3 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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ \u003cstrong\u003ebuilder:\u003c/strong\u003e align formatter invocation with eslint CLI by always passing all files, even if quiet (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bceaa80e\"\u003ebceaa80e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ \u003cstrong\u003ebuilder:\u003c/strong\u003e align formatter invocation with eslint CLI by always passing all files, even if quiet (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bceaa80e\"\u003ebceaa80e\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\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/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\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/5c214854f897cb698563f53db6b9bddfb23e4d8e\"\u003e\u003ccode\u003e5c21485\u003c/code\u003e\u003c/a\u003e chore(builder): change builder tests to be cross-platform (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2905\"\u003e#2905\u003c/a\u003e)\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/builder/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca href=\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new releaser for \u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 18.4.3 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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by \u003ca href=\"https://www.npmjs.com/~GitHub%20Actions\"\u003eGitHub Actions\u003c/a\u003e, a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\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 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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/bcgov/alcs/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/bcgov/alcs/pull/2922","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Falcs/issues/2922","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2922/packages"}},{"old_version":"20.1.1","new_version":"21.3.1","update_type":"major","path":null,"pr_created_at":"2026-04-11T13:26:12.000Z","version_change":"20.1.1 → 21.3.1","issue":{"uuid":"4244668409","node_id":"PR_kwDOBiCNks7RqnMk","number":1411,"state":"open","title":"Bump the angular group with 19 updates","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-11T13:26:12.000Z","updated_at":"2026-04-11T13:27:16.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"angular","update_count":19,"packages":[{"name":"@angular/animations","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular-eslint/builder","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"21.2.5","new_version":"21.2.7","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.2.6","new_version":"21.2.8","repository_url":"https://github.com/angular/angular"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular group with 19 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.6` | `21.2.8` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.4` | `21.2.6` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.6` | `21.2.8` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.6` | `21.2.8` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.6` | `21.2.8` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.6` | `21.2.8` |\n| [@angular/material](https://github.com/angular/components) | `21.2.4` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.6` | `21.2.8` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.6` | `21.2.8` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.6` | `21.2.8` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `20.1.1` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.7` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.6` | `21.2.8` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.6` | `21.2.8` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n\nUpdates `@angular/animations` from 21.2.6 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\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/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\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.2.4 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\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/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\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/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.2.4...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.2.6 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\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/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\u003eSee full diff 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.2.6 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\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/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\u003eSee full diff 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.2.6 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\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/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.2.6 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\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/forms/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/forms/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/forms/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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/forms\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/b0dc2fbfcb909c558c7dcff89c2fe47c89878991\"\u003e\u003ccode\u003eb0dc2fb\u003c/code\u003e\u003c/a\u003e docs(forms): clarify disabled FormArray value behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/895c576d494111f819e8a790d3a0695b6b9f8b4b\"\u003e\u003ccode\u003e895c576\u003c/code\u003e\u003c/a\u003e refactor(forms): use strict equality for pending status getter\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.8/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/material` from 21.2.4 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/compon...\n\n_Description has been truncated_","html_url":"https://github.com/SubJunk/TimelineTools/pull/1411","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SubJunk%2FTimelineTools/issues/1411","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1411/packages"}},{"old_version":"21.2.0","new_version":"21.3.1","update_type":"minor","path":null,"pr_created_at":"2026-04-06T22:42:38.000Z","version_change":"21.2.0 → 21.3.1","issue":{"uuid":"4214435100","node_id":"PR_kwDOC9Jy-M7QVdyF","number":703,"state":"open","title":"build(deps-dev): bump @angular-eslint/schematics from 21.2.0 to 21.3.1","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-06T22:42:38.000Z","updated_at":"2026-04-06T22:43:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"@angular-eslint/schematics","old_version":"21.2.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 21.2.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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\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-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/schematics/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\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=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=21.2.0\u0026new-version=21.3.1)](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/703","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lucs1590%2FPersonal_Site/issues/703","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/703/packages"}},{"old_version":"16.1.2","new_version":"21.3.1","update_type":"major","path":"/src/portal","pr_created_at":"2026-04-05T21:06:26.000Z","version_change":"16.1.2 → 21.3.1","issue":{"uuid":"4208575827","node_id":"PR_kwDORAWCRc7QFAtQ","number":109,"state":"open","title":"chore(deps): Bump the angular group in /src/portal with 17 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-05T21:06:26.000Z","updated_at":"2026-04-07T22:02:26.839Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"angular","update_count":17,"packages":[{"name":"@angular/animations","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/common","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/localize","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular-devkit/build-angular","old_version":"16.2.16","new_version":"21.2.6","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"16.1.2","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"16.2.16","new_version":"21.2.6","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"16.2.12","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"}],"path":"/src/portal","ecosystem":"npm"},"body":"Bumps the angular group in /src/portal with 17 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `16.2.12` | `21.2.7` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `16.2.12` | `21.2.7` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `16.2.12` | `21.2.7` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `16.2.12` | `21.2.7` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `16.2.12` | `21.2.7` |\n| [@angular/localize](https://github.com/angular/angular) | `16.2.12` | `21.2.7` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `16.2.12` | `21.2.7` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `16.2.12` | `21.2.7` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `16.2.12` | `21.2.7` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `16.2.16` | `21.2.6` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `16.1.2` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `16.1.2` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `16.1.2` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `16.1.2` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `16.1.2` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `16.2.16` | `21.2.6` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `16.2.12` | `21.2.7` |\n\nUpdates `@angular/animations` from 16.2.12 to 21.2.7\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.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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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.7/packages/animations\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/common` from 16.2.12 to 21.2.7\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.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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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 16.2.12 to 21.2.7\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.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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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 16.2.12 to 21.2.7\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.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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003ccode\u003eb682c62\u003c/code\u003e\u003c/a\u003e fix(core): treat \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/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/core/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003ccode\u003e8fd896e\u003c/code\u003e\u003c/a\u003e fix(core): resolve component import by exact specifier in route lazy-loading ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4b2008d0f2455cab7503b3a0349feecbff3b3b5a\"\u003e\u003ccode\u003e4b2008d\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/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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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 16.2.12 to 21.2.7\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.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/forms/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/forms/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/forms/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\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCommit\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/angular/commit/895c576d494111f819e8a790d3a0695b6b9f8b4b\"\u003e\u003ccode\u003e895c576\u003c/code\u003e\u003c/a\u003e refactor(forms): use strict equality for pending status getter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b658accf1f99a240de19090350bd6d3a9620735a\"\u003e\u003ccode\u003eb658acc\u003c/code\u003e\u003c/a\u003e docs: fix js doc of signal forms ignoreValidators option.\u003c/li\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/4a9b715b3abd3e51184937f764376883d6bb98a1\"\u003e\u003ccode\u003e4a9b715\u003c/code\u003e\u003c/a\u003e test(forms): cover transformedValue without FormField context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003ccode\u003e670d166\u003c/code\u003e\u003c/a\u003e feat(forms): add 'blur' option to debounce rule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23cb9a4291dc7ee0db3a78416b5ca2b51cfad1ac\"\u003e\u003ccode\u003e23cb9a4\u003c/code\u003e\u003c/a\u003e refactor(forms): address feedback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0a863ba03f5eb83f383f647b7015bc3640072a1d\"\u003e\u003ccode\u003e0a863ba\u003c/code\u003e\u003c/a\u003e refactor(forms): hide adapter in public options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe7b26e403febfe2662828945d41bc4567cbcc8b\"\u003e\u003ccode\u003efe7b26e\u003c/code\u003e\u003c/a\u003e docs(forms): transformedValue parse error wiring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/bdfb60f3e33065e047183dc1890c36e527e2b304\"\u003e\u003ccode\u003ebdfb60f\u003c/code\u003e\u003c/a\u003e fix(forms): use consistent error format returned from parse\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/631f60d1f9be72cb68330308a6ff18cc195babb8\"\u003e\u003ccode\u003e631f60d\u003c/code\u003e\u003c/a\u003e fix(forms): preserve parse errors when parse returns value\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/localize` from 16.2.12 to 21.2.7\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/localize\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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://redirect.github.com/angular/angular/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/...\n\n_Description has been truncated_","html_url":"https://github.com/container-registry/harbor-next/pull/109","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/container-registry%2Fharbor-next/issues/109","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/109/packages"}},{"old_version":"20.1.1","new_version":"21.3.1","update_type":"major","path":null,"pr_created_at":"2026-04-04T13:26:34.000Z","version_change":"20.1.1 → 21.3.1","issue":{"uuid":"4204937837","node_id":"PR_kwDOBiCNks7P9TT8","number":1404,"state":"open","title":"Bump the angular group across 1 directory with 20 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-04T13:26:34.000Z","updated_at":"2026-04-04T13:28:20.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"angular","update_count":20,"packages":[{"name":"@angular/animations","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.4","new_version":"21.2.5","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.2.4","new_version":"21.2.5","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular-devkit/build-angular","old_version":"21.2.5","new_version":"21.2.6","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"21.2.5","new_version":"21.2.6","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.2.6","new_version":"21.2.7","repository_url":"https://github.com/angular/angular"},{"name":"typescript","old_version":"5.9.3","new_version":"6.0.2","repository_url":"https://github.com/microsoft/TypeScript"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular group with 20 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.6` | `21.2.7` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.4` | `21.2.5` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.6` | `21.2.7` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.6` | `21.2.7` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.6` | `21.2.7` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.6` | `21.2.7` |\n| [@angular/material](https://github.com/angular/components) | `21.2.4` | `21.2.5` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.6` | `21.2.7` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.6` | `21.2.7` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.6` | `21.2.7` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.6` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `20.1.1` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.5` | `21.2.6` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.6` | `21.2.7` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.2.6` | `21.2.7` |\n| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `6.0.2` |\n\n\nUpdates `@angular/animations` from 21.2.6 to 21.2.7\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.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\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/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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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.2.4 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/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.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\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/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.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\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/b3f60001228f8c92c96256ed5025acef828cb2dc\"\u003e\u003ccode\u003eb3f6000\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33015\"\u003e#33015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003ccode\u003e8a5ed09\u003c/code\u003e\u003c/a\u003e fix(material/tooltip): allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/7f04529c759f9e43fffb59d8daa8b1cb5a0a1e51\"\u003e\u003ccode\u003e7f04529\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32990\"\u003e#32990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ec90218b8fd2720bcf0baa79e6bf6d1473d5a053\"\u003e\u003ccode\u003eec90218\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32989\"\u003e#32989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003ccode\u003e895908a\u003c/code\u003e\u003c/a\u003e fix(material/sidenav): not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33\"\u003e#33\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003ccode\u003e475a8aa\u003c/code\u003e\u003c/a\u003e fix(material/slider): not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003ccode\u003e42e1055\u003c/code\u003e\u003c/a\u003e fix(cdk/stepper): linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e444cc41a069f66581fcb2f7dcc728fc59ef2892\"\u003e\u003ccode\u003ee444cc4\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32998\"\u003e#32998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.4...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/common` from 21.2.6 to 21.2.7\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.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\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/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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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.2.6 to 21.2.7\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.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\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/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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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.2.6 to 21.2.7\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.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\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/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.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003e\u003ccode\u003eb682c62\u003c/code\u003e\u003c/a\u003e fix(core): treat \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/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/core/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e\u003ccode\u003e8fd896e\u003c/code\u003e\u003c/a\u003e fix(core): resolve component import by exact specifier in route lazy-loading ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4b2008d0f2455cab7503b3a0349feecbff3b3b5a\"\u003e\u003ccode\u003e4b2008d\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/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.2.6 to 21.2.7\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.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/forms/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/forms/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/forms/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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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/ca67828ee247bdff46736661e51f43f2ca736a24\"\u003eca67828ee2\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eintroduce NG8023 compile-time diagnostic for duplicate selectors\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3\u003ecore\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/angular/commit/895c576d494111f819e8a790d3a0695b6b9f8b4b\"\u003e\u003ccode\u003e895c576\u003c/code\u003e\u003c/a\u003e refactor(forms): use strict equality for pending status getter\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.7/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/material` from 21.2.4 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/components/releases\"\u003e\u003ccode\u003e@​angular/material\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\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\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/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/material\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/b3f60001228f8c92c96256ed5025acef828cb2dc\"\u003e\u003ccode\u003eb3f6000\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/33015\"\u003e#33015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/8a5ed09e59e312f82b969b19ae4d077e4574bd12\"\u003e\u003ccode\u003e8a5ed09\u003c/code\u003e\u003c/a\u003e fix(material/tooltip): allow hover detection logic to be customized (\u003ca href=\"https://redirect.github.com/angular/components/issues/33018\"\u003e#33018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/7f04529c759f9e43fffb59d8daa8b1cb5a0a1e51\"\u003e\u003ccode\u003e7f04529\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.35.1 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32990\"\u003e#32990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ec90218b8fd2720bcf0baa79e6bf6d1473d5a053\"\u003e\u003ccode\u003eec90218\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32989\"\u003e#32989\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/895908a12dd81d889f95961da59e80823faf8889\"\u003e\u003ccode\u003e895908a\u003c/code\u003e\u003c/a\u003e fix(material/sidenav): not resetting margin if transition does not start (\u003ca href=\"https://redirect.github.com/angular/components/issues/33\"\u003e#33\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/475a8aabb30044c4cdca1bdb0b1de832db6e5936\"\u003e\u003ccode\u003e475a8aa\u003c/code\u003e\u003c/a\u003e fix(material/slider): not picking up static direction (\u003ca href=\"https://redirect.github.com/angular/components/issues/33006\"\u003e#33006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/42e10553cfcf205fea44522ae631fe23f90b03ea\"\u003e\u003ccode\u003e42e1055\u003c/code\u003e\u003c/a\u003e fix(cdk/stepper): linear updates not reflected in the DOM (\u003ca href=\"https://redirect.github.com/angular/components/issues/33007\"\u003e#33007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/e444cc41a069f66581fcb2f7dcc728fc59ef2892\"\u003e\u003ccode\u003ee444cc4\u003c/code\u003e\u003c/a\u003e build: update cross-repo angular dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32998\"\u003e#32998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.2.4...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/platform-browser` from 21.2.6 to 21.2.7\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/platform-browser\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/platform-browser/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/platform-browser/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/platform-browser/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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/platform-browser\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.7 (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/fea25d1a60ecaba1599d9cd9b8df27109ed195c5\"\u003efea25d1a60\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/bba5ed8e643b9c3f680e7e539c3d744ad6905e59\"\u003ebba5ed8e64\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/d04ddd73dfc03f420afbdde964c5119f338af135\"\u003ed04ddd73df\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/8fd896e99a13855c6569f29efe7e578c301e13ee\"\u003e8fd896e99a\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/b682c628731b86a4884e50abb2f5fa73ac0ad057\"\u003eb682c62873\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/3c41e74fdd279f683156b654699a9312a850add0\"\u003e3c41e74fdd\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\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/0960592d3d4fad110d5598144fda9f2488520826\"\u003e0960592d3d\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\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch1\u003e22.0.0-next.5 (2026-03-25)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecompiler-cli\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eElements with multiple matching selectors will now throw at compile time.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComponent with undefined \u003ccode\u003echangeDetection\u003c/code\u003e property are now \u003ccode\u003eOnPush\u003c/code\u003e by default. Specify \u003ccode\u003echangeDetection: ChangeDetectionStrategy.Eager\u003c/code\u003e to keep the previous behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eplatform-browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHammer.js integration has been removed. Use your own implementation.\u003c/li\u003e\n\u003c/ul\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/c1312da1832e2b59ce18edae8fae13d3f562d9b0\"\u003ec1312da183\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/e850643b1b8dca8cfdc12705be51441197cd987a\"\u003ee850643b1b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eSupport comments in html element.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943\"\u003e96be4f429b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eabstract emitter producing incorrect code for dynamic imports\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/5a712d42d161c93f6315d6462543c26c4e4a4490\"\u003e5a712d42d1\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\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\u003eDescriptio...\n\n_Description has been truncated_","html_url":"https://github.com/SubJunk/TimelineTools/pull/1404","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SubJunk%2FTimelineTools/issues/1404","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1404/packages"}},{"old_version":"21.3.0","new_version":"21.3.1","update_type":"patch","path":null,"pr_created_at":"2026-04-02T00:58:04.000Z","version_change":"21.3.0 → 21.3.1","issue":{"uuid":"4190751338","node_id":"PR_kwDOG1Zs187Paq-R","number":12491,"state":"open","title":"Chore(deps): Bump the frontend-angular-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["non-trivial","frontend","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-02T00:58:04.000Z","updated_at":"2026-05-02T06:00:24.140Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"frontend-angular-dependencies","update_count":20,"packages":[{"name":"@angular/cdk","old_version":"21.2.2","new_version":"21.2.4","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/localize","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"ngx-cookie-service","old_version":"21.1.0","new_version":"21.3.1","repository_url":"https://github.com/stevermeister/ngx-cookie-service"},{"name":"@angular-devkit/core","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-devkit/schematics","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/build","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/cli","old_version":"21.2.2","new_version":"21.2.3","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.4","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"}],"path":null,"ecosystem":"npm"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the frontend-angular-dependencies group with 20 updates in the /src-ui directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.2` | `21.2.4` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.4` | `21.2.6` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.4` | `21.2.6` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.4` | `21.2.6` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.4` | `21.2.6` |\n| [@angular/localize](https://github.com/angular/angular) | `21.2.4` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.4` | `21.2.6` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.4` | `21.2.6` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.4` | `21.2.6` |\n| [ngx-cookie-service](https://github.com/stevermeister/ngx-cookie-service) | `21.1.0` | `21.3.1` |\n| [@angular-devkit/core](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.3` |\n| [@angular-devkit/schematics](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.3` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.0` | `21.3.1` |\n| [@angular/build](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.3` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.2` | `21.2.3` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.4` | `21.2.6` |\n\n\nUpdates `@angular/cdk` from 21.2.2 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\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/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.2.2...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.2.4 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\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/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\u003eSee full diff 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.2.4 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\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/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\u003eSee full diff 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.2.4 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\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/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.2.4 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\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/forms\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/b658accf1f99a240de19090350bd6d3a9620735a\"\u003e\u003ccode\u003eb658acc\u003c/code\u003e\u003c/a\u003e docs: fix js doc of signal forms ignoreValidators option.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/localize` from 21.2.4 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/localize\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\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/localize\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/d8239c7836638f3e32095ff67b3943f88e5af616\"\u003e\u003ccode\u003ed8239c7\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/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/dbb15ebab2956d14238849384af95d6bd7ca3435\"\u003e\u003ccode\u003edbb15eb\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/commit/a6c49e0ea9c5919828e0ff3e1f01d62dee749fb9\"\u003e\u003ccode\u003ea6c49e0\u003c/code\u003e\u003c/a\u003e refactor(language-service): Export template target from API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c12339ab86243b76a2de24d0c5e9cab648f6fcf\"\u003e\u003ccode\u003e2c12339\u003c/code\u003e\u003c/a\u003e docs(forms): replace \u003ccode\u003erxResource\u003c/code\u003e \u003ccode\u003erequest\u003c/code\u003e w/ \u003ccode\u003eparams\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a3048f231cbcca4be6cfa8c94aed5b20a3c6bd71\"\u003e\u003ccode\u003ea3048f2\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/ae2f2497d39a9920aef4ab2ef343007eaa40c1d4\"\u003e\u003ccode\u003eae2f249\u003c/code\u003e\u003c/a\u003e docs: reword allowedHosts security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2c7d3b570459131b91949920f0f8765aab1f47ce\"\u003e\u003ccode\u003e2c7d3b5\u003c/code\u003e\u003c/a\u003e build: re-sync file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6bd21218177d253d54fa388fc024225af09d60f1\"\u003e\u003ccode\u003e6bd2121\u003c/code\u003e\u003c/a\u003e docs: fix incorrect getHarnesses() method to getAllHarnesses and broken link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e8c047bd8df877e2178a4ac027eff2bff93bec75\"\u003e\u003ccode\u003ee8c047b\u003c/code\u003e\u003c/a\u003e docs: update defer section to Markdown and fix absolute URL to relative in adev\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/compare/v21.2.4...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/platform-browser` from 21.2.4 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/platform-browser\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\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12491","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12491","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12491/packages"}},{"old_version":"19.8.1","new_version":"21.3.1","update_type":"major","path":null,"pr_created_at":"2026-03-28T23:28:34.000Z","version_change":"19.8.1 → 21.3.1","issue":{"uuid":"4161953626","node_id":"PR_kwDORtMf787OUrsJ","number":21,"state":"closed","title":"chore(deps): Bump the angular group across 1 directory with 19 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-06T03:36:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-28T23:28:34.000Z","updated_at":"2026-04-06T03:37:01.000Z","time_to_close":706105,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"angular","update_count":19,"packages":[{"name":"@angular/common","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@ngrx/effects","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@ngrx/entity","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@ngrx/router-store","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@ngrx/store","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@ngrx/store-devtools","old_version":"19.2.1","new_version":"21.1.0","repository_url":"https://github.com/ngrx/platform"},{"name":"@angular-eslint/builder","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"19.2.23","new_version":"21.2.5","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular group with 19 updates in the /frontend/angular directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `19.2.20` | `21.2.6` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `19.2.20` | `21.2.6` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `19.2.20` | `21.2.6` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `19.2.20` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `19.2.20` | `21.2.6` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `19.2.20` | `21.2.6` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `19.2.20` | `21.2.6` |\n| [@ngrx/effects](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@ngrx/entity](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@ngrx/router-store](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@ngrx/store](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@ngrx/store-devtools](https://github.com/ngrx/platform) | `19.2.1` | `21.1.0` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `19.8.1` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `19.2.23` | `21.2.5` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `19.2.20` | `21.2.6` |\n\n\nUpdates `@angular/common` from 19.2.20 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 19.2.20 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 19.2.20 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 19.2.20 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\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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/forms\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/b658accf1f99a240de19090350bd6d3a9620735a\"\u003e\u003ccode\u003eb658acc\u003c/code\u003e\u003c/a\u003e docs: fix js doc of signal forms ignoreValidators option.\u003c/li\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/4a9b715b3abd3e51184937f764376883d6bb98a1\"\u003e\u003ccode\u003e4a9b715\u003c/code\u003e\u003c/a\u003e test(forms): cover transformedValue without FormField context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003ccode\u003e670d166\u003c/code\u003e\u003c/a\u003e feat(forms): add 'blur' option to debounce rule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23cb9a4291dc7ee0db3a78416b5ca2b51cfad1ac\"\u003e\u003ccode\u003e23cb9a4\u003c/code\u003e\u003c/a\u003e refactor(forms): address feedback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0a863ba03f5eb83f383f647b7015bc3640072a1d\"\u003e\u003ccode\u003e0a863ba\u003c/code\u003e\u003c/a\u003e refactor(forms): hide adapter in public options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe7b26e403febfe2662828945d41bc4567cbcc8b\"\u003e\u003ccode\u003efe7b26e\u003c/code\u003e\u003c/a\u003e docs(forms): transformedValue parse error wiring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/bdfb60f3e33065e047183dc1890c36e527e2b304\"\u003e\u003ccode\u003ebdfb60f\u003c/code\u003e\u003c/a\u003e fix(forms): use consistent error format returned from parse\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/631f60d1f9be72cb68330308a6ff18cc195babb8\"\u003e\u003ccode\u003e631f60d\u003c/code\u003e\u003c/a\u003e fix(forms): preserve parse errors when parse returns value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/567f292e8e0f9d2b5ddebadfa1c6d6dd6c456f39\"\u003e\u003ccode\u003e567f292\u003c/code\u003e\u003c/a\u003e fix(forms): support custom controls as host directives\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser` from 19.2.20 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/platform-browser\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/platform-browser\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/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/platform-browser/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/platform-browser/issues/67002\"\u003e#67002\u003c/a\u003e)\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/85122cb12d30141aa3abb997c4b3ee31713ec07b\"\u003e\u003ccode\u003e85122cb\u003c/code\u003e\u003c/a\u003e docs: update \u003ccode\u003ebootstrapApplication\u003c/code\u003e docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f4469ad583a97c39843309270095c55f0a758692\"\u003e\u003ccode\u003ef4469ad\u003c/code\u003e\u003c/a\u003e refactor(core): update error message links to versioned docs (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/platform-browser/issues/66374\"\u003e#66374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/99ad18a4ee82ecc5524106d1d403ccfa9bae2304\"\u003e\u003ccode\u003e99ad18a\u003c/code\u003e\u003c/a\u003e feat(core): Add stability debugging utility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6270bba056cfaadb3fe0b2bf3b17036bdc28b90e\"\u003e\u003ccode\u003e6270bba\u003c/code\u003e\u003c/a\u003e ci: reformat files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2ccdf50fba9536d931988098f6d4f5ebb52588f9\"\u003e\u003ccode\u003e2ccdf50\u003c/code\u003e\u003c/a\u003e refactor(platform-browser): remove unused \u003ccode\u003eplatformIsServer\u003c/code\u003e  flag from renderer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4f584cf42235c94bb8389fa55bc634e23d7b010\"\u003e\u003ccode\u003eb4f584c\u003c/code\u003e\u003c/a\u003e fix(core): return \u003ccode\u003eStaticProvider\u003c/code\u003e for \u003ccode\u003eprovidePlatformInitializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/96b79fc393855777c69e817a5bddbc295af4806b\"\u003e\u003ccode\u003e96b79fc\u003c/code\u003e\u003c/a\u003e refactor(core): correct all \u003ccode\u003etypeof ngDevMode\u003c/code\u003e comparison patterns introduced...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/platform-browser\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser-dynamic` from 19.2.20 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/platform-browser-dynamic\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\u003eensur...\n\n_Description has been truncated_","html_url":"https://github.com/MynorXico/racephotos/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MynorXico%2Fracephotos/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"}},{"old_version":"19.8.1","new_version":"21.3.1","update_type":"major","path":"/frontend/angular","pr_created_at":"2026-03-28T22:55:43.000Z","version_change":"19.8.1 → 21.3.1","issue":{"uuid":"4161895590","node_id":"PR_kwDORtMf787OUhpp","number":15,"state":"open","title":"chore(deps): Bump the angular group in /frontend/angular with 14 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-03-28T22:55:43.000Z","updated_at":"2026-03-28T22:55:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"angular","update_count":14,"packages":[{"name":"@angular/common","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"},{"name":"@angular-eslint/builder","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"19.8.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"19.2.23","new_version":"21.2.5","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"19.2.20","new_version":"21.2.6","repository_url":"https://github.com/angular/angular"}],"path":"/frontend/angular","ecosystem":"npm"},"body":"Bumps the angular group in /frontend/angular with 14 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `19.2.20` | `21.2.6` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `19.2.20` | `21.2.6` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `19.2.20` | `21.2.6` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `19.2.20` | `21.2.6` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `19.2.20` | `21.2.6` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `19.2.20` | `21.2.6` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `19.2.20` | `21.2.6` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `19.8.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `19.8.1` | `21.3.1` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `19.2.23` | `21.2.5` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `19.2.20` | `21.2.6` |\n\nUpdates `@angular/common` from 19.2.20 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 19.2.20 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 19.2.20 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 19.2.20 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\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\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/forms\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/b658accf1f99a240de19090350bd6d3a9620735a\"\u003e\u003ccode\u003eb658acc\u003c/code\u003e\u003c/a\u003e docs: fix js doc of signal forms ignoreValidators option.\u003c/li\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/4a9b715b3abd3e51184937f764376883d6bb98a1\"\u003e\u003ccode\u003e4a9b715\u003c/code\u003e\u003c/a\u003e test(forms): cover transformedValue without FormField context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003ccode\u003e670d166\u003c/code\u003e\u003c/a\u003e feat(forms): add 'blur' option to debounce rule\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/23cb9a4291dc7ee0db3a78416b5ca2b51cfad1ac\"\u003e\u003ccode\u003e23cb9a4\u003c/code\u003e\u003c/a\u003e refactor(forms): address feedback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/0a863ba03f5eb83f383f647b7015bc3640072a1d\"\u003e\u003ccode\u003e0a863ba\u003c/code\u003e\u003c/a\u003e refactor(forms): hide adapter in public options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/fe7b26e403febfe2662828945d41bc4567cbcc8b\"\u003e\u003ccode\u003efe7b26e\u003c/code\u003e\u003c/a\u003e docs(forms): transformedValue parse error wiring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/bdfb60f3e33065e047183dc1890c36e527e2b304\"\u003e\u003ccode\u003ebdfb60f\u003c/code\u003e\u003c/a\u003e fix(forms): use consistent error format returned from parse\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/631f60d1f9be72cb68330308a6ff18cc195babb8\"\u003e\u003ccode\u003e631f60d\u003c/code\u003e\u003c/a\u003e fix(forms): preserve parse errors when parse returns value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/567f292e8e0f9d2b5ddebadfa1c6d6dd6c456f39\"\u003e\u003ccode\u003e567f292\u003c/code\u003e\u003c/a\u003e fix(forms): support custom controls as host directives\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser` from 19.2.20 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/platform-browser\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/platform-browser\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/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/platform-browser/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/platform-browser/issues/67002\"\u003e#67002\u003c/a\u003e)\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/85122cb12d30141aa3abb997c4b3ee31713ec07b\"\u003e\u003ccode\u003e85122cb\u003c/code\u003e\u003c/a\u003e docs: update \u003ccode\u003ebootstrapApplication\u003c/code\u003e docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f4469ad583a97c39843309270095c55f0a758692\"\u003e\u003ccode\u003ef4469ad\u003c/code\u003e\u003c/a\u003e refactor(core): update error message links to versioned docs (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/platform-browser/issues/66374\"\u003e#66374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/99ad18a4ee82ecc5524106d1d403ccfa9bae2304\"\u003e\u003ccode\u003e99ad18a\u003c/code\u003e\u003c/a\u003e feat(core): Add stability debugging utility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6270bba056cfaadb3fe0b2bf3b17036bdc28b90e\"\u003e\u003ccode\u003e6270bba\u003c/code\u003e\u003c/a\u003e ci: reformat files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/2ccdf50fba9536d931988098f6d4f5ebb52588f9\"\u003e\u003ccode\u003e2ccdf50\u003c/code\u003e\u003c/a\u003e refactor(platform-browser): remove unused \u003ccode\u003eplatformIsServer\u003c/code\u003e  flag from renderer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4f584cf42235c94bb8389fa55bc634e23d7b010\"\u003e\u003ccode\u003eb4f584c\u003c/code\u003e\u003c/a\u003e fix(core): return \u003ccode\u003eStaticProvider\u003c/code\u003e for \u003ccode\u003eprovidePlatformInitializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/96b79fc393855777c69e817a5bddbc295af4806b\"\u003e\u003ccode\u003e96b79fc\u003c/code\u003e\u003c/a\u003e refactor(core): correct all \u003ccode\u003etypeof ngDevMode\u003c/code\u003e comparison patterns introduced...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.6/packages/platform-browser\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser-dynamic` from 19.2.20 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/platform-browser-dynamic\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/the...\n\n_Description has been truncated_","html_url":"https://github.com/MynorXico/racephotos/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MynorXico%2Fracephotos/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"20.1.1","new_version":"21.3.1","update_type":"major","path":null,"pr_created_at":"2026-03-28T01:08:41.000Z","version_change":"20.1.1 → 21.3.1","issue":{"uuid":"4156801050","node_id":"PR_kwDOBiCNks7OMrNC","number":1397,"state":"open","title":"Bump the angular group across 1 directory with 5 updates","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-03-28T01:08:41.000Z","updated_at":"2026-04-04T15:01:09.416Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"angular","update_count":5,"packages":[{"name":"@angular-eslint/builder","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"20.1.1","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `20.1.1` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `20.1.1` | `21.3.1` |\n\n\nUpdates `@angular-eslint/builder` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ \u003cstrong\u003ebuilder:\u003c/strong\u003e align formatter invocation with eslint CLI by always passing all files, even if quiet (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bceaa80e\"\u003ebceaa80e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ \u003cstrong\u003ebuilder:\u003c/strong\u003e align formatter invocation with eslint CLI by always passing all files, even if quiet (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/bceaa80e\"\u003ebceaa80e\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\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/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\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/5c214854f897cb698563f53db6b9bddfb23e4d8e\"\u003e\u003ccode\u003e5c21485\u003c/code\u003e\u003c/a\u003e chore(builder): change builder tests to be cross-platform (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2905\"\u003e#2905\u003c/a\u003e)\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/builder/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e'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/eslint-plugin/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\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\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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:\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\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\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:\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\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\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-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/1000391b2041c3bae7a4687273291959a9289fd9\"\u003e\u003ccode\u003e1000391\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] properly handle statements with una...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\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/ffcc447713c47e0ebca1886e3a2216222f99966a\"\u003e\u003ccode\u003effcc447\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] detect \u003ccode\u003eSignal\u003c/code\u003e type correctly (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/65f2540c19820548b4e61dbbb9fddedf2e2031be\"\u003e\u003ccode\u003e65f2540\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): [no-uncalled-signals] detect Signal member access (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2848\"\u003e#2848\u003c/a\u003e)\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/eslint-plugin/issues/2903\"\u003e#2903\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/eslint-plugin/issues/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e'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/eslint-plugin-template/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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 support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\u003c/a\u003e)\u003c/li\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\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.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\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\u003cp\u003eThis was a version bump only for eslint-plugin-template to align it with other projects, there were no code changes.\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-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/a3fb6cceddc3a498f59e57a020d76efb78e57968\"\u003e\u003ccode\u003ea3fb6cc\u003c/code\u003e\u003c/a\u003e fix(prefer-self-closing-tags): add selectedcontent nonAriaElements (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2939\"\u003e#2939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/4425fec25a860f2578c64e222e136e729ff8cf17\"\u003e\u003ccode\u003e4425fec\u003c/code\u003e\u003c/a\u003e docs(no-nested-tags): use backticks for HTML tags (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2935\"\u003e#2935\u003c/a\u003e)\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/253da820cb5f263e113024068308ffd55e89bad0\"\u003e\u003ccode\u003e253da82\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [prefer-template-literal] preserve nested non st...\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/eslint-plugin-template/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/eslint-plugin-template/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/template-parser` from 20.1.1 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\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e'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/template-parser/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e'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 template-parser 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\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.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\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🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.6.0 (2025-11-09)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for template-parser to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.5.2 (2025-11-08)\u003c/h2\u003e\n\u003ch3\u003e🩹 Fixes\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-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/f78af866b48ae63bb437d422d4d29170a55e5611\"\u003e\u003ccode\u003ef78af86\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2915\"\u003e#2915\u003c/a\u003e)\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/template-parser/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/template-parser/issues/2885\"\u003e#2885\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/d49bbe0ba374ab85f521b5f35e90fd3223031984\"\u003e\u003ccode\u003ed49bbe0\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2862\"\u003e#2862\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/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/template-parser\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e since your current version.\u003c/p\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/SubJunk/TimelineTools/pull/1397","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SubJunk%2FTimelineTools/issues/1397","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1397/packages"}},{"old_version":"21.3.0","new_version":"21.3.1","update_type":"patch","path":null,"pr_created_at":"2026-03-17T23:23:27.000Z","version_change":"21.3.0 → 21.3.1","issue":{"uuid":"4091735574","node_id":"PR_kwDOFx7JXs7LYFaC","number":2314,"state":"closed","title":"build(deps-dev): bump @angular-eslint/schematics from 21.3.0 to 21.3.1","user":"dependabot[bot]","labels":["dependencies","released","javascript"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-18T03:01:29.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-17T23:23:27.000Z","updated_at":"2026-03-20T18:10:04.000Z","time_to_close":13082,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"@angular-eslint/schematics","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\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=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=21.3.0\u0026new-version=21.3.1)](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/device-management-toolkit/ui-toolkit-angular/pull/2314","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/device-management-toolkit%2Fui-toolkit-angular/issues/2314","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2314/packages"}},{"old_version":"21.3.0","new_version":"21.3.1","update_type":"patch","path":null,"pr_created_at":"2026-03-17T09:25:20.000Z","version_change":"21.3.0 → 21.3.1","issue":{"uuid":"4087262222","node_id":"PR_kwDODLkAsM7LKVOh","number":164,"state":"closed","title":"Bump the angular-eslint group with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-03-25T11:39:34.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-17T09:25:20.000Z","updated_at":"2026-03-25T11:39:36.000Z","time_to_close":699254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"angular-eslint","update_count":5,"packages":[{"name":"@angular-eslint/builder","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.3.0","new_version":"21.3.1","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the angular-eslint group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.3.0` | `21.3.1` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.3.0` | `21.3.1` |\n\nUpdates `@angular-eslint/builder` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\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/1000391b2041c3bae7a4687273291959a9289fd9\"\u003e\u003ccode\u003e1000391\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] properly handle statements with una...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e'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\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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\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\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\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\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/a3fb6cceddc3a498f59e57a020d76efb78e57968\"\u003e\u003ccode\u003ea3fb6cc\u003c/code\u003e\u003c/a\u003e fix(prefer-self-closing-tags): add selectedcontent nonAriaElements (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2939\"\u003e#2939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/77099ee61cda76136038dce9f21d3af6071a7d06\"\u003e\u003ccode\u003e77099ee\u003c/code\u003e\u003c/a\u003e chore: ensure dist artifacts are available for e2e publishing in DTE (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/af8900f087b09556bfaddd815ce483bf7b0262ea\"\u003e\u003ccode\u003eaf8900f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: narrow build target cache outputs to avoid clobbering compile ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7e173918eb48b2db41ce4d5a934567dab26fe54b\"\u003e\u003ccode\u003e7e17391\u003c/code\u003e\u003c/a\u003e fix: narrow build target cache outputs to avoid clobbering compile artifacts ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/4425fec25a860f2578c64e222e136e729ff8cf17\"\u003e\u003ccode\u003e4425fec\u003c/code\u003e\u003c/a\u003e docs(no-nested-tags): use backticks for HTML tags (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2935\"\u003e#2935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e'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 schematics 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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/template-parser` from 21.3.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\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e'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\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-eslint/angular-eslint/blob/main/packages/template-parser/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e'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 template-parser 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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/template-parser\"\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/saschagrunert/release-notes/pull/164","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/saschagrunert%2Frelease-notes/issues/164","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/164/packages"}},{"old_version":"18.3.1","new_version":"21.3.0","update_type":"major","path":"/edc-policy-playground","pr_created_at":"2026-03-16T22:04:09.000Z","version_change":"18.3.1 → 21.3.0","issue":{"uuid":"4085015760","node_id":"PR_kwDOKDWd9s7LDPDN","number":698,"state":"closed","title":"chore(deps-dev): bump @angular-eslint/schematics from 18.3.1 to 21.3.0 in /edc-policy-playground","user":"dependabot[bot]","labels":["dependencies","npm","stale"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-03-31T02:17:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-16T22:04:09.000Z","updated_at":"2026-03-31T02:18:01.000Z","time_to_close":1224823,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@angular-eslint/schematics","old_version":"18.3.1","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":"/edc-policy-playground","ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 18.3.1 to 21.3.0.\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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.6.0 (2025-11-09)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/fdddff9b3e5d9a36e4dd527d201ed7b48ce2f08f\"\u003e\u003ccode\u003efdddff9\u003c/code\u003e\u003c/a\u003e chore(release): publish 20.7.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=18.3.1\u0026new-version=21.3.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/eclipse-tractusx/tutorial-resources/pull/698","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-tractusx%2Ftutorial-resources/issues/698","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/698/packages"}},{"old_version":"21.2.0","new_version":"21.3.0","update_type":"minor","path":null,"pr_created_at":"2026-03-15T19:36:20.000Z","version_change":"21.2.0 → 21.3.0","issue":{"uuid":"4079045566","node_id":"PR_kwDONWdOm87KwIxd","number":236,"state":"open","title":"Bump the js-dependencies group across 1 directory with 24 updates","user":"dependabot[bot]","labels":["frontend","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-15T19:36:20.000Z","updated_at":"2026-03-15T19:36:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"js-dependencies","update_count":24,"packages":[{"name":"@angular/animations","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.2.1","new_version":"21.2.2","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.2.1","new_version":"21.2.2","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"apexcharts","old_version":"5.10.1","new_version":"5.10.4","repository_url":"https://github.com/apexcharts/apexcharts.js"},{"name":"ng-apexcharts","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/apexcharts/ng-apexcharts"},{"name":"@angular-devkit/build-angular","old_version":"21.2.1","new_version":"21.2.2","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"21.2.1","new_version":"21.2.2","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.2.1","new_version":"21.2.4","repository_url":"https://github.com/angular/angular"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.56.1","new_version":"8.57.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"eslint","old_version":"9.39.3","new_version":"10.0.3","repository_url":"https://github.com/eslint/eslint"},{"name":"sass","old_version":"1.97.3","new_version":"1.98.0","repository_url":"https://github.com/sass/dart-sass"}],"path":null,"ecosystem":"npm"},"body":"Bumps the js-dependencies group with 22 updates in the /frontend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.2.1` | `21.2.4` |\n| [@angular/cdk](https://github.com/angular/components) | `21.2.1` | `21.2.2` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.2.1` | `21.2.4` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.2.1` | `21.2.4` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.2.1` | `21.2.4` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.2.1` | `21.2.4` |\n| [@angular/material](https://github.com/angular/components) | `21.2.1` | `21.2.2` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.2.1` | `21.2.4` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.2.1` | `21.2.4` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.2.1` | `21.2.4` |\n| [apexcharts](https://github.com/apexcharts/apexcharts.js) | `5.10.1` | `5.10.4` |\n| [ng-apexcharts](https://github.com/apexcharts/ng-apexcharts) | `2.2.0` | `2.3.0` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `21.2.1` | `21.2.2` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.2.0` | `21.3.0` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.2.1` | `21.2.2` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.2.1` | `21.2.4` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.56.1` | `8.57.0` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.3` | `10.0.3` |\n| [sass](https://github.com/sass/dart-sass) | `1.97.3` | `1.98.0` |\n\n\nUpdates `@angular/animations` from 21.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/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.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/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.2.1 to 21.2.2\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.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\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/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.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/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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/91a31a770df573828e805c7f9842f7ff8d4f8954\"\u003e\u003ccode\u003e91a31a7\u003c/code\u003e\u003c/a\u003e refactor(cdk/drag-drop): move tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32898\"\u003e#32898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/efa2f4f898598b0f9e216d93faaf489f17884f68\"\u003e\u003ccode\u003eefa2f4f\u003c/code\u003e\u003c/a\u003e refactor(material/select): move tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32901\"\u003e#32901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2851147187fa9779369a3c552d063c1cbd817a12\"\u003e\u003ccode\u003e2851147\u003c/code\u003e\u003c/a\u003e refactor(material/datepicker): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32903\"\u003e#32903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a330b89e8b2e4694fb9c9cc2764f767ecb2d75c\"\u003e\u003ccode\u003e2a330b8\u003c/code\u003e\u003c/a\u003e refactor(material/menu): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32909\"\u003e#32909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ef607a6271b63c5fe9fb166aed57f091274382fc\"\u003e\u003ccode\u003eef607a6\u003c/code\u003e\u003c/a\u003e ci: add issue labeling and refactor jobs (\u003ca href=\"https://redirect.github.com/angular/components/issues/32890\"\u003e#32890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003ccode\u003e345c543\u003c/code\u003e\u003c/a\u003e fix(aria/grid): unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/93315d5fce1eb76540995ae091e95dc7e3184978\"\u003e\u003ccode\u003e93315d5\u003c/code\u003e\u003c/a\u003e refactor(aria/grid): code clean up (\u003ca href=\"https://redirect.github.com/angular/components/issues/32842\"\u003e#32842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/components/compare/v21.2.1...v21.2.2\"\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.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/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.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/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.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/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.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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/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\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/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.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/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.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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/d1dcd16c5b40291aa3fa2dc84d22842cd657b201\"\u003e\u003ccode\u003ed1dcd16\u003c/code\u003e\u003c/a\u003e fix(core): sanitize translated form attributes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003e\u003ccode\u003eabbd879\u003c/code\u003e\u003c/a\u003e fix(core): reverts \u0026quot;feat(core): add support for nested animations\u0026quot;\u003c/li\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/21b1c3b2ee2c8423782b111b93bd60eb6b453259\"\u003e\u003ccode\u003e21b1c3b\u003c/code\u003e\u003c/a\u003e fix(core): include signal debug names in their \u003ccode\u003etoString()\u003c/code\u003e representation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6c73aaca30c7122f187dc51ec532a69f2706b335\"\u003e\u003ccode\u003e6c73aac\u003c/code\u003e\u003c/a\u003e refactor(common): Removes unused generic type parameters from \u003ccode\u003eKeyValueDiffers\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/c98eab794c791ad08f0c277cde1ed139f9ca378c\"\u003e\u003ccode\u003ec98eab7\u003c/code\u003e\u003c/a\u003e refactor(core): remove old resource params\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/75135586d6235d58c9010ac2208ee20020bac71b\"\u003e\u003ccode\u003e7513558\u003c/code\u003e\u003c/a\u003e docs: combine multiple documentation improvements into one PR\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/575f3023c115f8af8e1a5bdfa6a2f2344546a5d1\"\u003e\u003ccode\u003e575f302\u003c/code\u003e\u003c/a\u003e refactor(core): interface cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/224e60ecb1b90115baa702f1c06edc1d64d86187\"\u003e\u003ccode\u003e224e60e\u003c/code\u003e\u003c/a\u003e fix(core): sanitize translated attribute bindings with interpolations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/09638ec7c3f14ce0216281f0c0dba38eb231f345\"\u003e\u003ccode\u003e09638ec\u003c/code\u003e\u003c/a\u003e docs(core): clarify provideZoneChangeDetection usage in v21+\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/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.2.1 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/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.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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/forms\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e21b1c3b2ee\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e224e60ecb1\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\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 (2026-03-09)\u003c/h1\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/4a9b715b3abd3e51184937f764376883d6bb98a1\"\u003e\u003ccode\u003e4a9b715\u003c/code\u003e\u003c/a\u003e test(forms): cover transformedValue without FormField context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003ccode\u003e670d166\u003c/code\u003e\u003c/a\u003e feat(forms): add 'blur' option to debounce rule\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.4/packages/forms\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/material` from 21.2.1 to 21.2.2\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/material\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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/components/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/material\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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/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/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\u003e\u003ca href=\"https://github.com/angular/components/commit/91a31a770df573828e805c7f9842f7ff8d4f8954\"\u003e\u003ccode\u003e91a31a7\u003c/code\u003e\u003c/a\u003e refactor(cdk/drag-drop): move tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32898\"\u003e#32898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/efa2f4f898598b0f9e216d93faaf489f17884f68\"\u003e\u003ccode\u003eefa2f4f\u003c/code\u003e\u003c/a\u003e refactor(material/select): move tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32901\"\u003e#32901\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2851147187fa9779369a3c552d063c1cbd817a12\"\u003e\u003ccode\u003e2851147\u003c/code\u003e\u003c/a\u003e refactor(material/datepicker): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32903\"\u003e#32903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2a330b89e8b2e4694fb9c9cc2764f767ecb2d75c\"\u003e\u003ccode\u003e2a330b8\u003c/code\u003e\u003c/a\u003e refactor(material/menu): switch tests away from fakeAsync (\u003ca href=\"https://redirect.github.com/angular/components/issues/32909\"\u003e#32909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/ef607a6271b63c5fe9fb166aed57f091274382fc\"\u003e\u003ccode\u003eef607a6\u003c/code\u003e\u003c/a\u003e ci: add issue labeling and refactor jobs (\u003ca href=\"https://redirect.github.com/angular/components/issues/32890\"\u003e#32890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/345c543dcb8cf5869930ffdec37a3101483eddd8\"\u003e\u003ccode\u003e345c543\u003c/code\u003e\u003c/a\u003e fix(aria/grid): unit tests and small fixes for grid directives (\u003ca href=\"https://redirect.github.com/angular/components/issues/32841\"\u003e#32841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/93315d5fce1eb76540995ae091e95dc7e3184978\"\u003e\u003ccode\u003e93315d5\u003c/code\u003e\u003c/a\u003e refactor(aria/grid): code clean up (\u003ca href=\"https://redirect.github.com/angular/components/issues/32842\"\u003e#32842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/components/compare/v21.2.1...v21.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular/platform-browser` from 21.2.1 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/angular/releases\"\u003e\u003ccode\u003e@​angular/platform-browser\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular/platform-browser\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e21.2.4 (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/ed2d324f9cc12aab6cfa0569ef10b73243a62c65\"\u003eed2d324f9c\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/abbd8797bbd3ae53a10033c39bd895b5b85a4fae\"\u003eabbd8797bb\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed1dcd16c5b\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\u003e22.0.0-next.2 (2026-03-11)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ecreateNgModuleRef\u003c/code\u003e was removed, use \u003ccode\u003ecreateNgModule\u003c/code\u003e instead\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/b918beda323eefef17bf1de03fde3d402a3d4af0\"\u003eb918beda32\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eallow debouncing signals\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/f9ede9ec98ad233c4bbddf268cce8a647333ebfc\"\u003ef9ede9ec98\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/b401c18674f16bceeaf7c9babcb4b4d70f29be4f\"\u003eb401c18674\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/8630319f74c9575a21693d875cc7d5252516146d\"\u003e8630319f74\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/36936872c962b2073c8f44080684701068866691\"\u003e36936872c9\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003erefactor\u003c/td\u003e\n\u003ctd\u003eremove \u003ccode\u003ecreateNgModuleRef\u003c/code\u003e\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/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668\"\u003e3e7ce0dafc\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003erestrict \u003ccode\u003eSignalFormsConfig\u003c/code\u003e to a readonly API\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/5a6d88626b604db937287a501cb723c088412a7e\"\u003e5a6d88626b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd angular template inlay hints support\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 (2026-03-11)\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/62a97f7e4b896b4b03a1ef25764db387ffecebe1\"\u003e62a97f7e4b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eensure definitions compile\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://git...\n\n_Description has been truncated_","html_url":"https://github.com/SAP/STARS/pull/236","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP%2FSTARS/issues/236","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/236/packages"}},{"old_version":"19.8.1","new_version":"21.3.0","update_type":"major","path":"/frontend","pr_created_at":"2026-03-09T23:01:33.000Z","version_change":"19.8.1 → 21.3.0","issue":{"uuid":"4048368174","node_id":"PR_kwDORasD0s7JNzlr","number":17,"state":"open","title":"chore(deps-dev): bump @angular-eslint/schematics from 19.8.1 to 21.3.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-03-09T23:01:33.000Z","updated_at":"2026-03-09T23:01:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"@angular-eslint/schematics","old_version":"19.8.1","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"}],"path":"/frontend","ecosystem":"npm"},"body":"Bumps [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) from 19.8.1 to 21.3.0.\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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e21.1.0 (2025-12-08)\u003c/h2\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\u003c/ul\u003e\n\u003ch2\u003e21.0.1 (2025-11-23)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch1\u003e21.0.0 (2025-11-22)\u003c/h1\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eschematics:\u003c/strong\u003e generate new projects using eslint defineConfig (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b\"\u003e5aa8171b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e⚠️ Breaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⚠️ update Angular dependencies to v21 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671e\"\u003e6a6b671e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJamesHenry \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\u003e20.7.0 (2025-11-22)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\u003c/p\u003e\n\u003ch2\u003e20.6.0 (2025-11-09)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics to align it with other projects, there were no code changes.\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-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/schematics/issues/2903\"\u003e#2903\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/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/e7bb47b27bfaef61af694ebc29bc5636378b232c\"\u003e\u003ccode\u003ee7bb47b\u003c/code\u003e\u003c/a\u003e fix: reference \u003ccode\u003e@​angular/cli\u003c/code\u003e peer in addition to direct dependencies (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/2820\"\u003e#2820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/b19b1f627d3ff20f583f10caf005ed7bc147b7ab\"\u003e\u003ccode\u003eb19b1f6\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/9ae353f71d8135399f9e3cb776963a98f4cc4f08\"\u003e\u003ccode\u003e9ae353f\u003c/code\u003e\u003c/a\u003e chore(release): publish 21.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/5aa8171b510021a6d3bc167d5cf041da8ba56484\"\u003e\u003ccode\u003e5aa8171\u003c/code\u003e\u003c/a\u003e feat(schematics): generate new projects using eslint defineConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6a6b671ec8597f9a04edb9993c410593e5700d18\"\u003e\u003ccode\u003e6a6b671\u003c/code\u003e\u003c/a\u003e feat!: update Angular dependencies to v21\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/fdddff9b3e5d9a36e4dd527d201ed7b48ce2f08f\"\u003e\u003ccode\u003efdddff9\u003c/code\u003e\u003c/a\u003e chore(release): publish 20.7.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@angular-eslint/schematics\u0026package-manager=npm_and_yarn\u0026previous-version=19.8.1\u0026new-version=21.3.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/diegohat/game-library/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/diegohat%2Fgame-library/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"}},{"old_version":"21.2.0","new_version":"21.3.0","update_type":"minor","path":null,"pr_created_at":"2026-03-09T22:58:20.000Z","version_change":"21.2.0 → 21.3.0","issue":{"uuid":"4048358076","node_id":"PR_kwDOO5h5F87JNxkA","number":64,"state":"open","title":"build(deps): bump the minor-and-patch group across 1 directory with 47 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-09T22:58:20.000Z","updated_at":"2026-03-09T22:59:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"minor-and-patch","update_count":47,"packages":[{"name":"@angular/animations","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/cdk","old_version":"21.1.2","new_version":"21.2.1","repository_url":"https://github.com/angular/components"},{"name":"@angular/common","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/compiler","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/core","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/forms","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/material","old_version":"21.1.2","new_version":"21.2.1","repository_url":"https://github.com/angular/components"},{"name":"@angular/platform-browser","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/platform-browser-dynamic","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/router","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/service-worker","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@capacitor/android","old_version":"8.0.2","new_version":"8.2.0","repository_url":"https://github.com/ionic-team/capacitor"},{"name":"@capacitor/app","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/browser","old_version":"8.0.0","new_version":"8.0.2","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/camera","old_version":"8.0.0","new_version":"8.0.2","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/core","old_version":"8.0.2","new_version":"8.2.0","repository_url":"https://github.com/ionic-team/capacitor"},{"name":"@capacitor/geolocation","old_version":"8.0.0","new_version":"8.1.0","repository_url":"https://github.com/ionic-team/capacitor-geolocation"},{"name":"@capacitor/haptics","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-haptics"},{"name":"@capacitor/ios","old_version":"8.0.2","new_version":"8.2.0","repository_url":"https://github.com/ionic-team/capacitor"},{"name":"@capacitor/keyboard","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-keyboard"},{"name":"@capacitor/local-notifications","old_version":"8.0.0","new_version":"8.0.2","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/network","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/preferences","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/push-notifications","old_version":"8.0.0","new_version":"8.0.2","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/splash-screen","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@capacitor/status-bar","old_version":"8.0.0","new_version":"8.0.1","repository_url":"https://github.com/ionic-team/capacitor-plugins"},{"name":"@ionic/angular","old_version":"8.7.17","new_version":"8.8.1","repository_url":"https://github.com/ionic-team/ionic-framework"},{"name":"@ionic/pwa-elements","old_version":"3.3.0","new_version":"3.4.0","repository_url":"https://github.com/ionic-team/ionic-pwa-elements"},{"name":"@sentry/angular","old_version":"10.38.0","new_version":"10.42.0","repository_url":"https://github.com/getsentry/sentry-javascript"},{"name":"mapbox-gl","old_version":"3.18.1","new_version":"3.19.1","repository_url":"https://github.com/mapbox/mapbox-gl-js"},{"name":"@types/mapbox-gl","old_version":"3.4.1","new_version":"3.5.0","repository_url":"https://github.com/DefinitelyTyped/DefinitelyTyped"},{"name":"zone.js","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/angular/angular"},{"name":"@angular-devkit/build-angular","old_version":"21.1.2","new_version":"21.2.1","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular-eslint/builder","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular/cli","old_version":"21.1.2","new_version":"21.2.1","repository_url":"https://github.com/angular/angular-cli"},{"name":"@angular/compiler-cli","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@angular/language-service","old_version":"21.1.2","new_version":"21.2.2","repository_url":"https://github.com/angular/angular"},{"name":"@capacitor/cli","old_version":"8.0.2","new_version":"8.2.0","repository_url":"https://github.com/ionic-team/capacitor"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.54.0","new_version":"8.57.0","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"jsdom","old_version":"28.0.0","new_version":"28.1.0","repository_url":"https://github.com/jsdom/jsdom"}],"path":null,"ecosystem":"npm"},"body":"Bumps the minor-and-patch group with 43 updates in the /histora-care directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.1.2` | `21.2.2` |\n| [@angular/cdk](https://github.com/angular/components) | `21.1.2` | `21.2.1` |\n| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.1.2` | `21.2.2` |\n| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.1.2` | `21.2.2` |\n| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.1.2` | `21.2.2` |\n| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.1.2` | `21.2.2` |\n| [@angular/material](https://github.com/angular/components) | `21.1.2` | `21.2.1` |\n| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.1.2` | `21.2.2` |\n| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.1.2` | `21.2.2` |\n| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.1.2` | `21.2.2` |\n| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.1.2` | `21.2.2` |\n| [@capacitor/android](https://github.com/ionic-team/capacitor) | `8.0.2` | `8.2.0` |\n| [@capacitor/app](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@capacitor/browser](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.2` |\n| [@capacitor/camera](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.2` |\n| [@capacitor/core](https://github.com/ionic-team/capacitor) | `8.0.2` | `8.2.0` |\n| [@capacitor/geolocation](https://github.com/ionic-team/capacitor-geolocation) | `8.0.0` | `8.1.0` |\n| [@capacitor/haptics](https://github.com/ionic-team/capacitor-haptics) | `8.0.0` | `8.0.1` |\n| [@capacitor/ios](https://github.com/ionic-team/capacitor) | `8.0.2` | `8.2.0` |\n| [@capacitor/keyboard](https://github.com/ionic-team/capacitor-keyboard) | `8.0.0` | `8.0.1` |\n| [@capacitor/local-notifications](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.2` |\n| [@capacitor/network](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@capacitor/preferences](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@capacitor/push-notifications](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.2` |\n| [@capacitor/splash-screen](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@capacitor/status-bar](https://github.com/ionic-team/capacitor-plugins) | `8.0.0` | `8.0.1` |\n| [@ionic/angular](https://github.com/ionic-team/ionic-framework) | `8.7.17` | `8.8.1` |\n| [@ionic/pwa-elements](https://github.com/ionic-team/ionic-pwa-elements) | `3.3.0` | `3.4.0` |\n| [@sentry/angular](https://github.com/getsentry/sentry-javascript) | `10.38.0` | `10.42.0` |\n| [mapbox-gl](https://github.com/mapbox/mapbox-gl-js) | `3.18.1` | `3.19.1` |\n| [@types/mapbox-gl](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mapbox-gl) | `3.4.1` | `3.5.0` |\n| [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) | `0.16.0` | `0.16.1` |\n| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `21.1.2` | `21.2.1` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.2.0` | `21.3.0` |\n| [@angular/cli](https://github.com/angular/angular-cli) | `21.1.2` | `21.2.1` |\n| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.1.2` | `21.2.2` |\n| [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) | `21.1.2` | `21.2.2` |\n| [@capacitor/cli](https://github.com/ionic-team/capacitor) | `8.0.2` | `8.2.0` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.54.0` | `8.57.0` |\n| [jsdom](https://github.com/jsdom/jsdom) | `28.0.0` | `28.1.0` |\n\n\nUpdates `@angular/animations` from 21.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(language-service): use lightweight project warmup for Angular analysis (\u003ca href=\"https://github.com/angular/angular/commit/d2137928e8f075527016a3c011dd8efc4d4e1ebd\"\u003ed2137928e8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.1\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/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2e9a9a531-fix-green\" alt=\"fix - e2e9a9a531\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadds transfer cache to httpResource to fix hydration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ec3cc4e4-fix-green\" alt=\"fix - b4ec3cc4e4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent child animation elements from being orphaned\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003cimg src=\"https://img.shields.io/badge/e923d88398-fix-green\" alt=\"fix - e923d88398\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevent removal of elements during drag and drop\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/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003cimg src=\"https://img.shields.io/badge/277ade97ac-fix-green\" alt=\"fix - 277ade97ac\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ecorrectly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/animations/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(vscode-extension): Highlight function calls with optional chaining (\u003ca href=\"https://github.com/angular/angular/commit/4f8d3995f082929d1ef4163dcb4373d3ef7a67cf\"\u003e4f8d3995f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add linked editing ranges for HTML tag synchronization (\u003ca href=\"https://github.com/angular/angular/commit/8c21866f49ff74344551395ae0a5df1841d54c0d\"\u003e8c21866f49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(vscode-extension): support highlighting for class bindings with brackets (\u003ca href=\"https://github.com/angular/angular/commit/01ed57f297d6713724dfaedc9520f80471f37c10\"\u003e01ed57f297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add JSON schema for angularCompilerOptions (\u003ca href=\"https://github.com/angular/angular/commit/496967e7b13dfe1ebdde69724cd62880914beb60\"\u003e496967e7b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(language-service): Detect local project version on creation (\u003ca href=\"https://github.com/angular/angular/commit/8a7cbd46685874f4500c52629d09c5f7fd309080\"\u003e8a7cbd4668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Support client-side file watching via \u003ccode\u003eonDidChangeWatchedFiles\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/commit/6fb39d9b62cbb634e95ec00fe5ef85d84da3bdbd\"\u003e6fb39d9b62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add completions and hover info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/ebc90c26f5ff1ba1e0ca9b775a44e301ebfb9473\"\u003eebc90c26f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add quick info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/573aadef7eb8b6b5e83b82a16f95d2a556f27c01\"\u003e573aadef7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add folding range support for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/26fd0839c32d2ebeaa5e3ecc10ed70ab9ca17749\"\u003e26fd0839c3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0\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/18003a33bb0d6bb09def8a0e5939fa24069696eb\"\u003e\u003cimg src=\"https://img.shields.io/badge/18003a33bb-feat-blue\" alt=\"feat - 18003a33bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd an 'outlet' injector option for ngTemplateOutlet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8bbe6dc46c9dc13bafa81a60c7613b84b5ca3761\"\u003e\u003cimg src=\"https://img.shields.io/badge/8bbe6dc46c-feat-blue\" alt=\"feat - 8bbe6dc46c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAdd Location strategies to manage trailing slash on write\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\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.2 (2026-03-09)\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e1df1697c6e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003ec822bf8e76\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e05d022d5e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e670d1660c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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 (2026-03-05)\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/72a17afaf32194d42e4b5c090d4f75bad875930b\"\u003e72a17afaf3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/dc4cf649b62fd47e0e1bd255ec954d88585899c4\"\u003edc4cf649b6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/c767d678cff65a89f380b4512590fa732db072c8\"\u003ec767d678cf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7\"\u003ef01901d766\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid generating invalid code in ChangeDetectionStrategy.Eager migration\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 (2026-03-04)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNode.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edata prefixed attribute no-longer bind inputs nor outputs.\u003c/li\u003e\n\u003cli\u003eThe compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ein\u003c/code\u003e variables will throw in template expressions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echange AnimationCallbackEvent.animationComplete signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ehttp\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/angular/commit/81cabc14777a3b4966c29d60e1505aca8c29b71c\"\u003e\u003ccode\u003e81cabc1\u003c/code\u003e\u003c/a\u003e feat(core): add support for TypeScript 6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.2/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.1.2 to 21.2.1\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.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\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e21.2.0-next.5\u003c/h2\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\u003eDescription\u003c/th\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/0870786036286c3b0d3485cb31098afdf22c0350\"\u003e\u003cimg src=\"https://img.shields.io/badge/0870786036-fix-green\" alt=\"fix - 0870786036\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix mismatch in clusterer types (\u003ca href=\"https://redirect.github.com/angular/components/issues/32778\"\u003e#32778\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\u003eDescription\u003c/th\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/f5c586925eb9a1cc00a9b2e22860be1f69ef9184\"\u003e\u003cimg src=\"https://img.shields.io/badge/f5c586925e-fix-green\" alt=\"fix - f5c586925e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eselect:\u003c/strong\u003e disable position locking (\u003ca href=\"https://redirect.github.com/angular/components/issues/32772\"\u003e#32772\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/b15b48df980b1f86885d4d25fdc8ba58b2bac62b\"\u003e\u003cimg src=\"https://img.shields.io/badge/b15b48df98-fix-green\" alt=\"fix - b15b48df98\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etree:\u003c/strong\u003e no nodes focusable if data is replaced (\u003ca href=\"https://redirect.github.com/angular/components/issues/32781\"\u003e#32781\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.1 \u0026quot;leather heels\u0026quot; (2026-03-04)\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/c1295c5818c820ab182727b4f85e5f55a05f6385\"\u003ec1295c5818\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/pull/32880\"\u003e#32880\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/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003ecebf303417\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003e2abe8e6b73\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/pull/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\"\u003ee2f7308dc4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\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/17c19cc73b4e7e24ae5579c32ae5a784d92c2a12\"\u003e17c19cc73b\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eexpand type for restoreFocus (\u003ca href=\"https://redirect.github.com/angular/components/pull/32877\"\u003e#32877\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.0 \u0026quot;plastic-lion\u0026quot; (2026-02-25)\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/31ff7f26b5dd08c1d48dc5ebb8f1a9ba57a2dc9c\"\u003e31ff7f26b5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\"\u003ed030725f46\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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\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/cd5209e9f59c8bd31de29d03fd743452d8ae3d03\"\u003ecd5209e9f5\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/pull/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\"\u003ee397ecbcfa\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003etable:\u003c/strong\u003e remove string-based DI tokens (\u003ca href=\"https://redirect.github.com/angular/components/pull/32677\"\u003e#32677\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/8c4526935ef7e960ed4245a4621d41065ba34e3b\"\u003e8c4526935e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\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/pull/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\"\u003e7fe3081148\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003edatepicker:\u003c/strong\u003e drop dependency on NgClass (\u003ca href=\"https://redirect.github.com/angular/components/pull/32810\"\u003e#32810\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.1.6 \u0026quot;plastic-monkey\u0026quot; (2026-02-25)\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/50c34e6ef314177cdd725a5b0c3177b65cc2809a\"\u003e50c34e6ef3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003ecombobox:\u003c/strong\u003e Adjust AutoComplete examples to properly announce no results text (\u003ca href=\"https://redirect.github.com/angular/components/pull/32786\"\u003e#32786\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.1.5 \u0026quot;chlorine-car\u0026quot; (2026-02-18)\u003c/h1\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/902a1f6c562149fcd52c6f5a76dc5ef4047395f8\"\u003e\u003ccode\u003e902a1f6\u003c/code\u003e\u003c/a\u003e release: cut the v21.2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/6a8da0890d7cf4495902c767e34fe3e1f2e55a33\"\u003e\u003ccode\u003e6a8da08\u003c/code\u003e\u003c/a\u003e build: lock file maintenance (\u003ca href=\"https://redirect.github.com/angular/components/issues/32844\"\u003e#32844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/f35bfe5b3a46cea136b5b0eedd78a89a581825a6\"\u003e\u003ccode\u003ef35bfe5\u003c/code\u003e\u003c/a\u003e build: update bazel dependencies (\u003ca href=\"https://redirect.github.com/angular/components/issues/32862\"\u003e#32862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/5fc772df544c5b1a4b91dd32b030cb8002b3ba72\"\u003e\u003ccode\u003e5fc772d\u003c/code\u003e\u003c/a\u003e build: update github/codeql-action action to v4.32.5 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32863\"\u003e#32863\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2929803fee58984f8983e972b078610b9b585f39\"\u003e\u003ccode\u003e2929803\u003c/code\u003e\u003c/a\u003e build: update pnpm to v10.30.3 (\u003ca href=\"https://redirect.github.com/angular/components/issues/32813\"\u003e#32813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/c1295c5818c820ab182727b4f85e5f55a05f6385\"\u003e\u003ccode\u003ec1295c5\u003c/code\u003e\u003c/a\u003e fix(aria/menu): itemSelected not emitted when menu is attached to a trigger (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/17c19cc73b4e7e24ae5579c32ae5a784d92c2a12\"\u003e\u003ccode\u003e17c19cc\u003c/code\u003e\u003c/a\u003e fix(multiple): expand type for restoreFocus (\u003ca href=\"https://redirect.github.com/angular/components/issues/32877\"\u003e#32877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/1f66af88e45cd613f73c6974967dbac37f3e034e\"\u003e\u003ccode\u003e1f66af8\u003c/code\u003e\u003c/a\u003e refactor: remove remaining NgClass usages (\u003ca href=\"https://redirect.github.com/angular/components/issues/32873\"\u003e#32873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/2abe8e6b7330f5281b560b202ab70bdf593782cc\"\u003e\u003ccode\u003e2abe8e6\u003c/code\u003e\u003c/a\u003e fix(material/menu): render backdrop for context menu if explicitly opted in (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/components/commit/cebf303417678ea4f48e32f17e55d6649da04a27\"\u003e\u003ccode\u003ecebf303\u003c/code\u003e\u003c/a\u003e fix(material/checkbox): hide decorative elements from assistive technology\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/components/compare/v21.1.2...v21.2.1\"\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.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(language-service): use lightweight project warmup for Angular analysis (\u003ca href=\"https://github.com/angular/angular/commit/d2137928e8f075527016a3c011dd8efc4d4e1ebd\"\u003ed2137928e8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.1\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/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2e9a9a531-fix-green\" alt=\"fix - e2e9a9a531\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadds transfer cache to httpResource to fix hydration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ec3cc4e4-fix-green\" alt=\"fix - b4ec3cc4e4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent child animation elements from being orphaned\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003cimg src=\"https://img.shields.io/badge/e923d88398-fix-green\" alt=\"fix - e923d88398\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevent removal of elements during drag and drop\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/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003cimg src=\"https://img.shields.io/badge/277ade97ac-fix-green\" alt=\"fix - 277ade97ac\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ecorrectly 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/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(vscode-extension): Highlight function calls with optional chaining (\u003ca href=\"https://github.com/angular/angular/commit/4f8d3995f082929d1ef4163dcb4373d3ef7a67cf\"\u003e4f8d3995f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add linked editing ranges for HTML tag synchronization (\u003ca href=\"https://github.com/angular/angular/commit/8c21866f49ff74344551395ae0a5df1841d54c0d\"\u003e8c21866f49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(vscode-extension): support highlighting for class bindings with brackets (\u003ca href=\"https://github.com/angular/angular/commit/01ed57f297d6713724dfaedc9520f80471f37c10\"\u003e01ed57f297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add JSON schema for angularCompilerOptions (\u003ca href=\"https://github.com/angular/angular/commit/496967e7b13dfe1ebdde69724cd62880914beb60\"\u003e496967e7b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(language-service): Detect local project version on creation (\u003ca href=\"https://github.com/angular/angular/commit/8a7cbd46685874f4500c52629d09c5f7fd309080\"\u003e8a7cbd4668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Support client-side file watching via \u003ccode\u003eonDidChangeWatchedFiles\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/commit/6fb39d9b62cbb634e95ec00fe5ef85d84da3bdbd\"\u003e6fb39d9b62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add completions and hover info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/ebc90c26f5ff1ba1e0ca9b775a44e301ebfb9473\"\u003eebc90c26f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add quick info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/573aadef7eb8b6b5e83b82a16f95d2a556f27c01\"\u003e573aadef7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add folding range support for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/26fd0839c32d2ebeaa5e3ecc10ed70ab9ca17749\"\u003e26fd0839c3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0\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/18003a33bb0d6bb09def8a0e5939fa24069696eb\"\u003e\u003cimg src=\"https://img.shields.io/badge/18003a33bb-feat-blue\" alt=\"feat - 18003a33bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd an 'outlet' injector option for ngTemplateOutlet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8bbe6dc46c9dc13bafa81a60c7613b84b5ca3761\"\u003e\u003cimg src=\"https://img.shields.io/badge/8bbe6dc46c-feat-blue\" alt=\"feat - 8bbe6dc46c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAdd Location strategies to manage trailing slash on write\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\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.2 (2026-03-09)\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e1df1697c6e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003ec822bf8e76\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e05d022d5e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e670d1660c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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 (2026-03-05)\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/72a17afaf32194d42e4b5c090d4f75bad875930b\"\u003e72a17afaf3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/dc4cf649b62fd47e0e1bd255ec954d88585899c4\"\u003edc4cf649b6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/c767d678cff65a89f380b4512590fa732db072c8\"\u003ec767d678cf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7\"\u003ef01901d766\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid generating invalid code in ChangeDetectionStrategy.Eager migration\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 (2026-03-04)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNode.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edata prefixed attribute no-longer bind inputs nor outputs.\u003c/li\u003e\n\u003cli\u003eThe compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ein\u003c/code\u003e variables will throw in template expressions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echange AnimationCallbackEvent.animationComplete signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ehttp\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/a8aab6480962f18ff0b28b5e46358ff8d43745c9\"\u003e\u003ccode\u003ea8aab64\u003c/code\u003e\u003c/a\u003e refactor(core): remove outdated TODO comments referencing TypeScript 2.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.2/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.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(language-service): use lightweight project warmup for Angular analysis (\u003ca href=\"https://github.com/angular/angular/commit/d2137928e8f075527016a3c011dd8efc4d4e1ebd\"\u003ed2137928e8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.1\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/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2e9a9a531-fix-green\" alt=\"fix - e2e9a9a531\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadds transfer cache to httpResource to fix hydration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ec3cc4e4-fix-green\" alt=\"fix - b4ec3cc4e4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent child animation elements from being orphaned\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003cimg src=\"https://img.shields.io/badge/e923d88398-fix-green\" alt=\"fix - e923d88398\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevent removal of elements during drag and drop\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/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003cimg src=\"https://img.shields.io/badge/277ade97ac-fix-green\" alt=\"fix - 277ade97ac\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ecorrectly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/compiler/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(vscode-extension): Highlight function calls with optional chaining (\u003ca href=\"https://github.com/angular/angular/commit/4f8d3995f082929d1ef4163dcb4373d3ef7a67cf\"\u003e4f8d3995f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add linked editing ranges for HTML tag synchronization (\u003ca href=\"https://github.com/angular/angular/commit/8c21866f49ff74344551395ae0a5df1841d54c0d\"\u003e8c21866f49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(vscode-extension): support highlighting for class bindings with brackets (\u003ca href=\"https://github.com/angular/angular/commit/01ed57f297d6713724dfaedc9520f80471f37c10\"\u003e01ed57f297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add JSON schema for angularCompilerOptions (\u003ca href=\"https://github.com/angular/angular/commit/496967e7b13dfe1ebdde69724cd62880914beb60\"\u003e496967e7b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(language-service): Detect local project version on creation (\u003ca href=\"https://github.com/angular/angular/commit/8a7cbd46685874f4500c52629d09c5f7fd309080\"\u003e8a7cbd4668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Support client-side file watching via \u003ccode\u003eonDidChangeWatchedFiles\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/commit/6fb39d9b62cbb634e95ec00fe5ef85d84da3bdbd\"\u003e6fb39d9b62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add completions and hover info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/ebc90c26f5ff1ba1e0ca9b775a44e301ebfb9473\"\u003eebc90c26f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add quick info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/573aadef7eb8b6b5e83b82a16f95d2a556f27c01\"\u003e573aadef7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add folding range support for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/26fd0839c32d2ebeaa5e3ecc10ed70ab9ca17749\"\u003e26fd0839c3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0\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/18003a33bb0d6bb09def8a0e5939fa24069696eb\"\u003e\u003cimg src=\"https://img.shields.io/badge/18003a33bb-feat-blue\" alt=\"feat - 18003a33bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd an 'outlet' injector option for ngTemplateOutlet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8bbe6dc46c9dc13bafa81a60c7613b84b5ca3761\"\u003e\u003cimg src=\"https://img.shields.io/badge/8bbe6dc46c-feat-blue\" alt=\"feat - 8bbe6dc46c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAdd Location strategies to manage trailing slash on write\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\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.2 (2026-03-09)\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e1df1697c6e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003ec822bf8e76\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e05d022d5e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e670d1660c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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 (2026-03-05)\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/72a17afaf32194d42e4b5c090d4f75bad875930b\"\u003e72a17afaf3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/dc4cf649b62fd47e0e1bd255ec954d88585899c4\"\u003edc4cf649b6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/c767d678cff65a89f380b4512590fa732db072c8\"\u003ec767d678cf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7\"\u003ef01901d766\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid generating invalid code in ChangeDetectionStrategy.Eager migration\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 (2026-03-04)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNode.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edata prefixed attribute no-longer bind inputs nor outputs.\u003c/li\u003e\n\u003cli\u003eThe compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ein\u003c/code\u003e variables will throw in template expressions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echange AnimationCallbackEvent.animationComplete signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ehttp\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/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\u003e\u003ca href=\"https://github.com/angular/angular/commit/9b69e296032a0c1572356c2b9f7b74fad6290052\"\u003e\u003ccode\u003e9b69e29\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/11834a42745e62830a83a4c14eea9d203baec680\"\u003e\u003ccode\u003e11834a4\u003c/code\u003e\u003c/a\u003e fix(compiler): add geolocation element to schema\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.2/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.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/670d1660c4-feat-blue\" alt=\"feat - 670d1660c4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eperf(language-service): use lightweight project warmup for Angular analysis (\u003ca href=\"https://github.com/angular/angular/commit/d2137928e8f075527016a3c011dd8efc4d4e1ebd\"\u003ed2137928e8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.1\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/e2e9a9a531c9e9a69701e549f28354cc5d5edd77\"\u003e\u003cimg src=\"https://img.shields.io/badge/e2e9a9a531-fix-green\" alt=\"fix - e2e9a9a531\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadds transfer cache to httpResource to fix hydration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003cimg src=\"https://img.shields.io/badge/b4ec3cc4e4-fix-green\" alt=\"fix - b4ec3cc4e4\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent child animation elements from being orphaned\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003cimg src=\"https://img.shields.io/badge/e923d88398-fix-green\" alt=\"fix - e923d88398\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePrevent removal of elements during drag and drop\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/277ade97ac2a3a7f2a5b513acaa93e7663cdc55f\"\u003e\u003cimg src=\"https://img.shields.io/badge/277ade97ac-fix-green\" alt=\"fix - 277ade97ac\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ecorrectly cache blob responses in transfer cache (\u003ca href=\"https://github.com/angular/angular/tree/HEAD/packages/core/issues/67002\"\u003e#67002\u003c/a\u003e)\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eVSCode Extension: 21.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(vscode-extension): Highlight function calls with optional chaining (\u003ca href=\"https://github.com/angular/angular/commit/4f8d3995f082929d1ef4163dcb4373d3ef7a67cf\"\u003e4f8d3995f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add linked editing ranges for HTML tag synchronization (\u003ca href=\"https://github.com/angular/angular/commit/8c21866f49ff74344551395ae0a5df1841d54c0d\"\u003e8c21866f49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(vscode-extension): support highlighting for class bindings with brackets (\u003ca href=\"https://github.com/angular/angular/commit/01ed57f297d6713724dfaedc9520f80471f37c10\"\u003e01ed57f297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-service): add JSON schema for angularCompilerOptions (\u003ca href=\"https://github.com/angular/angular/commit/496967e7b13dfe1ebdde69724cd62880914beb60\"\u003e496967e7b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(language-service): Detect local project version on creation (\u003ca href=\"https://github.com/angular/angular/commit/8a7cbd46685874f4500c52629d09c5f7fd309080\"\u003e8a7cbd4668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Support client-side file watching via \u003ccode\u003eonDidChangeWatchedFiles\u003c/code\u003e (\u003ca href=\"https://github.com/angular/angular/commit/6fb39d9b62cbb634e95ec00fe5ef85d84da3bdbd\"\u003e6fb39d9b62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add completions and hover info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/ebc90c26f5ff1ba1e0ca9b775a44e301ebfb9473\"\u003eebc90c26f5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add quick info for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/573aadef7eb8b6b5e83b82a16f95d2a556f27c01\"\u003e573aadef7e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat(language-server): Add folding range support for inline styles (\u003ca href=\"https://github.com/angular/angular/commit/26fd0839c32d2ebeaa5e3ecc10ed70ab9ca17749\"\u003e26fd0839c3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0\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/18003a33bb0d6bb09def8a0e5939fa24069696eb\"\u003e\u003cimg src=\"https://img.shields.io/badge/18003a33bb-feat-blue\" alt=\"feat - 18003a33bb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eadd an 'outlet' injector option for ngTemplateOutlet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/8bbe6dc46c9dc13bafa81a60c7613b84b5ca3761\"\u003e\u003cimg src=\"https://img.shields.io/badge/8bbe6dc46c-feat-blue\" alt=\"feat - 8bbe6dc46c\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eAdd Location strategies to manage trailing slash on write\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\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.2 (2026-03-09)\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e1df1697c6e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003ec822bf8e76\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e05d022d5e6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f55e094c3ebbcccad14163f3\"\u003e670d1660c4\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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 (2026-03-05)\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/72a17afaf32194d42e4b5c090d4f75bad875930b\"\u003e72a17afaf3\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/dc4cf649b62fd47e0e1bd255ec954d88585899c4\"\u003edc4cf649b6\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/c767d678cff65a89f380b4512590fa732db072c8\"\u003ec767d678cf\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efeat\u003c/td\u003e\n\u003ctd\u003eadd 'blur' option to debounce rule\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/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7\"\u003ef01901d766\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003efix\u003c/td\u003e\n\u003ctd\u003eavoid generating invalid code in ChangeDetectionStrategy.Eager migration\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 (2026-03-04)\u003c/h1\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003ch3\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNode.js v20 is no longer supported. The minimum supported Node.js versions are now v22.22.0 and v24.13.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edata prefixed attribute no-longer bind inputs nor outputs.\u003c/li\u003e\n\u003cli\u003eThe compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ein\u003c/code\u003e variables will throw in template expressions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ecore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echange AnimationCallbackEvent.animationComplete signature\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ehttp\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/angular/commit/e7d1d8def3ed0c086b879f0485d7e28246568837\"\u003e\u003ccode\u003ee7d1d8d\u003c/code\u003e\u003c/a\u003e refactor(core): add tracing for component creation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/4a390b6c7393f1228e0e3031fdf59500e0b787dd\"\u003e\u003ccode\u003e4a390b6\u003c/code\u003e\u003c/a\u003e refactor(core): track the tracing service in the LView environment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/6d7446bc6c2914a06b26962ae06ced5d2024ee9a\"\u003e\u003ccode\u003e6d7446b\u003c/code\u003e\u003c/a\u003e refactor(core): account for shadow roots in animations\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/b4ec3cc4e41f2948ad0830eb14aa05d14fa3a9ed\"\u003e\u003ccode\u003eb4ec3cc\u003c/code\u003e\u003c/a\u003e fix(core): prevent child animation elements from being orphaned\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/core/issues/67\"\u003e#67\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/f5e9a862c20f503e1af3c57e696118c5e68e5988\"\u003e\u003ccode\u003ef5e9a86\u003c/code\u003e\u003c/a\u003e refactor(core): ignore infinite animations in animate api\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/a79e8afbadaac3c0dd4acab5aef6d5a6bc64e377\"\u003e\u003ccode\u003ea79e8af\u003c/code\u003e\u003c/a\u003e docs: update doc for \u003ccode\u003eprovideZoneChangeDetection\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular/angular/commit/e923d8839868c79989502ab3503e13d93c78516a\"\u003e\u003ccode\u003ee923d88\u003c/code\u003e\u003c/a\u003e fix(core): Prevent removal of elements during drag and drop\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/angular/angular/commits/v21.2.2/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.1.2 to 21.2.2\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\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\u003ch2\u003e21.2.2\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/1df1697c6e3a6b1d302f7692b495146943faa12f\"\u003e\u003cimg src=\"https://img.shields.io/badge/1df1697c6e-fix-green\" alt=\"fix - 1df1697c6e\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eprevent mutation of children array in RecursiveVisitor\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/c822bf8e76611afde332b6625f5e7bae2fe9c3f3\"\u003e\u003cimg src=\"https://img.shields.io/badge/c822bf8e76-fix-green\" alt=\"fix - c822bf8e76\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ealways parenthesize object literals in TCB\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/angular/angular/commit/05d022d5e61cca7ac90d5b2b2ba3fc738b364ad9\"\u003e\u003cimg src=\"https://img.shields.io/badge/05d022d5e6-fix-green\" alt=\"fix - 05d022d5e6\" /\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eignore generated ngDevMode signal branch for code coverage\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/670d1660c40504e3f...\n\n_Description has been truncated_","html_url":"https://github.com/rachcampitos/histora/pull/64","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rachcampitos%2Fhistora/issues/64","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/64/packages"}},{"old_version":"21.1.0","new_version":"21.3.0","update_type":"minor","path":null,"pr_created_at":"2026-03-09T03:51:25.000Z","version_change":"21.1.0 → 21.3.0","issue":{"uuid":"4043171175","node_id":"PR_kwDOQlxvgc7I8t-9","number":151,"state":"open","title":"deps(web): bump the dev-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","website"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-09T03:51:25.000Z","updated_at":"2026-03-30T04:09:21.055Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(web): bump","group_name":"dev-dependencies","update_count":20,"packages":[{"name":"@analogjs/vite-plugin-angular","old_version":"2.2.0","new_version":"2.3.1","repository_url":"https://github.com/analogjs/analog"},{"name":"@angular-eslint/builder","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/template-parser","old_version":"21.1.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@tailwindcss/postcss","old_version":"4.1.18","new_version":"4.2.1","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"@testing-library/angular","old_version":"18.1.1","new_version":"19.1.0","repository_url":"https://github.com/testing-library/angular-testing-library"},{"name":"@typescript-eslint/eslint-plugin","old_version":"8.51.0","new_version":"8.56.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@typescript-eslint/parser","old_version":"8.51.0","new_version":"8.56.1","repository_url":"https://github.com/typescript-eslint/typescript-eslint"},{"name":"@vitest/coverage-v8","old_version":"4.0.16","new_version":"4.0.18","repository_url":"https://github.com/vitest-dev/vitest"},{"name":"@vitest/ui","old_version":"4.0.16","new_version":"4.0.18","repository_url":"https://github.com/vitest-dev/vitest"},{"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.0.3","repository_url":"https://github.com/eslint/eslint"},{"name":"eslint-plugin-prettier","old_version":"5.5.4","new_version":"5.5.5","repository_url":"https://github.com/prettier/eslint-plugin-prettier"},{"name":"jsdom","old_version":"27.4.0","new_version":"28.1.0","repository_url":"https://github.com/jsdom/jsdom"},{"name":"postcss","old_version":"8.5.6","new_version":"8.5.8","repository_url":"https://github.com/postcss/postcss"},{"name":"prettier","old_version":"3.7.4","new_version":"3.8.1","repository_url":"https://github.com/prettier/prettier"},{"name":"tailwindcss","old_version":"4.1.18","new_version":"4.2.1","repository_url":"https://github.com/tailwindlabs/tailwindcss"},{"name":"vitest","old_version":"4.0.16","new_version":"4.0.18","repository_url":"https://github.com/vitest-dev/vitest"}],"path":null,"ecosystem":"npm"},"body":"Bumps the dev-dependencies group with 20 updates in the /web directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.2.0` | `2.3.1` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.1.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.1.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.1.0` | `21.3.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.1.0` | `21.3.0` |\n| [@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser) | `21.1.0` | `21.3.0` |\n| [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.1.18` | `4.2.1` |\n| [@testing-library/angular](https://github.com/testing-library/angular-testing-library) | `18.1.1` | `19.1.0` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.51.0` | `8.56.1` |\n| [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.51.0` | `8.56.1` |\n| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.16` | `4.0.18` |\n| [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.0.16` | `4.0.18` |\n| [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.23` | `10.4.27` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.2` | `10.0.3` |\n| [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) | `5.5.4` | `5.5.5` |\n| [jsdom](https://github.com/jsdom/jsdom) | `27.4.0` | `28.1.0` |\n| [postcss](https://github.com/postcss/postcss) | `8.5.6` | `8.5.8` |\n| [prettier](https://github.com/prettier/prettier) | `3.7.4` | `3.8.1` |\n| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.1.18` | `4.2.1` |\n| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.0.16` | `4.0.18` |\n\n\nUpdates `@analogjs/vite-plugin-angular` from 2.2.0 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/analogjs/analog/releases\"\u003e\u003ccode\u003e@​analogjs/vite-plugin-angular\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.0...v2.3.1\"\u003e2.3.1\u003c/a\u003e (2026-03-01)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use single ? for JIT style resolve suffix (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2096\"\u003e#2096\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/76939300492d60a6e4253499e85fa75dad6649d0\"\u003e7693930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.1-beta.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.0...v2.3.1-beta.1\"\u003e2.3.1-beta.1\u003c/a\u003e (2026-02-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e hash styleId to prevent filename exceeding max length (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2090\"\u003e#2090\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/2aa211479e16cc106f957d5e373ea3a1386abfc6\"\u003e2aa2114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.2.3...v2.3.0\"\u003e2.3.0\u003c/a\u003e (2026-02-25)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd dependsOn to astro-angular build (\u003ca href=\"https://github.com/analogjs/analog/commit/1a6182d311e6235a6b1d3ae2e6a3dfa37697ee46\"\u003e1a6182d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebuild before publish (\u003ca href=\"https://github.com/analogjs/analog/commit/432ffa6a987c679bb7eea45f5c6fa7eb235dc286\"\u003e432ffa6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebump build (\u003ca href=\"https://github.com/analogjs/analog/commit/1c61fbc289a079a2ef5e3ce65dce9c7e9f2a7fed\"\u003e1c61fbc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epublish from workflow (\u003ca href=\"https://github.com/analogjs/analog/commit/390dd747f2d2e341260ac20d57f2b7d4057e371c\"\u003e390dd74\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove npm token from semantic release (\u003ca href=\"https://github.com/analogjs/analog/commit/ba42f16842772315e61e7ea29608c9df42504c97\"\u003eba42f16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove npm token publishing (\u003ca href=\"https://github.com/analogjs/analog/commit/1c490ad360733095e56abd9be97f59f81322714a\"\u003e1c490ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert back to semantic release (\u003ca href=\"https://github.com/analogjs/analog/commit/ea10b1b7caa573ef65b7796ab81796073fc6183b\"\u003eea10b1b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular): revert \u0026quot;fix(storybook-angular:\u003c/strong\u003e add missing applyDecorators to render annotaions\u0026quot; (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2088\"\u003e#2088\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/86e2a6a4c30aa7ab2d469bd18db32b0ec7daca44\"\u003e86e2a6a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e add missing applyDecorators to render annotaions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2086\"\u003e#2086\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9a141638ad674e4b5356ed6a0120f41d8ac90f18\"\u003e9a14163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e add missing await to storybook-angular preset core (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2081\"\u003e#2081\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/352870a86ca8dd08446b8538e04487e64398d0f4\"\u003e352870a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e resolve experimentalZoneless in Vitest path (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2059\"\u003e#2059\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/447dad2129f8840bb279d1e1eda6e838bca0d8da\"\u003e447dad2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate implicit dependencies for build (\u003ca href=\"https://github.com/analogjs/analog/commit/cfb0abc5b0be91dc498f443778e5fa1bef95a2c3\"\u003ecfb0abc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate node setup in release workflow (\u003ca href=\"https://github.com/analogjs/analog/commit/5bd0923d965dcea4fda160cdde8aab9b61601a76\"\u003e5bd0923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate node version (\u003ca href=\"https://github.com/analogjs/analog/commit/4aaa6bdb79e1909b1b8671a6cda7312a190e9082\"\u003e4aaa6bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add missing tinyglobby dependency (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2069\"\u003e#2069\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/8661cb6ab3754c05ed3b38a268570cd92dfd7147\"\u003e8661cb6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-angular:\u003c/strong\u003e add missing zone.js optional peer dependency (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2071\"\u003e#2071\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/88a1a55825e715842e28d810894fa86986c1b1e4\"\u003e88a1a55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-angular:\u003c/strong\u003e fix setupTestBed's providers option (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2072\"\u003e#2072\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/2e7a02f4f541b8c5a02a0f5e9f7f0b7ad354f087\"\u003e2e7a02f\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e support optional catch all routes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2043\"\u003e#2043\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/ba9fc09fdd293d338299d949cadbfdc8137677e8\"\u003eba9fc09\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-nitro:\u003c/strong\u003e add option for markdown source output alongside prerendered routes (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2082\"\u003e#2082\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/c15d20b9887008fda7714437280dbfc1bb66b336\"\u003ec15d20b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-angular:\u003c/strong\u003e add setup schematic and ng-add support (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2056\"\u003e#2056\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/cc26771aa72cb2a38c2fb7ca070840eccf1e7951\"\u003ecc26771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.3.0-beta.18\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.0-beta.17...v2.3.0-beta.18\"\u003e2.3.0-beta.18\u003c/a\u003e (2026-02-25)\u003c/h1\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/analogjs/analog/blob/beta/CHANGELOG.md\"\u003e\u003ccode\u003e@​analogjs/vite-plugin-angular\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0-beta.3...v2.4.0-beta.4\"\u003e2.4.0-beta.4\u003c/a\u003e (2026-03-05)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eplatform:\u003c/strong\u003e allow using custom vite plugins for Angular compilation (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2102\"\u003e#2102\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/8bb4fb44c4ccb1a0d9c51dcd6fe8c9ab840f0e4e\"\u003e8bb4fb4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0-beta.2...v2.4.0-beta.3\"\u003e2.4.0-beta.3\u003c/a\u003e (2026-03-01)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e use single ? for JIT style resolve suffix (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2096\"\u003e#2096\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/76939300492d60a6e4253499e85fa75dad6649d0\"\u003e7693930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.4.0-beta.1...v2.4.0-beta.2\"\u003e2.4.0-beta.2\u003c/a\u003e (2026-03-01)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003erouter:\u003c/strong\u003e use non-greedy regex for path normalization (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2093\"\u003e#2093\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/fa5dd9b7e6f9e245f5c6379f2f35ee35c7be75e3\"\u003efa5dd9b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.1-beta.1...v2.4.0-beta.1\"\u003e2.4.0-beta.1\u003c/a\u003e (2026-02-27)\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003econtent:\u003c/strong\u003e extract TOC to be property on contentFile (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2091\"\u003e#2091\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/4e870cc99e74c889743503522ae4c6f3be5d9247\"\u003e4e870cc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.3.0...v2.3.1-beta.1\"\u003e2.3.1-beta.1\u003c/a\u003e (2026-02-27)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e hash styleId to prevent filename exceeding max length (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2090\"\u003e#2090\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/2aa211479e16cc106f957d5e373ea3a1386abfc6\"\u003e2aa2114\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/analogjs/analog/compare/v2.2.3...v2.3.0\"\u003e2.3.0\u003c/a\u003e (2026-02-25)\u003c/h1\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd dependsOn to astro-angular build (\u003ca href=\"https://github.com/analogjs/analog/commit/1a6182d311e6235a6b1d3ae2e6a3dfa37697ee46\"\u003e1a6182d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebuild before publish (\u003ca href=\"https://github.com/analogjs/analog/commit/432ffa6a987c679bb7eea45f5c6fa7eb235dc286\"\u003e432ffa6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebump build (\u003ca href=\"https://github.com/analogjs/analog/commit/1c61fbc289a079a2ef5e3ce65dce9c7e9f2a7fed\"\u003e1c61fbc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epublish from workflow (\u003ca href=\"https://github.com/analogjs/analog/commit/390dd747f2d2e341260ac20d57f2b7d4057e371c\"\u003e390dd74\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove npm token from semantic release (\u003ca href=\"https://github.com/analogjs/analog/commit/ba42f16842772315e61e7ea29608c9df42504c97\"\u003eba42f16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove npm token publishing (\u003ca href=\"https://github.com/analogjs/analog/commit/1c490ad360733095e56abd9be97f59f81322714a\"\u003e1c490ad\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erevert back to semantic release (\u003ca href=\"https://github.com/analogjs/analog/commit/ea10b1b7caa573ef65b7796ab81796073fc6183b\"\u003eea10b1b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular): revert \u0026quot;fix(storybook-angular:\u003c/strong\u003e add missing applyDecorators to render annotaions\u0026quot; (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2088\"\u003e#2088\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/86e2a6a4c30aa7ab2d469bd18db32b0ec7daca44\"\u003e86e2a6a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e add missing applyDecorators to render annotaions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2086\"\u003e#2086\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/9a141638ad674e4b5356ed6a0120f41d8ac90f18\"\u003e9a14163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e add missing await to storybook-angular preset core (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2081\"\u003e#2081\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/352870a86ca8dd08446b8538e04487e64398d0f4\"\u003e352870a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estorybook-angular:\u003c/strong\u003e resolve experimentalZoneless in Vitest path (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2059\"\u003e#2059\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/447dad2129f8840bb279d1e1eda6e838bca0d8da\"\u003e447dad2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate implicit dependencies for build (\u003ca href=\"https://github.com/analogjs/analog/commit/cfb0abc5b0be91dc498f443778e5fa1bef95a2c3\"\u003ecfb0abc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate node setup in release workflow (\u003ca href=\"https://github.com/analogjs/analog/commit/5bd0923d965dcea4fda160cdde8aab9b61601a76\"\u003e5bd0923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate node version (\u003ca href=\"https://github.com/analogjs/analog/commit/4aaa6bdb79e1909b1b8671a6cda7312a190e9082\"\u003e4aaa6bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evite-plugin-angular:\u003c/strong\u003e add missing tinyglobby dependency (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2069\"\u003e#2069\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/8661cb6ab3754c05ed3b38a268570cd92dfd7147\"\u003e8661cb6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evitest-angular:\u003c/strong\u003e add missing zone.js optional peer dependency (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2071\"\u003e#2071\u003c/a\u003e) (\u003ca href=\"https://github.com/analogjs/analog/commit/88a1a55825e715842e28d810894fa86986c1b1e4\"\u003e88a1a55\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/553790b242b5435a54bb962a002a5b0ea612d934\"\u003e\u003ccode\u003e553790b\u003c/code\u003e\u003c/a\u003e chore: release 2.3.1 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/76939300492d60a6e4253499e85fa75dad6649d0\"\u003e\u003ccode\u003e7693930\u003c/code\u003e\u003c/a\u003e fix(vite-plugin-angular): use single ? for JIT style resolve suffix (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2096\"\u003e#2096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/321e4083ac1695724b6f339b2b1d04a4416827b4\"\u003e\u003ccode\u003e321e408\u003c/code\u003e\u003c/a\u003e chore: release 2.3.0 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/eb5544e196800dcae77a87ee8dec0a17bbb0fd9e\"\u003e\u003ccode\u003eeb5544e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2089\"\u003e#2089\u003c/a\u003e from analogjs/beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/33c2251aada34b066e321f0fbb6f463c7366a199\"\u003e\u003ccode\u003e33c2251\u003c/code\u003e\u003c/a\u003e chore: release 2.3.0-beta.18 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/86e2a6a4c30aa7ab2d469bd18db32b0ec7daca44\"\u003e\u003ccode\u003e86e2a6a\u003c/code\u003e\u003c/a\u003e fix(storybook-angular): revert \u0026quot;fix(storybook-angular): add missing applyDeco...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/260e935bdcece77e30a986def2614f1cc2a74f11\"\u003e\u003ccode\u003e260e935\u003c/code\u003e\u003c/a\u003e docs: sync the contributors to zh-hans (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2085\"\u003e#2085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/63132bdc7b79c12b883a0fc6d01f9819b61fef6d\"\u003e\u003ccode\u003e63132bd\u003c/code\u003e\u003c/a\u003e chore: release 2.3.0-beta.17 [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/9a141638ad674e4b5356ed6a0120f41d8ac90f18\"\u003e\u003ccode\u003e9a14163\u003c/code\u003e\u003c/a\u003e fix(storybook-angular): add missing applyDecorators to render annotaions (\u003ca href=\"https://redirect.github.com/analogjs/analog/issues/2086\"\u003e#2086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/analogjs/analog/commit/0f7a6ea39f7b421d011653951e1a18825e8db21f\"\u003e\u003ccode\u003e0f7a6ea\u003c/code\u003e\u003c/a\u003e chore: release 2.3.0-beta.16 [skip ci]\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/analogjs/analog/compare/v2.2.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eMaintainer changes\u003c/summary\u003e\n\u003cp\u003eThis version was pushed to npm by [GitHub Actions](\u003ca href=\"https://www.npmjs.com/~GitHub\"\u003ehttps://www.npmjs.com/~GitHub\u003c/a\u003e Actions), a new releaser for \u003ccode\u003e@​analogjs/vite-plugin-angular\u003c/code\u003e since your current version.\u003c/p\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/builder` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for builder 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/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/5c214854f897cb698563f53db6b9bddfb23e4d8e\"\u003e\u003ccode\u003e5c21485\u003c/code\u003e\u003c/a\u003e chore(builder): change builder tests to be cross-platform (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2905\"\u003e#2905\u003c/a\u003e)\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/builder/issues/2903\"\u003e#2903\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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\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\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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:\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\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\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:\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\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-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/ffcc447713c47e0ebca1886e3a2216222f99966a\"\u003e\u003ccode\u003effcc447\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] detect \u003ccode\u003eSignal\u003c/code\u003e type correctly (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/65f2540c19820548b4e61dbbb9fddedf2e2031be\"\u003e\u003ccode\u003e65f2540\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): [no-uncalled-signals] detect Signal member access (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2848\"\u003e#2848\u003c/a\u003e)\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/eslint-plugin/issues/2903\"\u003e#2903\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/eslint-plugin/issues/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6517619cbe929f15c0a2f1eb754c97878d73abfd\"\u003e\u003ccode\u003e6517619\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] add check `InputSignalWithTransform...\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/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/eslint-plugin/issues/2803\"\u003e#2803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\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 support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\u003c/a\u003e)\u003c/li\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\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.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\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\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/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/253da820cb5f263e113024068308ffd55e89bad0\"\u003e\u003ccode\u003e253da82\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [prefer-template-literal] preserve nested non st...\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/eslint-plugin-template/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/eslint-plugin-template/issues/2885\"\u003e#2885\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/d49bbe0ba374ab85f521b5f35e90fd3223031984\"\u003e\u003ccode\u003ed49bbe0\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template/issues/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/7cf27ebb0aeb6a7c577d0bebb40b02d080cd8c2d\"\u003e\u003ccode\u003e7cf27eb\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin-template): support ignore attributes for prefer-static-str...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/0cdfc51f509ee58cdae26fd9a788497a5c9155dd\"\u003e\u003ccode\u003e0cdfc51\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): allow autofocus on dialog elements for improved ...\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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e21.2.0 (2026-01-29)\u003c/h2\u003e\n\u003cp\u003eThis was a version bump only for schematics 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/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/schematics/issues/2903\"\u003e#2903\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\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/template-parser` from 21.1.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cul\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\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-template:\u003c/strong\u003e support ignore attributes for prefer-static-string-properties rule (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2852\"\u003e#2852\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.0.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.3 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2832\"\u003e#2832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.48.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency eslint to v9.39.2 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.0.6 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate typescript-eslint packages to v8.50.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2840\"\u003e#2840\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.1 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeslint-plugin-template:\u003c/strong\u003e allow autofocus on dialog elements for improved accessibility (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2851\"\u003e#2851\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\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-eslint/angular-eslint/blob/main/packages/template-parser/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\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🩹 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2862\"\u003e#2862\u003c/a\u003e)\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-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/f78af866b48ae63bb437d422d4d29170a55e5611\"\u003e\u003ccode\u003ef78af86\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2915\"\u003e#2915\u003c/a\u003e)\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/template-parser/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/template-parser/issues/2885\"\u003e#2885\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/d49bbe0ba374ab85f521b5f35e90fd3223031984\"\u003e\u003ccode\u003ed49bbe0\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.1.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2862\"\u003e#2862\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/template-parser\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@tailwindcss/postcss` from 4.1.18 to 4.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tailwindlabs/tailwindcss/releases\"\u003e\u003ccode\u003e@​tailwindcss/postcss\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow trailing dash in functional utility names for backwards compatibility (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19696\"\u003e#19696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly detect classes containing \u003ccode\u003e.\u003c/code\u003e characters within curly braces in MDX files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19711\"\u003e#19711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd mauve, olive, mist, and taupe color palettes to the default theme (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19627\"\u003e#19627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e package to run Tailwind CSS as a webpack plugin (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19610\"\u003e#19610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epbs-*\u003c/code\u003e and \u003ccode\u003epbe-*\u003c/code\u003e utilities for \u003ccode\u003epadding-block-start\u003c/code\u003e and \u003ccode\u003epadding-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003embs-*\u003c/code\u003e and \u003ccode\u003embe-*\u003c/code\u003e utilities for \u003ccode\u003emargin-block-start\u003c/code\u003e and \u003ccode\u003emargin-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003escroll-pbs-*\u003c/code\u003e and \u003ccode\u003escroll-pbe-*\u003c/code\u003e utilities for \u003ccode\u003escroll-padding-block-start\u003c/code\u003e and \u003ccode\u003escroll-padding-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003escroll-mbs-*\u003c/code\u003e and \u003ccode\u003escroll-mbe-*\u003c/code\u003e utilities for \u003ccode\u003escroll-margin-block-start\u003c/code\u003e and \u003ccode\u003escroll-margin-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder-bs-*\u003c/code\u003e and \u003ccode\u003eborder-be-*\u003c/code\u003e utilities for \u003ccode\u003eborder-block-start\u003c/code\u003e and \u003ccode\u003eborder-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einline-*\u003c/code\u003e, \u003ccode\u003emin-inline-*\u003c/code\u003e, \u003ccode\u003emax-inline-*\u003c/code\u003e utilities for \u003ccode\u003einline-size\u003c/code\u003e, \u003ccode\u003emin-inline-size\u003c/code\u003e, and \u003ccode\u003emax-inline-size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19612\"\u003e#19612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eblock-*\u003c/code\u003e, \u003ccode\u003emin-block-*\u003c/code\u003e, \u003ccode\u003emax-block-*\u003c/code\u003e utilities for \u003ccode\u003eblock-size\u003c/code\u003e, \u003ccode\u003emin-block-size\u003c/code\u003e, and \u003ccode\u003emax-block-size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19612\"\u003e#19612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einset-s-*\u003c/code\u003e, \u003ccode\u003einset-e-*\u003c/code\u003e, \u003ccode\u003einset-bs-*\u003c/code\u003e, \u003ccode\u003einset-be-*\u003c/code\u003e utilities for \u003ccode\u003einset-inline-start\u003c/code\u003e, \u003ccode\u003einset-inline-end\u003c/code\u003e, \u003ccode\u003einset-block-start\u003c/code\u003e, and \u003ccode\u003einset-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19613\"\u003e#19613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efont-features-*\u003c/code\u003e utility for \u003ccode\u003efont-feature-settings\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19623\"\u003e#19623\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent double \u003ccode\u003e@supports\u003c/code\u003e wrapper for \u003ccode\u003ecolor-mix\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19450\"\u003e#19450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow whitespace around \u003ccode\u003e@source inline()\u003c/code\u003e argument (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19461\"\u003e#19461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit comment when source maps are saved to files when using \u003ccode\u003e@tailwindcss/cli\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19447\"\u003e#19447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect utilities containing capital letters followed by numbers (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19465\"\u003e#19465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix class extraction for Rails' strict locals (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19525\"\u003e#19525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlign \u003ccode\u003e@utility\u003c/code\u003e name validation with Oxide scanner rules (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19524\"\u003e#19524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix infinite loop when using \u003ccode\u003e@variant\u003c/code\u003e inside \u003ccode\u003e@custom-variant\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19633\"\u003e#19633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow multiples of \u003ccode\u003e.25\u003c/code\u003e in \u003ccode\u003easpect-*\u003c/code\u003e fractions (e.g. \u003ccode\u003easpect-8.5/11\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19688\"\u003e#19688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure changes to external files listed via \u003ccode\u003e@source\u003c/code\u003e trigger a full page reload when using \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19670\"\u003e#19670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of Oxide scanner in bigger projects by reducing file system walks (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19632\"\u003e#19632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure import aliases in Astro v5 work without crashing when using \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/issues/19677\"\u003e#19677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow escape characters in \u003ccode\u003e@utility\u003c/code\u003e names to improve support with formatters such as Biome (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19626\"\u003e#19626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect canonicalization results when canonicalizing multiple times (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19675\"\u003e#19675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.jj\u003c/code\u003e to default ignored content directories (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19687\"\u003e#19687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate \u003ccode\u003estart-*\u003c/code\u003e and \u003ccode\u003eend-*\u003c/code\u003e utilities in favor of \u003ccode\u003einset-s-*\u003c/code\u003e and \u003ccode\u003einset-e-*\u003c/code\u003e utilities (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19613\"\u003e#19613\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md\"\u003e\u003ccode\u003e@​tailwindcss/postcss\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.2.1] - 2026-02-23\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow trailing dash in functional utility names for backwards compatibility (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19696\"\u003e#19696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly detect classes containing \u003ccode\u003e.\u003c/code\u003e characters within curly braces in MDX files (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19711\"\u003e#19711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.2.0] - 2026-02-18\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd mauve, olive, mist, and taupe color palettes to the default theme (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19627\"\u003e#19627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@tailwindcss/webpack\u003c/code\u003e package to run Tailwind CSS as a webpack plugin (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19610\"\u003e#19610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epbs-*\u003c/code\u003e and \u003ccode\u003epbe-*\u003c/code\u003e utilities for \u003ccode\u003epadding-block-start\u003c/code\u003e and \u003ccode\u003epadding-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003embs-*\u003c/code\u003e and \u003ccode\u003embe-*\u003c/code\u003e utilities for \u003ccode\u003emargin-block-start\u003c/code\u003e and \u003ccode\u003emargin-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003escroll-pbs-*\u003c/code\u003e and \u003ccode\u003escroll-pbe-*\u003c/code\u003e utilities for \u003ccode\u003escroll-padding-block-start\u003c/code\u003e and \u003ccode\u003escroll-padding-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003escroll-mbs-*\u003c/code\u003e and \u003ccode\u003escroll-mbe-*\u003c/code\u003e utilities for \u003ccode\u003escroll-margin-block-start\u003c/code\u003e and \u003ccode\u003escroll-margin-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eborder-bs-*\u003c/code\u003e and \u003ccode\u003eborder-be-*\u003c/code\u003e utilities for \u003ccode\u003eborder-block-start\u003c/code\u003e and \u003ccode\u003eborder-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19601\"\u003e#19601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einline-*\u003c/code\u003e, \u003ccode\u003emin-inline-*\u003c/code\u003e, \u003ccode\u003emax-inline-*\u003c/code\u003e utilities for \u003ccode\u003einline-size\u003c/code\u003e, \u003ccode\u003emin-inline-size\u003c/code\u003e, and \u003ccode\u003emax-inline-size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19612\"\u003e#19612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eblock-*\u003c/code\u003e, \u003ccode\u003emin-block-*\u003c/code\u003e, \u003ccode\u003emax-block-*\u003c/code\u003e utilities for \u003ccode\u003eblock-size\u003c/code\u003e, \u003ccode\u003emin-block-size\u003c/code\u003e, and \u003ccode\u003emax-block-size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19612\"\u003e#19612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einset-s-*\u003c/code\u003e, \u003ccode\u003einset-e-*\u003c/code\u003e, \u003ccode\u003einset-bs-*\u003c/code\u003e, \u003ccode\u003einset-be-*\u003c/code\u003e utilities for \u003ccode\u003einset-inline-start\u003c/code\u003e, \u003ccode\u003einset-inline-end\u003c/code\u003e, \u003ccode\u003einset-block-start\u003c/code\u003e, and \u003ccode\u003einset-block-end\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19613\"\u003e#19613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efont-features-*\u003c/code\u003e utility for \u003ccode\u003efont-feature-settings\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19623\"\u003e#19623\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent double \u003ccode\u003e@supports\u003c/code\u003e wrapper for \u003ccode\u003ecolor-mix\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19450\"\u003e#19450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow whitespace around \u003ccode\u003e@source inline()\u003c/code\u003e argument (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19461\"\u003e#19461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit comment when source maps are saved to files when using \u003ccode\u003e@tailwindcss/cli\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19447\"\u003e#19447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect utilities containing capital letters followed by numbers (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19465\"\u003e#19465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix class extraction for Rails' strict locals (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19525\"\u003e#19525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAlign \u003ccode\u003e@utility\u003c/code\u003e name validation with Oxide scanner rules (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19524\"\u003e#19524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix infinite loop when using \u003ccode\u003e@variant\u003c/code\u003e inside \u003ccode\u003e@custom-variant\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19633\"\u003e#19633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow multiples of \u003ccode\u003e.25\u003c/code\u003e in \u003ccode\u003easpect-*\u003c/code\u003e fractions (e.g. \u003ccode\u003easpect-8.5/11\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19688\"\u003e#19688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure changes to external files listed via \u003ccode\u003e@source\u003c/code\u003e trigger a full page reload when using \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19670\"\u003e#19670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove performance of Oxide scanner in bigger projects by reducing file system walks (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/pull/19632\"\u003e#19632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure import aliases in Astro v5 work without crashing when using \u003ccode\u003e@tailwindcss/vite\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/tailwindlabs/tailwindcss/issues/19677\"\u003e#19677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAll...\n\n_Description has been truncated_","html_url":"https://github.com/pegasusheavy/armature/pull/151","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pegasusheavy%2Farmature/issues/151","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/151/packages"}},{"old_version":"21.2.0","new_version":"21.3.0","update_type":"minor","path":null,"pr_created_at":"2026-03-08T19:33:56.000Z","version_change":"21.2.0 → 21.3.0","issue":{"uuid":"4042012968","node_id":"PR_kwDONWdOm87I5FWz","number":227,"state":"open","title":"Bump the js-dependencies group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["frontend","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-08T19:33:56.000Z","updated_at":"2026-03-08T19:34:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"js-dependencies","update_count":8,"packages":[{"name":"apexcharts","old_version":"5.10.1","new_version":"5.10.3","repository_url":"https://github.com/apexcharts/apexcharts.js"},{"name":"ng-apexcharts","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/apexcharts/ng-apexcharts"},{"name":"@angular-eslint/builder","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/eslint-plugin-template","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"@angular-eslint/schematics","old_version":"21.2.0","new_version":"21.3.0","repository_url":"https://github.com/angular-eslint/angular-eslint"},{"name":"eslint","old_version":"9.39.3","new_version":"10.0.3","repository_url":"https://github.com/eslint/eslint"}],"path":null,"ecosystem":"npm"},"body":"Bumps the js-dependencies group with 7 updates in the /frontend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [apexcharts](https://github.com/apexcharts/apexcharts.js) | `5.10.1` | `5.10.3` |\n| [ng-apexcharts](https://github.com/apexcharts/ng-apexcharts) | `2.2.0` | `2.3.0` |\n| [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template) | `21.2.0` | `21.3.0` |\n| [@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics) | `21.2.0` | `21.3.0` |\n| [eslint](https://github.com/eslint/eslint) | `9.39.3` | `10.0.3` |\n\n\nUpdates `apexcharts` from 5.10.1 to 5.10.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/apexcharts/apexcharts.js/releases\"\u003eapexcharts's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e💎 Version 5.10.3\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSSR: Bar/column charts rendered duplicate elements in \u003ccode\u003erenderToString()\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://github.com/apexcharts/apexcharts.js/commit/1b4bcb1f\"\u003e\u003ccode\u003e1b4bcb1f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eSSRElement.appendChild\u003c/code\u003e and \u003ccode\u003einsertBefore\u003c/code\u003e were unconditionally pushing the\nchild onto the children array without checking whether the child already had a\nparent. Because \u003ccode\u003eBar.js\u003c/code\u003e creates \u003ccode\u003eelDataLabelsWrap\u003c/code\u003e, \u003ccode\u003eelGoalsMarkers\u003c/code\u003e, and\n\u003ccode\u003eelBarShadows\u003c/code\u003e once per series but calls \u003ccode\u003eelSeries.add()\u003c/code\u003e on every data-point\niteration, the SSR virtual DOM accumulated N×N bar paths and datalabel groups\ninstead of N. The fix mirrors standard browser DOM move semantics: if a node\nalready has a parent it is detached from that parent before being appended.\nThis affects both \u003ccode\u003eappendChild\u003c/code\u003e and \u003ccode\u003einsertBefore\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💎 Version 5.10.2\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTree-shaking: ESM entry points were incorrectly eliminated by bundlers\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edist/*.esm.js\u003c/code\u003e and \u003ccode\u003edist/features/*.esm.js\u003c/code\u003e were missing from the\n\u003ccode\u003esideEffects\u003c/code\u003e field in \u003ccode\u003epackage.json\u003c/code\u003e. Bundlers such as Webpack and Rollup\ntreat files not listed as having side effects as safe to drop when they are\nnot explicitly imported, which caused chart type and feature registrations to\nbe silently tree-shaken away in production builds. Adding both glob patterns\nensures the self-registering ESM bundles are always retained.\u003c/p\u003e\n\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/apexcharts/apexcharts.js/commit/dea8e7d8b18749f99668585f101090015ff2626f\"\u003e\u003ccode\u003edea8e7d\u003c/code\u003e\u003c/a\u003e fixes \u003ca href=\"https://redirect.github.com/apexcharts/apexcharts.js/issues/5184\"\u003e#5184\u003c/a\u003e; re-add paper() to typescript definitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apexcharts/apexcharts.js/commit/6c76437a555532f9ab4d0b51d82c0cf6d47f629f\"\u003e\u003ccode\u003e6c76437\u003c/code\u003e\u003c/a\u003e build: 5.10.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apexcharts/apexcharts.js/commit/1b4bcb1f2bbe46f7280c9f332ac00c33e8c04ad3\"\u003e\u003ccode\u003e1b4bcb1\u003c/code\u003e\u003c/a\u003e fix: SSRElement.appendChild now removes child from previous parent before re-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/apexcharts/apexcharts.js/commit/7f97cb5465a5541840c44328cfd1134d17477671\"\u003e\u003ccode\u003e7f97cb5\u003c/code\u003e\u003c/a\u003e build: 5.10.2\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/apexcharts/apexcharts.js/compare/v5.10.1...v5.10.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ng-apexcharts` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/apexcharts/ng-apexcharts/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/builder` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/builder\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\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-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/5c214854f897cb698563f53db6b9bddfb23e4d8e\"\u003e\u003ccode\u003e5c21485\u003c/code\u003e\u003c/a\u003e chore(builder): change builder tests to be cross-platform (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder/issues/2905\"\u003e#2905\u003c/a\u003e)\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/builder/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/builder\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e21.3.0 (2026-03-05)\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\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\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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:\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\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\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/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/ffcc447713c47e0ebca1886e3a2216222f99966a\"\u003e\u003ccode\u003effcc447\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] detect \u003ccode\u003eSignal\u003c/code\u003e type correctly (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/65f2540c19820548b4e61dbbb9fddedf2e2031be\"\u003e\u003ccode\u003e65f2540\u003c/code\u003e\u003c/a\u003e feat(eslint-plugin): [no-uncalled-signals] detect Signal member access (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin/issues/2848\"\u003e#2848\u003c/a\u003e)\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/eslint-plugin/issues/2903\"\u003e#2903\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/eslint-plugin/issues/2882\"\u003e#2882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/angular-eslint/angular-eslint/commit/6517619cbe929f15c0a2f1eb754c97878d73abfd\"\u003e\u003ccode\u003e6517619\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin): [no-uncalled-signals] add check `InputSignalWithTransform...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/eslint-plugin\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/eslint-plugin-template` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/eslint-plugin-template\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e🩹 Fixes\u003c/h3\u003e\n\u003cul\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\u003eGuillaume DROUARD\u003c/li\u003e\n\u003cli\u003eJason Weinzierl\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-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/253da820cb5f263e113024068308ffd55e89bad0\"\u003e\u003ccode\u003e253da82\u003c/code\u003e\u003c/a\u003e fix(eslint-plugin-template): [prefer-template-literal] preserve nested non st...\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/eslint-plugin-template/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/eslint-plugin-template/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/eslint-plugin-template\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/schematics` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/schematics\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eJason Weinzierl\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-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/schematics/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/schematics\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `@angular-eslint/template-parser` from 21.2.0 to 21.3.0\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\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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-eslint/angular-eslint/blob/main/packages/template-parser/CHANGELOG.md\"\u003e\u003ccode\u003e@​angular-eslint/template-parser\u003c/code\u003e's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\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.2.0 (\u003ca href=\"https://redirect.github.com/angular-eslint/angular-eslint/pull/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e❤️ Thank You\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume DROUARD\u003c/li\u003e\n\u003cli\u003eJason Weinzierl\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-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/f78af866b48ae63bb437d422d4d29170a55e5611\"\u003e\u003ccode\u003ef78af86\u003c/code\u003e\u003c/a\u003e fix: update dependency \u003ccode\u003e@​angular/compiler\u003c/code\u003e to v21.2.0 (\u003ca href=\"https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser/issues/2915\"\u003e#2915\u003c/a\u003e)\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/template-parser/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/template-parser/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/angular-eslint/angular-eslint/commits/v21.3.0/packages/template-parser\"\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.3 to 10.0.3\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.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\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e8f21040f675753e92df8e04f2dbd03addb92985\"\u003e\u003ccode\u003ee8f2104\u003c/code\u003e\u003c/a\u003e chore: updates for v9.39.4 release (Jenkins)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/5cd1604cea5734bc235155a1a1add9f08ae83370\"\u003e\u003ccode\u003e5cd1604\u003c/code\u003e\u003c/a\u003e refactor: simplify isCombiningCharacter helper (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20524\"\u003e#20524\u003c/a\u003e) (Huáng Jùnliàng)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/70ff1d07a8e7eba9e70b67ea55fcf2e47cdc9b2d\"\u003e\u003ccode\u003e70ff1d0\u003c/code\u003e\u003c/a\u003e chore: eslint-config-eslint require Node \u003ccode\u003e^20.19.0 || ^22.13.0 || \u0026gt;=24\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20586\"\u003e#20586\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e32df71a569d5f4aca13079dedd4ae76ea05168a\"\u003e\u003ccode\u003ee32df71\u003c/code\u003e\u003c/a\u003e chore: update eslint-plugin-eslint-comments, remove legacy-peer-deps (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20576\"\u003e#20576\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/53ca6eeed87262ebddd20636107f486badabcc1f\"\u003e\u003ccode\u003e53ca6ee\u003c/code\u003e\u003c/a\u003e chore: disable \u003ccode\u003eeslint-comments/no-unused-disable\u003c/code\u003e rule (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20578\"\u003e#20578\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e1218957452e223af27ace1f9d031ab421aec08f\"\u003e\u003ccode\u003ee121895\u003c/code\u003e\u003c/a\u003e ci: pin Node.js 25.6.1 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20559\"\u003e#20559\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/efc5aef2f9a05f01d5cad53dcb91e7f2c575e295\"\u003e\u003ccode\u003eefc5aef\u003c/code\u003e\u003c/a\u003e chore: update \u003ccode\u003etsconfig.json\u003c/code\u003e in \u003ccode\u003eeslint-config-eslint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20551\"\u003e#20551\u003c/a\u003e) (Francesco Trotta)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev10.0.2\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/2b723616a4daeacd4605f11b4d087d4a7cae5c74\"\u003e\u003ccode\u003e2b72361\u003c/code\u003e\u003c/a\u003e fix: update \u003ccode\u003eajv\u003c/code\u003e to \u003ccode\u003e6.14.0\u003c/code\u003e to address security vulnerabilities (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20537\"\u003e#20537\u003c/a\u003e) (루밀LuMir)\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/13eeedbbd16218b0da1425b78cb284937fd964ca\"\u003e\u003ccode\u003e13eeedb\u003c/code\u003e\u003c/a\u003e docs: link rule type explanation to CLI option --fix-type (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20548\"\u003e#20548\u003c/a\u003e) (Mike McCready)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/98cbf6ba53a1fb2028d25078c7049a538d0e392c\"\u003e\u003ccode\u003e98cbf6b\u003c/code\u003e\u003c/a\u003e docs: update migration guide per Program range change (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20534\"\u003e#20534\u003c/a\u003e) (Huáng Jùnliàng)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/61a24054411fa56ce74bef554846caa9d8cb01f5\"\u003e\u003ccode\u003e61a2405\u003c/code\u003e\u003c/a\u003e docs: add missing semicolon in vars-on-top rule example (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20533\"\u003e#20533\u003c/a\u003e) (Abilash)\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/951223b29669885643f7854d7c824288ba962d7e\"\u003e\u003ccode\u003e951223b\u003c/code\u003e\u003c/a\u003e chore: update dependency \u003ccode\u003e@​eslint/eslintrc\u003c/code\u003e to ^3.3.4 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20553\"\u003e#20553\u003c/a\u003e) (renovate[bot])\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/6aa1afe6694f3fd7f82116109a5ef2ad18ece074\"\u003e\u003ccode\u003e6aa1afe\u003c/code\u003e\u003c/a\u003e chore: update dependency eslint-plugin-jsdoc to ^62.7.0 (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20536\"\u003e#20536\u003c/a\u003e) (Milos Djermanovic)\u003c/li\u003e\n\u003c/ul\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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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://redirect.github.com/eslint/eslint/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\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/bfce7eaa0ec5d6591fd247b7ff57b51e45fb88a1\"\u003e\u003ccode\u003ebfce7ea\u003c/code\u003e\u003c/a\u003e 10.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/d44ced84bb00b1df3c616255f28d036089703ed8\"\u003e\u003ccode\u003ed44ced8\u003c/code\u003e\u003c/a\u003e Build: changelog update for 10.0.3\u003c/li\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)\u003c/li\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\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/e8f21040f675753e92df8e04f2dbd03addb92985\"\u003e\u003ccode\u003ee8f2104\u003c/code\u003e\u003c/a\u003e chore: updates for v9.39.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/5cd1604cea5734bc235155a1a1add9f08ae83370\"\u003e\u003ccode\u003e5cd1604\u003c/code\u003e\u003c/a\u003e refactor: simplify isCombiningCharacter helper (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20524\"\u003e#20524\u003c/a\u003e)\u003c/li\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\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eslint/eslint/commit/70ff1d07a8e7eba9e70b67ea55fcf2e47cdc9b2d\"\u003e\u003ccode\u003e70ff1d0\u003c/code\u003e\u003c/a\u003e chore: eslint-config-eslint require Node \u003ccode\u003e^20.19.0 || ^22.13.0 || \u0026gt;=24\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/eslint/eslint/issues/20586\"\u003e#20586\u003c/a\u003e)\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)\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)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eslint/eslint/compare/v9.39.3...v10.0.3\"\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/SAP/STARS/pull/227","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAP%2FSTARS/issues/227","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/227/packages"}}]}